Essayer de transformer mon Ubuntu générique en Ubuntu en temps réel en modifiant le noyau en corrigeant/installant RT Linux mais n'a pas pu trouver une configuration simple. Quelqu'un peut-il aider avec les étapes?
Étape 0 - Créez un répertoire de travail
Créer un répertoire de travail
#Move to working directory
mkdir ~/kernel && cd ~/kernel
Étape 1 - Télécharger le noyau et le patch
Allez sur https://www.kernel.org/pub/linux/kernel/ et téléchargez la version souhaitée du noyau dans ~/kernel. De même, accédez à https://www.kernel.org/pub/linux/kernel/projects/rt/ et téléchargez le patch RT avec la même version que le version du noyau téléchargée. Le noyau et le correctif que j'ai utilisés étaient linux-4.9.115.tar.gz et patch-4.9.155-rt93.patch.gz.
Étape 2 - Décompressez le noyau
tar -xzvf linux-4.9.115.tar.gz
Étape 3 - Patcher le noyau
#Move to kernel source directory
cd linux-4.9.115
gzip -cd ../patch-4.9.115-rt93.patch.gz | patch -p1 --verbose
Étape 4 - Activer le traitement en temps réel Cette étape nécessite libncurses-dev
Sudo apt-get install libncurses-dev libssl-dev
La commande suivante lance un menu graphique dans le terminal pour générer le fichier de configuration.
make menuconfig
Accédez à l'emplacement et effectuez les modifications en conséquence
##Graphical Menu##
Processor type and features ---> [Enter]
Preemption Model (Voluntary Kernel Preemption (Desktop)) [Enter]
Fully Preemptible Kernel (RT) [Enter] #Select
[Esc][Esc]
Kernel hacking --> [Enter]
Memory Debugging [Enter]
Check for stack overflows #Already deselected - do not select
[Esc][Esc]
[Right Arrow][Right Arrow]
<Save> [Enter]
.config
<Okay> [Enter]
<Exit> [Enter]
[Esc][Esc]
[Right Arrow]
<Exit> [Enter]
Étape 5 - Compilation du noyau
make -j20
Sudo make modules_install -j20
Sudo make install -j20
Étape 6 - Vérifiez et mettez à jour Vérifiez que initrd.img-4.9.115-rt93, vmlinuz-4.9.115-rt93 et config-4.9.115 -rt93 sont générés dans le répertoire/boot et mettent à jour le grub.
cd /boot
ls
Sudo update-grub
Vérifiez qu'il existe une entrée de menu contenant le texte "entrée de menu 'Ubuntu, avec Linux 4.9.115-rt93'" dans /boot/grub/grub.cfg
fichier
Pour modifier le noyau par défaut dans grub, modifiez le GRUB_DEFAULT
valeur dans /etc/default/grub
au noyau souhaité.
REMARQUE: 0 est la 1ère entrée de menu
7 - Redémarrez et vérifiez
Sudo reboot
Une fois le système redémarré, ouvrez le terminal et utilisez uname -a
pour vérifier la version du noyau, elle devrait ressembler à ceci
Linux abhay-home 4.9.115-rt93 #1 SMP PREEMPT RT Mon May 13 03:32:57 EDT 2019 x86_64 x86_64 x86_64 GNU/Linux
Remarque: "SMP PREEMPT RT" valide que votre système exécute le noyau en temps réel.
Après avoir installé le nouveau noyau (comme @Abhay Nayak publié), je suis entré dans une panique du noyau. Le problème était que l'image initrd était trop grande. J'ai résolu cela avec:
Étape 1 - Supprimez les modules du noya
cd /lib/modules/<new_kernel>
find . -name *.ko -exec strip --strip-unneeded {} +
Étape 2 - Modifier la compression initramfs
Editez le fichier /etc/initramfs-tools/initramfs.conf:
COMPRESS=xz
Étape 3 - Mettre à jour initramfs
Sudo update-initramfs -u
Sudo update-grub2
Voici pour Ubuntu 19.10 et supérieur et j'ai patché le patch du noyau Linux 5.4.5 rt car Linux 5.3 - la base d'Ubuntu 19.10 - n'a pas de patch du noyau rt.
0. Créer un répertoire de travail
# Make dir and move to working directory
$ mkdir ~/kernel && cd ~/kernel
1. Télécharger le noyau et le patch
Téléchargez le noyau et le patch rt depuis https://www.kernel.org/ . Vous pouvez les obtenir ci-dessous:
(noyau) https://www.kernel.org/pub/linux/kernel/
(patch rt) https://www.kernel.org/pub/linux/kernel/projects/rt/
Notez que la version du patch rt et du noyau doit être la même. J'ai utilisé linux-5.4.5.tar.gz et patch-5.4.5-rt3.patch.gz.
Si vous les téléchargez sur le ~/kernel, passez ci-dessous et passez à l'étape 2.
# Move these Zip file to ~/kernel
$ cd ~/Download
$ mv linux-5.4.5.tar.gz patch-5.4.5-rt3.patch.gz ~/kernel/.
2. Extraire les sources du noyau et patcher le noyau rt
# Extract kernel sources
$ cd ~/kernel
$ tar xvzf linux-5.4.5.tar.gz
# Patch rt kernel
$ cd linux-5.4.5
$ gzip -cd ../patch-5.4.5-rt3.patch.gz | patch -p1 --verbose {}
3. Installer les packages requis
Pour utiliser GUI menuconfig, libncurses-dev
est requis. flex
et bison
seront nécessaires lors de la compilation du noyau.
# For using gui
$ Sudo apt install libncurses-dev libssl-dev
# For compiling kernel
$ Sudo apt install flex bison
4. Configurer le noyau pour RT
$ make menuconfig
et entrez dans l'interface utilisateur menuconfig.
# Make preemptible kernel setup
General setup ---> [Enter]
Preemption Model (Voluntary Kernel Preemption (Desktop)) [Enter]
Fully Preemptible Kernel (RT) [Enter] #Select
# Select <SAVE> and <EXIT>
# Check .config file is made properly
Notez qu'il n'y a pas de Check for stack overflows
option sur la configuration de l'interface graphique. Vous pouvez le vérifier en recherchant "débordement". Type / et overflow
dans le menu graphique.
5. Compilez le noyau
$ make -j20
$ Sudo make modules_install -j20
$ Sudo make install -j20
6. Rendre les images du noyau plus légères
Comme @ mrRo8o7 l'a dit plus tôt, une grande image initrd
peut provoquer une panique du noyau. Vous pouvez donc résoudre ce problème en:
# Strip unneeded symbols of object files
$ cd /lib/modules/5.4.5-rt3 # or your new kernel
$ Sudo find . -name *.ko -exec strip --strip-unneeded {} +
# Change the compression format
$ Sudo vi /etc/initramfs-tools/initramfs.conf
# Modify COMPRESS=lz4 to COMPRESS=xz (line 53)
COMPRESS=xz
[:wq]
puis mettez à jour initramfs
$ Sudo update-initramfs -u
7. Vérifier et mettre à jour grub
Vérifiez ce répertoire et mettez à jour le grub.
# Make sure that initrd.img-5.4.5-rt3, vmlinuz-5.4.5-rt3, and config-5.4.5-rt3 are generated in /boot
$ cd /boot
$ ls
# Update grub
$ Sudo update-grub
8. Redémarrez et vérifiez
$ Sudo reboot
# After the reboot
$ uname -a
alors vous pouvez vérifier votre nouvelle version du noyau
Linux [Prompt] 5.4.5-rt3 …