Je souhaite compiler et installer un noyau kernel.org sur un volume de disque dur personnalisé, par exemple /dev/sda5
, au lieu d'être fusionnés avec mes répertoires Ubuntu actuels.
Je peux trouver des informations sur la configuration et le processus de compilation partout sur le Web, mais il n'y a aucune trace de la façon de mettre le noyau sur un volume personnalisé (différent de la distribution démarrée que vous utilisez au moment de la compilation). Ce que je demande, c'est comment installer 2 distributions différentes sur 2 volumes différents sur 1 disque dur, pensez maintenant à mon noyau personnalisé comme une autre distribution.
Réponse acceptée :
Vous pouvez compiler un noyau où vous voulez, y compris votre répertoire personnel. La seule fois où les répertoires en dehors de l'arborescence de construction sont modifiés, c'est lorsque vous effectuez l'un des install*
cibles. Donc, pour installer un noyau, vous feriez l'évidence :
cd $SOME_DIRECTORY
tar -xjvf linux-$VERSION.tar.bz2
cd linux-$VERSION
make mrproper menuconfig
# Configure the kernel here.
# Now build it using all your CPU threads in parallel.
make -j$(grep -c processor /proc/cpuinfo) bzImage modules
Après avoir configuré le noyau, il sera construit. À ce stade, vous aurez un noyau binaire (vmlinux) et une image de noyau amorçable sous arch/$YOUR_ARCHITECTURE/boot/bzImage.
Si vous construisez un noyau monolithique, vous avez terminé. Copiez le fichier non compressé (vmlinux
) ou fichier compressé (bzImage
) au volume prévu, configurez le gestionnaire de démarrage si nécessaire, et c'est parti.
Si vous avez besoin d'installer des modules, et en supposant que vous avez monté votre volume cible sur /mnt, vous pouvez dire :
INSTALL_MOD_PATH=/mnt \
INSTALL_PATH=/mnt/boot \
make modules_install
Cela copiera l'image du noyau dans /mnt/boot
et les modules de /mnt/lib/modules/$VERSION
.
Attention, je simplifie à l'excès. Si vous avez besoin d'aide pour construire le noyau manuellement, vous devriez lire certains des documents dans la Documentation/
de l'arborescence des sources du noyau. sous-répertoire. Le README
vous indique également comment le construire et l'installer en détail.
Cependant, démarrer le noyau est une autre histoire. La plupart des distributions modernes utilisent une image RAMdisk initiale qui contient une tonne de pilotes pour le matériel nécessaire pour faire apparaître le reste du noyau (périphériques en mode bloc, systèmes de fichiers, réseau, etc.). Ce processus ne créera pas cette image. En fonction de ce que vous devez faire (ce que faites devez-vous faire ?), vous pouvez en utiliser un existant ou en créer un nouveau à l'aide de la chaîne d'outils de votre distribution. Vous devriez vérifier la documentation sur update-initramfs
.
Il y a aussi d'autres problèmes. En utilisant la chaîne d'outils standard, vous ne pouvez pas compiler un noyau pour une architecture ou une sous-architecture différente. Notez que dans certains cas, même les noyaux compilés sur un type particulier de boîtier x86 ne fonctionneront pas sur certains autres types de boîtiers x86. Tout dépend de la combinaison des sous-architectures et de la configuration du noyau. La compilation sur plusieurs architectures (par exemple, la construction d'un noyau ARM sur une machine x86) est totalement hors de question, sauf si vous installez une chaîne d'outils de compilation croisée appropriée.
Connexe :Linux - perdre des fichiers si je vide le cache (echo 3> /proc/sys/vm/drop_caches) ?Cependant, si vous essayez de sauver une autre installation ou un autre ordinateur, un disque de secours peut s'avérer plus pratique que de créer un noyau personnalisé comme celui-ci.
Encore une chose :si vous essayez de construire un noyau pour un autre ordinateur qui démarre, est la même architecture que celui sur lequel vous compilez, et exécute un système d'exploitation Debian ou de type Debian (Ubuntu compte), vous pouvez installer le kernel-package
package (sudo aptitude install kernel-package
). Décompressez ensuite le noyau, cd
à la racine de l'arborescence des sources et dites :
CONCURRENCY_LEVEL=$(grep -c processor /proc/cpuinfo) \
sudo make-kpkg --initrd binary-arch
Cela appliquera les correctifs nécessaires, configurera le noyau, le compilera et le conditionnera en tant que package .deb (quelques packages, en fait). Tout ce que vous avez à faire est de l'installer sur votre système cible et le tour est joué.