Linux from scratch

Salut à tous ;)

Je m'intéresse à LFS car je voudrais bien créer mon système Linux entièrement personnalisé.

Je me posais quelques questions avant de me lancer dans l'aventure...

LFS est ce le bon chemin pour au bout du compte:

-Avoir le tout dernier noyaux 2.6.30.4
-Avec uniquement les dernières versions de mes logiciels favoris
-Choisir mon gestionnaire de logiciels favoris entre Dpkg,Yum,Pacman et autres
-Avoir un système stable avec le stricte nécessaire

Ne serais ce pas identique de démarrer sur une image Arch ou Debian minimale et d'y compiler le dernier noyaux
ainsi que les derniers logiciels?

Le PDF que j'ai commencé à lire est très fascinant :)

Merci pour vos lumières.

--
If you want to go quickly, go alone. If you want to go far, go together.

67 réponses

Résumé de la discussion

Le débat porte sur Linux From Scratch (LFS) comme méthode pour créer un système Linux totalement personnalisé, avec des questions sur l’obtention du tout dernier noyau et l’intégration des logiciels récents. Des échanges comparent LFS à démarrer à partir d’une image minimale Arch ou Debian et d’y compiler les dernières versions, tout en visant la stabilité et une gestion logicielle adaptée. En pratique, les retours évoquent une courbe d'apprentissage prononcée et une gestion des mises à jour délicate, ce qui peut dissuader ceux qui cherchent simplicité tout en offrant une maîtrise avancée.

