IL SEMBLE QUE VOUS UTILISEZ ADBLOC POUR BLOQUER LA PUBLICITÉ, AUCUNE PUB INTRUSIVE SUR FDZ ET PAS DE POPUP
FDZ EST GRATUIT DONC MERCI DE DÉSACTIVER VOTRE ADBLOCK ET DE BIEN VOULOIR PARTICIPER ET JOUER LE JEU


PAR SUITE D'ABUS LES SERVEURS CCCAM ET ABONNEMENT NE SONT PAS TOLÉRÉS SUR LE FORUM

Affichage des résultats 1 à 10 sur 10
Share |

Discussion: TUTO: Créer un système GNU/Linux MINIMAL à partir de ZERO.

  1. #1
    Date d'inscription
    août 2009
    Localisation
    w de ghardaia
    Messages
    53
    Remerciements
    2
    Remercié 2 fois dans 1 message
    Pouvoir de réputation
    9

    Par défaut TUTO: Créer un système GNU/Linux MINIMAL à partir de ZERO.


    Bonjour les forumdziens,

    " La curiosité n'est pas un vilain défaut". Avec cette expression finit le présentateur d'une émission scientifique sur La5 chaque épisode.
    Alors si vous êtes trop curieux comme moi, c'est votre jour de chance.

    /************************************************** ************************************************** ************************************
    Linux est une très belle histoire qui commence en 1991 dans la chambre universitaire d'un étudiant Finlandais "Linus Torvalds"et finit dans votre Set Top Boxe (démo satellite), votre modem-routeur ou même dans votre lave linge !!!
    ************************************************** ************************************************** *************************************/

    OBJECTIF:

    Nous allons voir comment créer "from scratch" (à partir de ZERO , en fait à partir du code source) un système Linux minimal (vraiment basique de chez basique, mais qui peut servire de base pour une distrib bien aboutie (voir la section: TO DO)) et le "booter" à partir d'une clef USB (flash disk).

    Les composantes d'un system GNU/linux:

    En réalité Linux n'est que le noyau, le system total on l'appel GNU/linux (GNU c'est le projet des logiciels libres).

    1- Le chargeur (bootloader): une sorte de démarreur .
    2- Le noyau Linux (kernel): le moteur ou le coeur du systeme.
    3- Le systeme des fichiers (root file system): les applications et fichiers de configuration. Si on continue dans la logique d'analogie avec un véhicule
    ça représente : le volant, l'accélerateur, les freins..... tout qui affecte l'état du vehicule en mouvement koi.

    Le "boot process": comment démarre votre PC sous Linux?

    Après la mise sous tension d'un ordinateur de type PC, le processeur commence à exécuter le BIOS (Basic In/out System), un programme sauvegardé dans la ROM qui a pour rôle d'initialiser les différents circuit électroniques (controlleur d'interruptions PIC, circuit d'accèss direct à la mémoire DMA, ports d'ntrées/sorties PIA...etc) puis il charge le premier secteur du disque dur (MBR) ds la RAM à l'adresse 0000:7C00 et verifie si le disque est bootable (signature AA55 à la fin du 512 octets), si oui le bios passe la main au MBR.
    Le MBR contient un code pour aller chercher un programme (le bootloader dans notre cas) dans la tables des fichiers FAT et le charge en mémoire puis il lui passe la main. Le bootloader de son coté va chercher le noyau et le charger en RAM et puis il lui passe la main. Enfin le noyau s'auto décompresse, initialise la carte mère ... et enfin aller exécuter un fichier INIT qui se trouve sur le systeme de fichier (espace utilisateur: user space).
    INIT comme son nom l'indique initialise le system et passe la main à un autre programme comme le Shell (où en saisie les commandes).

    /************************************************** ************************************************** *************
    On aura peut être l'occasion de voir un peu plus en détail l'architecture du noyau et son processus de boot.
    ************************************************** ************************************************** **************/

    I) Préparer l'environnement de développement:

    N.B: J'utilise une distribution basé sur UBUNTU, c'est presque la même démarche si vous avez autre chose.

    On commence par ouvrir un terminal, soit un emulateur graphique soit un VRAI (si vous êtes un linuxien pur et dur !)

    1- Installer les outils suivants:
    build-essential, wget, make, kernel-package, libncurses5-dev.

    Code:
    sudo apt-get install build-essential libncurses5-dev wget kernel-package
    entrer votre mot de pass puis valider

    2- Créer un répertoire de travail, par exemple: MINI ds votre HOME (~):

    Code:
        ~$ mkdir MINI
        ~$ cd MINI
    3- télécharger les sources suivants:
    - noyau linux Vanilla (qui ne contient aucun patch) à partir du site officiel www.kernel.org. Pour ma part j'ai utilisé un noyau 2.6.24.3.

    Code:
     [MINI]$ wget .........(mettre ici l'url de l'archive à télécharger)
    - les sources de Busybox à partir du site http://www.busybox.net:

    Code:
     [MINI]$ wget .........(mettre ici l'url de l'archive à télécharger)
    4- Décompresser les sources:

    Code:
         [MINI]$ tar xvjf linux-X.Y.Z.tar.bz2
         [MINI]$ tar xvjf busybox-X.Y.Z.tar.bz2
    5- Renommer le dossier linux-X.Y.Z en Linux
    et le dossier busybox-X.X.Z en busybox.

    Code:
        [MINI]$ mv linux-X.Y.Z linux
        [MINI]$ mv busybox-X.X.Z busybox
    Bien sûr vous pouvez faire les étapes 3, 4 et 5 en mode graphique.

    II)Le noyau:

    1- Configuration:

    Code:
        [MINI]$ cd linux      
     
        [linux]$ make menuconfig
    un menu semi graphique s'ouvre comme sur la photo (s'il ya un probleme agrandissez la fenetre du terminal):

    La navigation dans cette interface est simple :

    Flèches haut/bas pour monter/descendre
    Entrée pour entrer dans les sous-menus
    Échappement deux fois pour sortir d'un sous-menu
    h pour demander l'aide d'une option
    Oblique "/" pour rechercher une option
    Espace pour sélectionner une option


    On touche à rien, on va juste activer les deux options "ELF support" et "Initial RAM file system support" :

    General setup —>
    Initial RAM filesystem and RAM disk (initramfs/initrd) support (on verra ça tout à l'heure).

    Executable file formats / Emulations —>
    Kernel support for ELF binaries


    2- Compilation:

    Code:
      [linux]$ make
    Aller faire des courses, boir un café ... car la compilation prend du temps (ça dépend de la configuration de votre ordi).
    voilà ! Enfin, notre noyau est dans ~/MINI/linux/arch/x86/boot/ elle se nomme bzImage. Laisson le se reposer pour le moment !!

    II) Le système des fichiers:

    On va créer un initrd (INITial Ram Disk) qui est un systeme de fichiers compressé, il sera monté dans la RAM (voir la section références en bas).


    1- Créer un repertoire rootfs:

    Code:
        [MINI]$ cd ..
         [MINI]$ mkdir rootfs
    2-Compiler busybox:
    BusyBox, est le couteau suisse du GNU/Linux, c'est un unique programme qui combine un grand nombre d'utilitaires systèmes en les réunissant en un seul exécutable. BusyBox intègre les commandes Unix de base (ls, cd, cp....) entre autres, ainsi qu'un shell (ash), un serveur HTTP, un serveur FTP et bien d'autres. Chaque commande est un lien symbolique vers l'exécutable busybox. (voir la section références en bas).

    - Mettez-vous ds le répertoir des sources busybox:

    Code:
      [MINI]$ cd busybox
    - Créer le fichier de configuration (.config):

    Code:
      [busybox]$ make defconfig
    - On va modifier (choisir) la configuration:

    Code:
    [busybox]$ make menuconfig
    un menu semi graphique emblable à celui du noyau s'ouvre:

    - On va choisir le mode "STATIC" ( un exécutable qui n'a pas besoin d'acune librairie ):

    Busybox Settings —>
    Build Options —>
    Build BusyBox as a static binary (no shared libs)=y

    - Puis la compilation:

    Code:
     [busybox]$ make
    - Enfin l'installation de busybox dans notre rootfs:

    Code:
    [busybox]$ sudo make CONFIG_PREFIX=~/MINI/rootfs install
    Aller jetter un coup d'oeuil dans le répertoir rootfs pour voir les dossier crées et leurs contenus.
    Dans le dossier bin par exemple on trouve pleins de liens symboliques qui portent les noms des commands usuels et qui pontent tous vers l'exécutable "busybox".

    3- Peupler le rootfs:

    Nous avons déjà dans notre rootfs quelques dossiers essentiels crées lors de l'installation de busybox il suffit d'ajouter quelques autres.

    Code:
    [busybox]$ cd ~/MINI/rootfs
    - crééer les répértoirs style Unix:

    Code:
     [rootfs]$ mkdir dev proc sys tmp
    - supprimer le fichier "linuxrc" crée lors de l'installation de busybox:

    Code:
    [rootfs]$ rm linuxrc
    - Créer les noeuds:

    Code:
    [rootfs]$ sudo mknod dev/console c 5 1
    - Créer le fichier "init" nécessaire pour le boot:

    Code:
        [rootfs]$ cat >> init << EOF   
        #!/bin/sh
        echo =======================
        echo
        echo 1 2 3 VIVA L'ALGERIE
        echo
        echo =======================
        mount -t proc none /proc
        mount -t sysfs none /sys
        /bin/sh
        EOF
    - Rendre le fichier init exécutable:

    Code:
     [rootfs]$ sudo chmod +x init
    - Compresser le rootfs:

    Code:
     [rootfs]$ sudo find . | cpio -H newc -o | gzip -9 > ~/MINI/rootfs.gz
    l'initrd "rootfs.gz" compressé est dans ~/MINI .

    III) Préparer la clé USB et Installer le bootloader:

    Personellement j'ai réalisé cette étape sur "WINDOBE" !!!!!!
    Je sens des grincements des dents de certains parmi vous, je m'excuse. On verra peut être comment faire ça sur linux plus tard.

    1- Copier les fichiers "bzImage" et "rootfs.gz" dans un répertoire accessible par windobe.
    2- Télécharger le bootloader syslinux ici: http://www.kernel.org/pub/linux/util...linux-3.83.zip .
    3- Décompresser l'archive dans un dossier sur la racine C: on va dire SYSLINUX, dedans il va y avoir un répertoire WIN32.
    4- Mettre la clef USB et repérer le lecteur, on va dire F.
    5- Formater la clef en FAT32.
    6- Y copier les fichiers "bzImage" et "rootfs.gz".
    7- Lancer une commande MSDOS et tape ceci :
    Code:
        C:
        CD \SYSLINUX\WIN32         (ca doit vous placer dans le répertoire WIN32)
    
        syslinux.exe -m -a F:      ( remplacer F: par la lettre que vous avez réperé en 4)
    après cette commande le MBR sera changé et un fichier caché LDLINUX.SYS qui est notre bootloader est crée sur la clef.
    votre clef est BOOTABLE !!
    8- Créer le fichier de configuration pour le bootloader:

    avec NOTEPAD (surtout PAS word) créer un fichier texte "syslinux.cfg". Voici son contenu:

    Code:
        label FORUMDZ
        kernel bzImage
        append initrd=rootfs.gz
    
        default FORUMDZ
    
        implicit 0    
        prompt 1    
        timeout 10
    /*------------------------------------------------------------------------------------------------

    NOTE: SYSLINUX searches for the SYSLINUX.CFG file in the following order:

    /boot/syslinux/syslinux.cfg
    /syslinux/syslinux.cfg
    /syslinux.cfg
    -----------------------------------------------------------------------------------------------*/

    Voilà c'est tout OUUUUUUUUUFFFFFF !!!!!





    IV) ENJOY !

    - Redémarrer votre PC (la clef USB dedans).
    - Entrer dans le setup et changer l'ordre du boot: mettre USB en premier bien sûr.
    - F10 puis valider.

    Après un reboot un message de syslinux s'écrit sur l'écran:
    boot: ( ne toucher à rien)
    loading bzImage ..........
    loading rootfs...........

    après les messages du kernel (qui s'afficent très vite) on vers la fin notre message:

    ==========================

    1 2 3 VIVA L'ALGERIE

    ===========================

    puis un curseur qui clignote.

    entrer "ls" puis valider .....





    TO DO:

    - Booter sur un vrai systeme de fichier dans la clé USB soit indirectement en passant par l'initrd et en PIVOT_ROOTant, soit directement, dans ce cas il faut un "dealy" pour permetre au noyau de détecter la clef.
    J'ai pas réussi les deux méthodes (pour le moment). Si quelqu'un peux m'aider ça sera très sympa.
    - Ajouter un serveur XORG pour travailler dans un environnement graphique.
    - Ajouter d'autres applications et fichiers de configuration.
    - .............

    Références:

    http://wiki.linux-france.org/wiki/Le...tales_de_Linux
    http://doc.ubuntu-fr.org/tutoriel/compiler_linux
    https://www.ibm.com/developerworks/library/l-initrd/
    http://fr.wikipedia.org/wiki/BusyBox
    http://www.syslinux.org/wiki/index.php/SYSLINUX



    Images attachées Images attachées
    Dernière modification par DELTA47 ; 14/04/2014 à 12h39.

  2. Les 2 membres suivants remercient DELTA47 pour ce message :

    angelius (15/04/2014),iris_angel (14/04/2014)

  3. #2
    Date d'inscription
    février 2009
    Localisation
    California
    Messages
    2 568
    Remerciements
    38
    Remercié 53 fois dans 39 messages
    Pouvoir de réputation
    13

    Par défaut Re : TUTO: Créer un système GNU/Linux MINIMAL à partir de ZERO.

    Énorme travail merci, je me garde ca sous le coude au cas ou un jour j'aurai le temps.

  4. #3
    Date d'inscription
    août 2009
    Localisation
    w de ghardaia
    Messages
    53
    Remerciements
    2
    Remercié 2 fois dans 1 message
    Pouvoir de réputation
    9

    Par défaut Re : TUTO: Créer un système GNU/Linux MINIMAL à partir de ZERO.

    Cliquer ici pour agrandir Envoyé par alirobben Cliquer ici pour agrandir
    Énorme travail merci, je me garde ca sous le coude au cas ou un jour j'aurai le temps.
    De rien mon cher.
    J'aimerais bien que d'autres personnes chaqu'un ajoute son brique pour arriver à une vraie distribution.
    Pkoi pas? Rien n'est impossible.

  5. #4
    Date d'inscription
    novembre 2008
    Messages
    272
    Remerciements
    3
    Remercié 16 fois dans 16 messages
    Pouvoir de réputation
    0

    Par défaut Re : TUTO: Créer un système GNU/Linux MINIMAL à partir de ZERO.

    Pourquoi ne pas la mettre sur DistroWatch.. Sympa d'avoir Algérie comme origine de la distro...

  6. #5
    Date d'inscription
    janvier 2008
    Localisation
    Ile-de-France
    Messages
    8 070
    Remerciements
    275
    Remercié 417 fois dans 209 messages
    Pouvoir de réputation
    10

    Par défaut Re : TUTO: Créer un système GNU/Linux MINIMAL à partir de ZERO.

    Merci pour le post,

    J'ai un raspberry avec Raspberry OS, je vais peut être me pencher sur le sujet pour avoir un truc plus léger Cliquer ici pour agrandir

    Core i7 6700K@
    4Ghz - Noctua NH-U9S
    - Asus Z170-PRO GAMING - DDR4 G.Skill Ripjaws 4 x 8 Go @2800Mhz - KFA2 GTX 980 Ti OC Black Edition 6Go - Toshiba P300 1 To & Sandisk SSD 240 Go - Corsair Vengeance C70 - LEPA MaxBron 650W - LG GH22NS90 - Logitech G710+ & Corsair Gaming M65 - Creative Chat HD 720p - Liyama Prolite GB2488HSU
    متل الرجل الذي يبيع السمك في البحر من امامكم و العدو من وراء كل رجل عظيم امرأة
    -------


    Cliquer ici pour agrandir


  7. #6
    Date d'inscription
    août 2009
    Localisation
    w de ghardaia
    Messages
    53
    Remerciements
    2
    Remercié 2 fois dans 1 message
    Pouvoir de réputation
    9

    Par défaut Re : TUTO: Créer un système GNU/Linux MINIMAL à partir de ZERO.

    Cliquer ici pour agrandir Envoyé par Anonyme Cliquer ici pour agrandir
    Pourquoi ne pas la mettre sur DistroWatch.. Sympa d'avoir Algérie comme origine de la distro...
    ki izid we n'semmouh es'id !!

    " kan il sera né on le nomme Said"

  8. #7
    Date d'inscription
    août 2009
    Localisation
    w de ghardaia
    Messages
    53
    Remerciements
    2
    Remercié 2 fois dans 1 message
    Pouvoir de réputation
    9

    Par défaut Re : TUTO: Créer un système GNU/Linux MINIMAL à partir de ZERO.

    Cliquer ici pour agrandir Envoyé par mouradski Cliquer ici pour agrandir
    Merci pour le post,

    J'ai un raspberry avec Raspberry OS, je vais peut être me pencher sur le sujet pour avoir un truc plus léger Cliquer ici pour agrandir
    Tu veux dire Rasbian OS?
    Va voir coté Arch linux, il y a une distrib très légère pour le PI.

  9. #8
    Date d'inscription
    novembre 2013
    Messages
    100
    Remerciements
    11
    Remercié 48 fois dans 34 messages
    Pouvoir de réputation
    5

    Par défaut Re : TUTO: Créer un système GNU/Linux MINIMAL à partir de ZERO.

    Cliquer ici pour agrandir Envoyé par Anonyme Cliquer ici pour agrandir
    Pourquoi ne pas la mettre sur DistroWatch.. Sympa d'avoir Algérie comme origine de la distro...
    Ça existait a un moment mais c'est un rêve qui s'est éteint, ça serai génial de commencer une nouvelle aventure ici

    Source : http://distrowatch.com/table.php?distribution=bee

  10. #9
    Date d'inscription
    août 2009
    Localisation
    w de ghardaia
    Messages
    53
    Remerciements
    2
    Remercié 2 fois dans 1 message
    Pouvoir de réputation
    9

    Par défaut Re : TUTO: Créer un système GNU/Linux MINIMAL à partir de ZERO.

    Cliquer ici pour agrandir Envoyé par c00ler Cliquer ici pour agrandir
    Ça existait a un moment mais c'est un rêve qui s'est éteint, ça serai génial de commencer une nouvelle aventure ici

    Source : http://distrowatch.com/table.php?distribution=bee
    Symba le p'tit abeille BEE !!
    Vraiment dommage que ce soit "discontinued".

  11. #10
    Date d'inscription
    novembre 2008
    Messages
    272
    Remerciements
    3
    Remercié 16 fois dans 16 messages
    Pouvoir de réputation
    0

    Par défaut Re : TUTO: Créer un système GNU/Linux MINIMAL à partir de ZERO.

    Dommage que Bee soit discontinu...

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •  
[Auto utilitaire DZ] [Webimag] [Algérie Info] [Guide Algérie] [Mosquée ALBADR MEAUX] [Photographe MARIAGE]

is PageRank Checking Icon