Ce projet vous permet de construire une distribution Linux à partir de zéro
Nous avons besoin de quelques dépendances, alors installez-les
sudo apt get install bzip2 git vim make gcc libncurses-dev flex bison bc cpio libelf-dev libssl-dev syslinux dosfstools
Maintenant, nous devons cloner le noyau Linux et le modifier
git clone --depth 1 https://github.com/torvalds/linux.git
Maintenant, passez au répertoire Linux
cd linux
Nous devons maintenant modifier le noyau en modifiant les options qui ouvriront un menu interactif
make menuconfig
Assurez-vous que 64 bit kernel (NEW) est sélectionné
Ensuite, après avoir fait le menuconfig si vous avez plus de cœurs que 6 que vous pouvez en faire plus de 6 comme j'ai 8 cœurs
make -j 8
Une fois le Kenel a fini de compiler (Gentoo Moment), vous verrez un message avec bZimage , faites un répertoire nommé boot-files
mkdir /boot-files
Copiez ensuite le bZimage dans le répertoire boot-files
cp arch/x86/boot/bzImage /boot-files
bzImage est un fichier pour démarrer le CD système
cd ..
maintenant clone busybox
git clone --depth 1 https://git.busybox.net/busybox
Entrez ensuite le répertoire busybox
cd busybox
puis faites le menuconfig
make menuconfig
Accédez à settings > Build static binary (no shared libs) (NEW) Sélectionnez-le maintenant, la raison pour laquelle nous avons fait une construction static est parce que nous ne voulons pas des binaires externes maintenant avec la quantité de cœurs que vous avez exécutés make -j <cores> comme par exemple
make -j 8
Après la compilation terminée, la compilation a fini de faire un initramds
mkdir /boot-files/initramfs
MAINTENANT
make CONFIG_PREFIX=/boot-files/initramfs install
initRamfs est le système de fichiers initial que le noyau charge après le démarrage, nous mettrons Busybox là-bas, passez maintenant à ce dossier
cd /boot-files/initramfs/
Créez maintenant un fichier appelé init
nano init
Ajoutez maintenant ces commandes à init
#!/bin/sh
/bin/sh
Maintenant, enregistrez-le maintenant supprimer linuxrc Pas besoin de ce fichier
rm linuxrc
Ajoutez maintenant des imprégnes exec à init
chmod +x init
Maintenant, trouvez puis emballez-le sur une archive .cpio
find . | cpio -o -H newc > ../init.cpio
-o signifie créer une nouvelle archive maintenant aller 1 dir en arrière
cd ..
Maintenant, le fichier a été créé Utilisez ls pour le voir, mais nous utiliserons un chargeur de démarrage appelé syslinux , faites le bootfile
dd if=/dev/zero of=boot bs=1M count=50
Cela fera un fichier de 50 à 100 mégaoctets et il sera rempli de zéros que nous utiliserons le Système de fichiers fat
mkfs -t fat boot
Puis courez
syslinux boot
Maintenant, faites un répertoire appelé n'importe quoi, mais pour la sécurité, nous utiliserons m puis montez Boot sur M
mkdir m
mount boot m
puis copiez le noyau et les initramfs sur le boot fs
cp bzImage init.cpio m
maintenant démoulisez
unmount m
Maintenant, l'image de démarrage est prête, nous allons donc le démarrer
qemu-system-x86_64 boot
Syslinux démarrera et demandera quel fichier à démarrer utilise
/bzImage -initrd=init.cpio
Liens DFS GUI DFS For Embedded Devices