Bobot (l’IA à votre service)
  1. Modérateur
    Re,

    Et lorsqu'on a initramfs-tools à disposition, tout devient plus simple pour finaliser, merci ;)
    T'as déjà pensé de voir ce que contient cette image initrd créée par initramfs-tools?

    Tu peux faire comme ça par exemple
    $ cd
    $ mkdir initrd.img-$(uname -r)
    $ cd initrd.img-2.6.26-2-686/
    $ cp -v /boot/initrd.img-$(uname -r) .
    `/boot/initrd.img-2.6.26-2-686' -> `./initrd.img-2.6.26-2-686'
    $ ls
    initrd.img-2.6.26-2-686
    $ gunzip -c initrd.img-2.6.26-2-686 | cpio -id
    33764 blocks
    $ ls
    bin  conf  etc  init  initrd.img-2.6.26-2-686  lib  sbin  scripts  usr

    1. J'essayerai, merci :)

      En fait je me suis baladé dans celle que j'avais créer (de travers) lorsque mon boot LFS s'était arrêté à
      ramfs$

      De la j'ai un peu exploré et j'ai compris qu'il s'agissait d'un mini système ne comportant que très peu de logiciels
      dans /sbin

      Le décompresser sur mon bureau me montrera peut être ce qu'il lui manquait pour réussir, en tout cas j'avais trop bidouillé.... :)
  2. Modérateur
    Salut,

    j'abandonne le projet momentanément, je reprendrai avec LFS 6.5 ;)
    Pas de problème, il ne faut pas être pressé.
    Peut être tu devrais t'exercer un peu plus avec la compilation de kernel et pourquoi pas apprendre construire un INITialRamDisk from scratch ;-)
    1. Salut lami20j :)

      Effectivement, le noyau 2.6.30.4 ne démarre pas aussi facilement qu'on pourrait le croire.

      La compilation de 2.6.30.5 sur Debian Lenny a été un jeu d'enfant grâce à ce topic:
      https://forums.commentcamarche.net/forum/affich-13756337-compilation-nouvau-kernel-et-patch-temp-reel?page=5#102
      Et lorsqu'on a initramfs-tools à disposition, tout devient plus simple pour finaliser, merci ;)

      Mon nouveau noyau fonctionne à merveille sur Debian et désormais les partitions EXT4 sont lues et écrites out ze box, la connexion avec DHCP au boot est cinq fois plus rapide, dommage que le mode écriture sur UFS soit toujours aussi dangereux et expérimental.Je dois juste passer de Fglrx à RadeonHD pour mon ATI.

      Encore une fois mille merci pour les bons conseils donnés tout au long de l'expérience ;)))

      Je ne met pas en résolu, vu qu'elle n'a pas démarré, mais je le ferait bien rien que pour la culture prise au passage :)

      @+
  3. Salut ;)

    Bon, j'abandonne le projet momentanément, je reprendrai avec LFS 6.5 ;)

    Comme l'a souligné lami20j je n'ai rien perdu, j'ai appris au passage.

    Grâce à cette expérience, par exemple sur ma Debian, désormais c'est:

    alexis:/home/initials# uname -r
    2.6.30.5


    Et j'ai aussi pu constaté toute l'importance de GNU, et de leurs logiciels.

    Merci à tous et bonne nuit ;)
    1. Modérateur
      Salut,

      Il faut installer busybox sur ton LFS et il faut le compiler en statique
      Build Options  --->
      		[*] Build BusyBox as a static binary (no shared libs)


      Voici ce que j'ai trouvé, c'est un peu plus simple ;-)
      http://www.gentoofr.org/Initramfs.html

      Tu peux aussi laisser tomber initrd et compiler en dur les options nécessaires pour que le système démarre, ex3, PCI, USB, etc
      1. Salut lami20j ;)

        Ok je m'y colle, je te fais part des résultats dès que c'est fait.

        Merci :)
    2. Salut ;)

      Oki doki, je pense que maintenant il ne manque plus qu'a générer un initrd.img et le tour est joué :)

      Comment puis-je exécuter le script donné? ^^

      Merci ;)
      1. Modérateur
        Re,

        Affiche
        grep BLK_DEV_INIT /usr/src/linux-2.6.29-ARCH/.config
        P.S. Je vais quitter. A demain ;-)
        1. Re,

          voila:
          [initials@Basile /]$ grep BLK_DEV_INIT /usr/src/linux-2.6.29-ARCH/.config
          CONFIG_BLK_DEV_INITRD=y


          edit: Merci à demain ;)
      2. Modérateur
        Re,

        Tu n'as pas affiché ce que je t'ai demandé.
        ls -l /boot

        Ben, il ne fallait pas utiliser le fichier depuis le lien.
        1. [initials@Basile /]$ ls -l /boot
          total 8376
          -rw-r--r-- 1 root root  861165 2009-05-09 14:51 System.map26
          drwxr-xr-x 2 root root    4096 2009-08-16 21:48 grub
          -rw-r--r-- 1 root root 5267486 2009-05-18 22:32 kernel26-fallback.img
          -rw-r--r-- 1 root root  529374 2009-05-18 22:30 kernel26.img
          -rw-r--r-- 1 root root 1879056 2009-05-09 14:51 vmlinuz26


          Non en fait j'ai trouvé le fichier de configuration de mon 2.6.29-ARCH du système hôte :)

          En fouillant dans usr/src/linux-2.6.29-ARCH/

          Le lien que j'ai donné étais celui expliquant les étapes de configuration ;)

      3. Modérateur
        Re,

        Tu as utilisé le fichier .config-$(uname -r) de ton ARCH pour la configuration de noyau LFS ?
        1. Re ;)

          ".config-$(uname -r) de Arch "

          Je ne sais pas si il est disponible :S (ni ou le chercher)
          J'ai fait une configuration depuis zéro en suivant la documentation du lien plus haut.
      4. Modérateur
        Re,

        parce que j'ai pris un kernel 2.6.30.4,
        J'ai croyais que tu as changé ;-)

        # CONFIG_BLK_DEV_INITRD is not set
        Donc chez toi il ne s'agit pas de initrd, puisqu'il n'est pas configuré dans le kernel.
        1. Salut lami20j ;)

          Merci pour toutes ces précisions, et la perspective d'un LFS 6.5 avec un kernel 2.6.30.2.
          Et aussi merci pour la wget list ;)

          Je ne vais pas abandonner 6.4....Il doit y avoir un détail qui m'échappe.

          Ce n'est pas possible que LFS ne démarre pas seulement parce que j'ai pris un kernel 2.6.30.4,
          Je suis en pleine torture et j'ai essayer dans tous les sens.

          La dernière qui me vient à l'esprit : peupler /dev avec
          udevadm trigger

          ou
          udevtrigger


          Qui va créer tous les nœuds périphériques dans /dev et ensuite utiliser l'UUID pour monter la partition,
          c'est ma dernière chance :(

          Et encore merci pour l'aide depuis le début :))
          1. Modérateur
            Re,

            Si ça t'intéresse de télécharger les paquets pour lfs 6.5 voici le wget_liste https://www.cjoint.com/?isuh3vVtzo
            Tu mets le fichiers dans un répertoire et tu lances la commande
            cd /chemin/vers/repertoire/ou/se/trouve/lfs6.5_wget_liste.txt
            for l in $(cat lfs6.5_wget_liste.txt);do wget $l;done
            Comme ça tu vas télécharger d'un coup tous les paquets plus les patch

            P.S. Si tu veux finir la 6.4 pour la démarrer ça ne sera pas mal non plus ;-) comme ça tu n'auras pas le même problème avec 6.5
            1. Modérateur
              Re,

              Je vais te donner une bonne et une mauvaise nouvelle.

              La mauvaise, tu vas recommencer, donc tu peux supprimer tout ;-)))
              La bonne

              Les nouvelles
              Sortie de LFS-6.5 - 17/08/2009
              L'équipe anglophone de Linux From Scratch est heureuse d'annoncer la sortie de LFS version 6.5. Cette version comprend de nombreuses modifications par rapport à LFS-6.4 (notamment des mises à jour vers Linux-2.6.30.2, GCC-4.4.1 et Glibc-2.10.1) et des corrections de sécurité. Elle inclut également un travail éditorial sur les explications de fond contenues dans le livre, améliorant tant la clarté que le soin apporté au texte.

              Elle n'est pas encore dispo en pdf, seulement en html pour le moment.
              Perso tu n'as rien perdu, l'expérience acquise te servira pour la version 6.5 ;-)

              P.S Et quand tu penses que la dernière version stable de kernel est 2.6.30.5 ;-)

              1. Modérateur
                Re,

                Non.
                Peut être que tu devras essayer de créer une image initrd.
                Entre dans l'environnement chrooté de ton LFS, n'oubie pas de monté et peuplé dev ainsi les sytèmes de fichiers virtuel de noyau.

                Dit quand c'est fait.
                1. Salut lami20j ;)

                  Je dois quitter pour le moment, et je devrais installer initrd-tool aussi sur LFS.

                  @+ ;))

                  Et encore merci :)
              2. Modérateur
                Re,

                Peut être.
                Fait un
                grep CONFIG_BLK_DEV_INITRD /media/LFS/cheminvers/linux-2.6.30.4/.config
                1. Bonjour lami20j ;)

                  Je ne sais pas si je devais lancer grep depuis le système hôte? :
                  [root@Basile ~]# grep CONFIG_BLK_DEV_INITRD /media/LFS/sources/linux-2.6.30.4/.config
                  # CONFIG_BLK_DEV_INITRD is not set


                  Ce qui est intéressant, et que j'ai remarqué, c'est qu'au boot de ma Arch il y a ce message:

                  loading root fs module: ext3
                  

                  Donc, le kernel peut booter et charger le module du système racine....
                  Hors dans la documentation sur la configuration de kernel, il est plutôt déconseiller de faire le choix de "module" en ce qui concerne le système de fichier de la racine et de plutôt choisir de l'intégrer au kernel.

                  Peut être est ce que je peux essayer de l'installer en module? en relançant 'make oldconfig' pour reprendre la configuration dernière?

                  Merci ;)
              3. Re,

                il y a un mieux :)

                Mais ça bloque toujours à root fs

                J'ai bien activé le support pour ext3, je crois que je vais avoir besoin en plus d'un initrd.img

                1. Modérateur
                  Re,

                  je ne le trouve pas
                  C'est normal puisqu'il s'agit d'un fichier caché donc son nom doit être .config

                  ls -al pour voir les fichiers cachés ;-))
                  1. Oki doki, mais maintenant le 'make' est fait :S

                    Je colle le contenu qui se trouve dans /boot

                    Mais je vais devoir le copier dans un fichier texte, car il est trop gros pour le terminal.

                    Cette section ci?:
                    # File systems
                    #
                    CONFIG_EXT2_FS=y
                    CONFIG_EXT2_FS_XATTR=y
                    CONFIG_EXT2_FS_POSIX_ACL=y
                    CONFIG_EXT2_FS_SECURITY=y
                    CONFIG_EXT2_FS_XIP=y
                    CONFIG_EXT3_FS=y
                    CONFIG_EXT3_DEFAULTS_TO_ORDERED=y
                    CONFIG_EXT3_FS_XATTR=y
                    CONFIG_EXT3_FS_POSIX_ACL=y
                    CONFIG_EXT3_FS_SECURITY=y
                    CONFIG_EXT4_FS=y
                    CONFIG_EXT4DEV_COMPAT=y
                    CONFIG_EXT4_FS_XATTR=y
                    CONFIG_EXT4_FS_POSIX_ACL=y
                    CONFIG_EXT4_FS_SECURITY=y
                    CONFIG_FS_XIP=y
                    CONFIG_JBD=y
                    CONFIG_JBD_DEBUG=y
                    CONFIG_JBD2=y
                    CONFIG_JBD2_DEBUG=y
                    CONFIG_FS_MBCACHE=y
                    CONFIG_REISERFS_FS=y
                    CONFIG_REISERFS_CHECK=y
                    CONFIG_REISERFS_PROC_INFO=y
                    CONFIG_REISERFS_FS_XATTR=y
                    CONFIG_REISERFS_FS_POSIX_ACL=y
                    CONFIG_REISERFS_FS_SECURITY=y
                    CONFIG_JFS_FS=y
                    CONFIG_JFS_POSIX_ACL=y
                    CONFIG_JFS_SECURITY=y
                    CONFIG_JFS_DEBUG=y
                    CONFIG_JFS_STATISTICS=y
                    CONFIG_FS_POSIX_ACL=y
                    CONFIG_XFS_FS=y
                    CONFIG_XFS_QUOTA=y
                    CONFIG_XFS_POSIX_ACL=y
                    CONFIG_XFS_RT=y
                    CONFIG_XFS_DEBUG=y
                    # CONFIG_GFS2_FS is not set
                    # CONFIG_OCFS2_FS is not set
                    # CONFIG_BTRFS_FS is not set
                    CONFIG_FILE_LOCKING=y
                    CONFIG_DNOTIFY=y
                    CONFIG_INOTIFY=y
                    CONFIG_INOTIFY_USER=y
                    CONFIG_QUOTA=y
                    CONFIG_QUOTA_NETLINK_INTERFACE=y
                    # CONFIG_PRINT_QUOTA_WARNING is not set
                    CONFIG_QUOTA_TREE=y
                    CONFIG_QFMT_V1=y
                    CONFIG_QFMT_V2=y
                    CONFIG_QUOTACTL=y
                    CONFIG_AUTOFS_FS=y
                    CONFIG_AUTOFS4_FS=y
                    CONFIG_FUSE_FS=y
                    CONFIG_GENERIC_ACL=y
                    
                    #
                    # Caches
                    #
                    CONFIG_FSCACHE=y
                    CONFIG_FSCACHE_STATS=y
                    CONFIG_FSCACHE_HISTOGRAM=y
                    CONFIG_FSCACHE_DEBUG=y
                    CONFIG_CACHEFILES=y
                    CONFIG_CACHEFILES_DEBUG=y
                    CONFIG_CACHEFILES_HISTOGRAM=y
                    
                    #
                    # CD-ROM/DVD Filesystems
                    #
                    CONFIG_ISO9660_FS=y
                    CONFIG_JOLIET=y
                    CONFIG_ZISOFS=y
                    CONFIG_UDF_FS=y
                    CONFIG_UDF_NLS=y
                    
                    #
                    # DOS/FAT/NT Filesystems
                    #
                    CONFIG_FAT_FS=y
                    CONFIG_MSDOS_FS=y
                    CONFIG_VFAT_FS=y
                    CONFIG_FAT_DEFAULT_CODEPAGE=437
                    CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
                    CONFIG_NTFS_FS=y
                    CONFIG_NTFS_DEBUG=y
                    CONFIG_NTFS_RW=y
                    
                    #
                    # Pseudo filesystems
                    #
                    CONFIG_PROC_FS=y
                    CONFIG_PROC_KCORE=y
                    CONFIG_PROC_VMCORE=y
                    CONFIG_PROC_SYSCTL=y
                    CONFIG_PROC_PAGE_MONITOR=y
                    CONFIG_SYSFS=y
                    CONFIG_TMPFS=y
                    CONFIG_TMPFS_POSIX_ACL=y
                    CONFIG_HUGETLBFS=y
                    CONFIG_HUGETLB_PAGE=y
                    CONFIG_CONFIGFS_FS=y
                    CONFIG_MISC_FILESYSTEMS=y
                    # CONFIG_ADFS_FS is not set
                    # CONFIG_AFFS_FS is not set
                    # CONFIG_ECRYPT_FS is not set
                    # CONFIG_HFS_FS is not set
                    # CONFIG_HFSPLUS_FS is not set
                    # CONFIG_BEFS_FS is not set
                    # CONFIG_BFS_FS is not set
                    # CONFIG_EFS_FS is not set
                    # CONFIG_JFFS2_FS is not set
                    # CONFIG_CRAMFS is not set
                    # CONFIG_SQUASHFS is not set
                    # CONFIG_VXFS_FS is not set
                    # CONFIG_MINIX_FS is not set
                    # CONFIG_OMFS_FS is not set
                    # CONFIG_HPFS_FS is not set
                    # CONFIG_QNX4FS_FS is not set
                    # CONFIG_ROMFS_FS is not set
                    # CONFIG_SYSV_FS is not set
                    CONFIG_UFS_FS=y
                    CONFIG_UFS_FS_WRITE=y
                    CONFIG_UFS_DEBUG=y
                    # CONFIG_NILFS2_FS is not set
                    CONFIG_NETWORK_FILESYSTEMS=y
                    CONFIG_NFS_FS=y
                    CONFIG_NFS_V3=y
                    CONFIG_NFS_V3_ACL=y
                    CONFIG_NFS_V4=y
                    CONFIG_ROOT_NFS=y
                    CONFIG_NFS_FSCACHE=y
                    CONFIG_NFSD=y
                    CONFIG_NFSD_V2_ACL=y
                    CONFIG_NFSD_V3=y
                    CONFIG_NFSD_V3_ACL=y
                    CONFIG_NFSD_V4=y
                    CONFIG_LOCKD=y
                    CONFIG_LOCKD_V4=y
                    CONFIG_EXPORTFS=y
                    CONFIG_NFS_ACL_SUPPORT=y
                    CONFIG_NFS_COMMON=y
                    CONFIG_SUNRPC=y
                    CONFIG_SUNRPC_GSS=y
                    CONFIG_RPCSEC_GSS_KRB5=y
                    CONFIG_RPCSEC_GSS_SPKM3=y
                    CONFIG_SMB_FS=y
                    CONFIG_SMB_NLS_DEFAULT=y
                    CONFIG_SMB_NLS_REMOTE="cp437"
                    CONFIG_CIFS=y
                    CONFIG_CIFS_STATS=y
                    CONFIG_CIFS_STATS2=y
                    CONFIG_CIFS_WEAK_PW_HASH=y
                    CONFIG_CIFS_UPCALL=y
                    CONFIG_CIFS_XATTR=y
                    CONFIG_CIFS_POSIX=y
                    CONFIG_CIFS_DEBUG2=y
                    CONFIG_CIFS_DFS_UPCALL=y
                    CONFIG_CIFS_EXPERIMENTAL=y
                    CONFIG_NCP_FS=y
                    CONFIG_NCPFS_PACKET_SIGNING=y
                    CONFIG_NCPFS_IOCTL_LOCKING=y
                    CONFIG_NCPFS_STRONG=y
                    CONFIG_NCPFS_NFS_NS=y
                    CONFIG_NCPFS_OS2_NS=y
                    CONFIG_NCPFS_SMALLDOS=y
                    CONFIG_NCPFS_NLS=y
                    CONFIG_NCPFS_EXTRAS=y
                    CONFIG_CODA_FS=y
                    CONFIG_AFS_FS=y
                    CONFIG_AFS_DEBUG=y
                    CONFIG_AFS_FSCACHE=y

                2. Modérateur
                  Salut,

                  On ne se comprends plus.
                  Quelle compilation?
                  1. Re,
                    j'ai recommencé mon noyau car j'avais sauté quelques paramétrages, je viens de finir de copier
                    lfskernel,system.map et config dans /boot.

                    Je n'ai pas encore redémarré.

                    Merci pour ton aide ;)

                    (J'ai peut être posté un peu trop de messages à la volée ça à un peu troublé la suite des choses)
                • 1
                • 2
                • 3
                • 4