************************************************************************************************ ** ** ** Ce document n'est plus à jour, la dernière version se trouve à : ** ** http://perso.ens-lyon.fr/sebastien.mei/docs/HOWTO_make_woody_install_CD_with_your_kernel/ ** ** ** ************************************************************************************************ Création d'un CD d'installation Debian Woody ============================================ Crée le 19/02/2004 par MEÏ Sébastien MàJ le 24/02/2004 par MEÏ Sébastien (HAS_PCMCIA + grossir la rescue disk) Corrections le 25/02/2004 par Taulelle Loïs (corrections + aérations) La première fois : ----------------- Il faut avoir les droits de root. Créer un répertoire de travail : # mkdir bootcd-perso # cd bootcd-perso Récupérons les sources du paquets boot-floppies : # apt-get source boot-floppies Copier les fichiers utiles : # cd boot-floppies- # cp kernel.sh common.sh config .. # cd .. On supprime les fichiers qui ne servent pas : # rm -rf boot-floppies* On met en place l'environnement de base : # ./kernel.sh . 2.4.18 bf2.4 nota: Cette opération crée un var/ local On modifie la config de base : Dans le fichier config mettre (pour ne plus avoir à télécharger) offline_mode := true et changer, au besoin, dans le fichier kernel.sh (pour ne pas compiler le paquet pcmcia) HAS_PCMCIA=false Récupérer le fichier mini-iso.sh : # wget http://oregonstate.edu/~kveton/debian/mini-iso.sh # chmod u+x mini-iso.sh Créons des dossiers pour plus tard : # mkdir mnt tmp Voilà nous avons notre environnement de travail. Compiler une image de noyau : ----------------------------- C'est un grand classique, se reporter aux howto/manuels/docs diverses et variées pour la version longue. Récupérer les sources du noyau : # cd /usr/src # wget http://www.kernel.org/pub/linux/kernel/v2.4/linux-2.4.25.tar.bz2 # tar -xjvf linux-2.4.25.tar.bz2 # cd linux-2.4.25 Configurer notre futur noyau avec make config|menuconfig|xconfig : # # make menuconfig ne pas oublier de sauvegarder la configuration en quittant. Attention ! Vous devez avoir mis en dur dans celui-ci (pas en module) : (tiré de http://www.debian.org/releases/stable/i386/ch-boot-floppy-techinfo.en.html#s-rescue-replace-kernel) # Kernel support for ELF binaries (CONFIG_BINFMT_ELF) # Loop device support (CONFIG_BLK_DEV_LOOP) # RAM disk support (CONFIG_BLK_DEV_RAM) # Initial RAM disk (initrd) support (CONFIG_BLK_DEV_INITRD) # Packet socket, also for DHCP (CONFIG_PACKET) # Socket filtering for DHCP (CONFIG_FILTER) # Unix domain sockets for system logging ? is provided as a module in the vanilla flavor (CONFIG_UNIX) # FAT, Minix, and Ext2 file systems (some architectures don't need FAT and/or Minix file systems ? see the source) For Intel x86, Minix file support is not required, but MSDOS and ext2 are. _*Ne surtout pas mettre devfs*_ qui est incompatible avec l'installeur. Compiler notre noyau d'installation avec make-kpkg : # make-kpkg clean # make-kpkg --append-to-version='-bf2.4' kernel_image Je ne sais pas pour l'instant si l'append-to-version doit obligatoirement être '-bf2.4' Création de l'image avec son noyau ---------------------------------- Revenir dans votre répertoire de travail. Copier votre noyau pour le traitement (*Attention!* : dans le var/ du répertoire de travail.) : # cp /chemin/kernel-image--bf2.4-_.deb var/cache/apt/archives/ Créer les fichiers de bases configbf2.4.gz, sys_mapbf2.4.gz, linuxbf2.4.bin, modcontbf2.4 et modulesbf2.4.tgz : # ./kernel.sh . bf2.4 Recupérer les fichiers indispensables pour faire l'ISO : # ./mini-iso.sh bf2.4 <(http|ftp|file)://votre mirroir debian préféré> yes Cela va recopier les fichiers boot / root / drivers / rescue de l'image bf2.4 de base et créer un bootbf2.4.iso (qui ce n'est pas la bonne pour le moment). Cette dernière commande a téléchargé plusieurs fichiers dont resc2880bf2.4.bin et driversbf2.4.tgz que nous allons modifier pour faire notre image. resc2880bf2.4.bin est une image d'un système de fichiers, montons-la : # mount -o loop resc2880bf2.4.bin mnt On change les fichiers de l'image par les notres (Si vous avez des problèmes de taille voir : [1] Créer une resc2880bf2.4.bin plus grosse ) : # cp linuxbf2.4.bin mnt/linux.bin # cp sys_mapbf2.4.gz mnt/sys_map.gz # cp configbf2.4.gz mnt/config.gz Modifier le numéro de version du noyau dans mnt/install.sh et mnt/debian.txt (pour le fun, le debian.txt) VERSION=2.4.25-bf2.4 C'est fini pour resc2880bf2.4.bin, on peut le démonter. # umount mnt On décompresse maintenant driversbf2.4.tgz dans tmp # cd tmp # tar xzvf ../driversbf2.4.tgz On remplace les fichiers par les notres : # cp ../modulesbf2.4.tgz modules.tgz # cp ../modcontbf2.4 modcont Et on refait l'archive # tar zcf driversbf2.4.tgz * Avec laquelle on écrase l'ancienne : # mv driversbf2.4.tgz .. On retourne à la racine du repertoire de travail # cd .. Et on efface les restes : # rm tmp/* On refait jouer mini-iso.sh (pour générer l'iso) : # ./mini-iso.sh bf2.4 <(http|ftp|file)://votre mirroir debian préféré> yes Et voilà, on se retrouve avec une belle image à graver : bootbf2.4.iso [1] Créer une resc2880bf2.4.bin plus grosse -------------------------------------------- (Pas testé mais ca devrait marcher) La solution est de créer un nouvelle image plus grosse pour la resc2880bf2.4.bin . Ce n'est pas évident mais pas impossible. # file resc2880bf2.4.bin resc2880bf2.4.bin: x86 boot sector, code offset 0x3c, OEM-ID "SYSLINUX", sectors/cluster 2, root entries 240, sectors 5760 (volumes <=32 MB) , sectors/FAT 9, serial number 0x6c83885b, unlabeled, FAT (12 bit) Donc resc2880bf2.4.bin est une image disk en FAT. Et on voit qu'elle utilise le système syslinux pour booter. (C'est marqué sur le resultat du file, l'image est en fat et il y a un fichier syslinux.cfg dans l'image). Il faut donc créer une image plus grosse (x1,5 doit suffire) : # dd if=/dev/zero of=resc_big.bin bs=512 count=8640 On la monte en tant que loop device (je prend le loop5 au cas ou j'ai déjà des images montées) : # losetup /dev/loop5 resc_big On le format en FAT : # mkfs.msdos /dev/loop5 On le monte l'image : # mount /dev/loop5 mnt On monte l'ancien resc2880bf2.4.bin : # mkdir mnt_bis (On crée un nouveau point de montage. # mount -o loop resc2880bf2.4.bin mnt_bis On copie les fichiers de resc2880bf2.4.bin dans resc_big.bin : # cp mnt_bis/* mnt/ On démonte les images : # umount mnt mnt_bis # losetup -d /dev/loop5 On met le syslinux sur la nouvelle image : # syslinux -s resc_big.bin Il faudra surement renommer resc_big.bin en resc2880bf2.4.bin (en ayant sauvegardé l'ancien) pour que les scripts prennent en compte la nouvelle image. Liens : ------- http://oregonstate.edu/~kveton/debian/ http://rescuecd.sourceforge.net/288.html#syslinux