#1 Le 27/05/2021, à 18:52
- Nuliel

modification live usb pour changer le noyau
Bonjour,
Je suis en train de faire un script qui a pour but de changer le noyau d'un live usb.
Voici actuellement mon script
#!/bin/bash
if [[ $# -ne 1 ]]; then
echo "Usage: ./my_script {path_iso}"
exit
fi
if [[ ! -e $1 ]]; then
echo "File $1 not found"
exit
fi
sudo apt install squashfs-tools schroot genisoimage syslinux-utils
mkdir -p ~/livecd/{iso,squashfs}
cd ~/livecd
sudo mount -o loop $1 /mnt
sudo cp -av /mnt/. iso
sudo umount /mnt
sudo mount -t squashfs -o loop iso/casper/filesystem.squashfs /mnt
sudo cp -av /mnt/. squashfs
sudo umount /mnt
# prepare for chroot
sudo mount --bind /proc squashfs/proc
sudo mount --bind /sys squashfs/sys
sudo mount -t devpts none squashfs/dev/pts
sudo cp /etc/resolv.conf squashfs/etc/resolv.conf
# add modif for sources.list and prefs of apt
sudo cp ~/programmes_C/dell_inspiron_7490_workaround/eos_prefs.conf squashfs/etc/apt/preferences.d/eos.pref
echo "deb https://deb.endlessos.org/debian master endless" | sudo tee -a squashfs/etc/apt/sources.list
# let's go deeper
sudo chroot squashfs
# install linux kernel from endless OS thanks to apt preferences set before
wget -q https://deb.endlessos.org/keys/eos-pub-archive-key.asc -O- | sudo apt-key add -
# sudo: unable to resolve host nuliel-desktop: Name or service not known , pb?
apt update
apt install linux-base linux-image-generic linux-headers-generic
apt clean
rm -r /var/crash/*
# rm -r /var/cache/*
# exit the chroot
umount -lf /sys
umount -lf /proc
# umount -lf /dev/pts # how do we do???
rm /etc/resolv.conf
rm /etc/hosts
exit
# in case they are needed
sudo mv iso/casper/{initrd,vmlinuz}
# insert new kernel
sudo cp squashfs/boot/initrd.img-* iso/casper/initrd
sudo cp squashfs/boot/vmlinuz-* iso/casper/vmlinuz
# useful?
sudo chmod 444 iso/casper/vmlinuz
sudo chmod 444 iso/casper/initrd
# renew squashfs
sudo chmod a+w iso/casper/filesystem.manifest
sudo chroot squashfs dpkg-query -W --showformat='${Package} ${Version}\n' > iso/casper/filesystem.manifest
sudo chmod go-w iso/casper/filesystem.manifest
cd iso
sudo bash -c "find . -path ./isolinux -prune -o -type f -not -name md5sum.txt -print0 | xargs -0 md5sum | tee md5sum.txt"
# reconstruct the iso file
sudo mkisofs -U -A "Custom" -V "Custom" -volset "Custom" -J -joliet-long -r -v -T -o ../Custom.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -eltorito-alt-boot -e boot/grub/efi.img -no-emul-boot .
cd ..
sudo isohybrid -u Custom.iso
cd ~
rm -r ~/livecd
echo "Finished"Malheureusement cela ne fonctionne pas: j'arrive sur un shell dans l'initramfs...
Cela est dû à cette partie:
# insert new kernel
sudo cp squashfs/boot/initrd.img-* iso/casper/initrd
sudo cp squashfs/boot/vmlinuz-* iso/casper/vmlinuzqui a pour but de permettre de démarrer avec le nouveau noyau. Sans ces deux lignes, l'ancien noyau est utilisé et cela fonctionne. Avec le nouveau est utilisé et j'obtiens après passage du paramètre noyau "debug" le fait que la variable root n'est pas initialisée. Pourtant cette variable n'est initialisée par les paramètres du noyau lorsque le système est installé, mais pas quand on est en live usb.
Quelqu'un saurait comment faire pour pouvoir changer le noyau d'un live usb?
Merci d'avance,
Nuliel
(je précise aussi que mon script actuel est assez basique et un peu crade, mais s'il pouvait marcher ce serait déjà bien!)
[ poster un retour de commande ] [ poster une photo ]
Thinkpad x220, Dell latitude E7270 (i7 6600U, 16 Go de RAM, ...), Thinkstation E32 modifié: i5-4570, GTX 1060 6 Gb, 16 Gb de RAM, ...
Mon nouveau blog: nuliel.fr
Hors ligne
#2 Le 28/05/2021, à 09:29
- Vobul

Re : modification live usb pour changer le noyau
Bon j'ai pas regardé longtemps, mais ne dois-tu pas rebuild initramfs ? (avec update-initramfs)
Sinon quatre conseils pour ton script :
1. Exécute-le en root au lieu de mettre des sudo partout. Tu peux ajouter un check au début : t'es pas root ? exit 1
2. Utilise shellcheck
3. Si il n'est pas interactif, utilise le flag -y pour apt
4. Vu qu'il commence à être un peu long, n'hésite pas à splitter en fonctions
Vobul
Utilisez le retour utilisable de commandes !!!
J'aime la langue française, mais je parle franglais, deal with it.
Hors ligne
#3 Le 28/05/2021, à 12:01
- Nuliel

Re : modification live usb pour changer le noyau
Merci Vobul pour tes conseils.
Pour l'update-initramfs, je crois qu'à l'installation du noyau, l'initramfs est mis à jour automatiquement, mais dans le doute je vais le rajouter.
Pas faux pour sudo et -y pour apt (en réalité actuellement je lance le script ligne par ligne).
Je ne connaissais pas shellcheck, son analyse est très intéressante!
[ poster un retour de commande ] [ poster une photo ]
Thinkpad x220, Dell latitude E7270 (i7 6600U, 16 Go de RAM, ...), Thinkstation E32 modifié: i5-4570, GTX 1060 6 Gb, 16 Gb de RAM, ...
Mon nouveau blog: nuliel.fr
Hors ligne
#4 Le 28/05/2021, à 12:07
- Vobul

Re : modification live usb pour changer le noyau
Oui shellcheck c'est le bien. Ça t'évite des conneries genre tu "cd" dans un non existing directory puis tu "rm -rf" sauf que c'est pas le bon dir... oops
Aussi, au début, ça peut être une bonne idée d'ajouter "set -euxo pipefail", c'est un peu le "strict mode" de bash. Voir : https://vaneyckt.io/posts/safer_bash_sc … _pipefail/
Vobul
Utilisez le retour utilisable de commandes !!!
J'aime la langue française, mais je parle franglais, deal with it.
Hors ligne
#5 Le 28/05/2021, à 17:08
- Nuliel

Re : modification live usb pour changer le noyau
Effectivement, je n'avais pas pensé à ce cas là, c'est du coup très utile shellcheck!
Ok pour le mode strict.
Effectivement en refaisant l'initramfs juste sur le noyau installé par défaut j'ai une chiée d'erreurs. Je vais déjà commencer par corriger cela.
Merci
Edit: pour corriger les erreurs j'ai rajouté
export HOME=/root
export LC_ALL=Cmais j'ai encore un nuliel-desktop qui doit encore traîner, vu que j'ai un warning lorsque j'importe la clé gpg, mais je verrai cela plus tard
Finalement la mise à jour de l'initramfs ne change rien ![]()
Je vais reprendre https://help.ubuntu.com/community/LiveCDCustomization
Dernière modification par Nuliel (Le 28/05/2021, à 17:37)
[ poster un retour de commande ] [ poster une photo ]
Thinkpad x220, Dell latitude E7270 (i7 6600U, 16 Go de RAM, ...), Thinkstation E32 modifié: i5-4570, GTX 1060 6 Gb, 16 Gb de RAM, ...
Mon nouveau blog: nuliel.fr
Hors ligne
#6 Le 28/05/2021, à 22:47
- Nuliel

Re : modification live usb pour changer le noyau
Hop, nouveau script, spoiler ça marche pas (toujours l'initramfs):
#!/bin/bash
# run as root?
if [[ $EUID -ne 0 ]]; then
echo "This script must be run as root"
exit 1
fi
# one argument?
if [[ $# -ne 1 ]]; then
echo "Usage: ./my_script {path_iso}"
exit
fi
# file exists?
if [[ ! -e $1 ]]; then
echo "File $1 not found"
exit
fi
# install utilities
apt install -y squashfs-tools schroot genisoimage syslinux-utils
# create all directories and copy files on it
mkdir -p ~/livecd/{iso,squashfs}
cd ~/livecd || exit
mount -o loop "$1" /mnt
cp -av /mnt/. iso
umount /mnt
mount -t squashfs -o loop iso/casper/filesystem.squashfs /mnt
cp -av /mnt/. squashfs
umount /mnt
# add endless OS repo
echo "deb https://deb.endlessos.org/debian master endless" | tee -a squashfs/etc/apt/sources.list
# add modif for sources.list and prefs of apt
echo -e "# don't use packages of endless OS
Package: *
Pin: origin "https://deb.endlessos.org/debian/"
Pin-Priority: -1
# only use linux-{image,headers} packages of endless OS
Package: linux-{image-generic,base,headers-generic}
Pin: origin "https://deb.endlessos.org/debian/"
Pin-Priority: 1000" > squashfs/etc/apt/preferences.d/eos.pref
cp /etc/resolv.conf squashfs/etc/
mount --bind /dev/ squashfs/dev
# let's go deeper
chroot squashfs
mount -t proc none /proc
mount -t sysfs none /sys
mount -t devpts none /dev/pts
export HOME=/root
export LC_ALL=C
# install linux kernel from endless OS thanks to apt preferences set before
wget -q https://deb.endlessos.org/keys/eos-pub-archive-key.asc -O- | apt-key add -
apt update
# install kernel of endless OS
apt install -y linux-base linux-image-generic linux-headers-generic
# it's time to clean
apt clean
rm -rf /tmp/* ~/.bash_history
rm -r /var/crash/*
rm /etc/resolv.conf
# unmount and exit the chroot
umount /proc || umount -lf /proc
umount /sys
umount /dev/pts
umount /dev || echo "W: Failed to unmount /dev"
exit
# in case they are needed, for debug purpose
mv iso/casper/{initrd,vmlinuz} .
# insert new kernel
cp squashfs/boot/initrd.img-* iso/casper/initrd # .gz useful?
cp squashfs/boot/vmlinuz-* iso/casper/vmlinuz
# renew squashfs
chmod a+w iso/casper/filesystem.manifest
chroot squashfs dpkg-query -W --showformat='${Package} ${Version}\n' > iso/casper/filesystem.manifest
chmod go-w iso/casper/filesystem.manifest
# update squashfs
rm iso/casper/filesystem.squashfs
mksquashfs squashfs iso/casper/filesystem.squashfs
# update filesystem.size
printf $(du -sx --block-size=1 squashfs | cut -f1) > iso/casper/filesystem.size
# update md5sums
cd iso
rm md5sum.txt
find -type f -print0 | xargs -0 md5sum | grep -v isolinux/boot.cat | tee md5sum.txt
# create iso
#from help.ubuntu
# mkisofs -D -r -V "custom" -cache-inodes -J -l -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o ../Custom.iso .
mkisofs -U -A "Custom" -V "Custom" -volset "Custom" -J -joliet-long -r -v -T -o ../Custom.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -eltorito-alt-boot -e boot/grub/efi.img -no-emul-boot .
#usb compatible
cd ..
isohybrid -u Custom.iso
### old script
# cd iso
# bash -c "find . -path ./isolinux -prune -o -type f -not -name md5sum.txt -print0 | xargs -0 md5sum | tee md5sum.txt"
# # reconstruct the iso file
# mkisofs -U -A "Custom" -V "Custom" -volset "Custom" -J -joliet-long -r -v -T -o ../Custom.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -eltorito-alt-boot -e boot/grub/efi.img -no-emul-boot .
# cd ..
# isohybrid -u Custom.iso
# cd ~
# rm -r ~/livecd
# echo "Finished"J'ai retiré les sudo et mis les -y pour apt install, je continuerai de le nettoyer demain
Dernière modification par Nuliel (Le 28/05/2021, à 22:48)
[ poster un retour de commande ] [ poster une photo ]
Thinkpad x220, Dell latitude E7270 (i7 6600U, 16 Go de RAM, ...), Thinkstation E32 modifié: i5-4570, GTX 1060 6 Gb, 16 Gb de RAM, ...
Mon nouveau blog: nuliel.fr
Hors ligne
#7 Le 29/05/2021, à 21:54
- Nuliel

Re : modification live usb pour changer le noyau
Petit up, j'ai trouvé https://github.com/xptsp/modify_ubuntu_kit et https://github.com/mvallim/live-custom- … om-scratch, il y a des différences par rapport à mon script mais à mon avis pas fondamentales.
[ poster un retour de commande ] [ poster une photo ]
Thinkpad x220, Dell latitude E7270 (i7 6600U, 16 Go de RAM, ...), Thinkstation E32 modifié: i5-4570, GTX 1060 6 Gb, 16 Gb de RAM, ...
Mon nouveau blog: nuliel.fr
Hors ligne
#8 Le 30/05/2021, à 15:39
- Nuliel

Re : modification live usb pour changer le noyau
Mon fichier préférences était faux.
Voici une version qui devrait un peu plus jouer son rôle:
Package: *
Pin: origin "deb.endlessos.org"
Pin-Priority: 1
Package: linux-image-generic, linux-headers-generic
Pin: origin "deb.endlessos.org"
Pin-Priority: 1000A noter que j'installe en chroot les deux packages linux-image-generic, linux-headers-generic pour passer sur ceux d'endless OS. Plus qu'à tester pour voir si ça tient. Au passage je sais pas trop s'il faut que j'installe aussi linux-base, je sais pas trop à quoi il sert.
Dernière modification par Nuliel (Le 30/05/2021, à 15:40)
[ poster un retour de commande ] [ poster une photo ]
Thinkpad x220, Dell latitude E7270 (i7 6600U, 16 Go de RAM, ...), Thinkstation E32 modifié: i5-4570, GTX 1060 6 Gb, 16 Gb de RAM, ...
Mon nouveau blog: nuliel.fr
Hors ligne
#9 Le 30/05/2021, à 15:49
- Vobul

Re : modification live usb pour changer le noyau
Au fait pourquoi tu cherches à faire ça ?
Vobul
Utilisez le retour utilisable de commandes !!!
J'aime la langue française, mais je parle franglais, deal with it.
Hors ligne
#10 Le 30/05/2021, à 15:52
- Nuliel

Re : modification live usb pour changer le noyau
C'est pour le Dell Inspiron 7490 qui a la particularité de ne pas vouloir de Linux (voir https://forum.ubuntu-fr.org/viewtopic.php?id=2064635 , en gros une histoire de BIOS qui permet pas de choisir le mode AHCI, le mode RAID est mis par défaut et en plus il y a qu'un disque...)
En fait actuellement la seule façon d'avoir un linux sur ce pc c'est d'installer endless OS ou d'utiliser le noyau d'endless OS sur une autre distribution (ce que je cherche à faire, actuellement il y a une iso modifiée mais dont le noyau n'est pas mis à jour)
Edit: bon finalement ça marche toujours pas
Dernière modification par Nuliel (Le 30/05/2021, à 16:01)
[ poster un retour de commande ] [ poster une photo ]
Thinkpad x220, Dell latitude E7270 (i7 6600U, 16 Go de RAM, ...), Thinkstation E32 modifié: i5-4570, GTX 1060 6 Gb, 16 Gb de RAM, ...
Mon nouveau blog: nuliel.fr
Hors ligne
#11 Le 30/05/2021, à 21:11
- Nuliel

Re : modification live usb pour changer le noyau
J'ai pas mal avancé, et j'ai testé de juste mettre le nouveau vmlinuz et initrd dans casper et ça ne marche pas (donc en zappant 75% du script).
Je pense que le problème vient de la génération de l'initrd, et qu'en fait il manque des scripts pour la génération d'initrd spécifiques aux live usb, notamment par l'existence de paquets comme live-boot et live-boot-initramfs-tools
[ poster un retour de commande ] [ poster une photo ]
Thinkpad x220, Dell latitude E7270 (i7 6600U, 16 Go de RAM, ...), Thinkstation E32 modifié: i5-4570, GTX 1060 6 Gb, 16 Gb de RAM, ...
Mon nouveau blog: nuliel.fr
Hors ligne
#12 Le 30/05/2021, à 21:27
- geole
Re : modification live usb pour changer le noyau
Bonsoir Nuliel.
Malbo a bricolé récemmement une live-usb. Je te laisse décortiquer. https://forum.ubuntu-fr.org/viewtopic.p … #p22459084
Dernière modification par geole (Le 30/05/2021, à 21:29)
Hors ligne
#13 Le 30/05/2021, à 21:29
- Nuliel

Re : modification live usb pour changer le noyau
Merci pour l'info geole, je vais aller voir ce fil
[ poster un retour de commande ] [ poster une photo ]
Thinkpad x220, Dell latitude E7270 (i7 6600U, 16 Go de RAM, ...), Thinkstation E32 modifié: i5-4570, GTX 1060 6 Gb, 16 Gb de RAM, ...
Mon nouveau blog: nuliel.fr
Hors ligne
#14 Le 31/05/2021, à 16:21
- Nuliel

Re : modification live usb pour changer le noyau
Effectivement cubic pourrait rendre la tâche bien plus simple. Par contre c'est dommage mais mon pc fixe n'est pas installé en mode EFI, et mon pc portable a le mode EFI mais j'ai un debian sid dessus.... Je croise les doigts pour que ça tourne sous debian sid vu que cubic produirait des iso EFI lorsque le système est installé en mode EFI (à vérifier si c'est encore vrai)
Dernière modification par Nuliel (Le 31/05/2021, à 16:54)
[ poster un retour de commande ] [ poster une photo ]
Thinkpad x220, Dell latitude E7270 (i7 6600U, 16 Go de RAM, ...), Thinkstation E32 modifié: i5-4570, GTX 1060 6 Gb, 16 Gb de RAM, ...
Mon nouveau blog: nuliel.fr
Hors ligne
#15 Le 31/05/2021, à 17:03
- Nuliel

Re : modification live usb pour changer le noyau
Un grand merci geole, je ne connaissais pas l'existence de cet outil, et il fonctionne!!!
Je pense que je vais déjà installer kubuntu sur le fameux pc et faire ce qu'il faut pour que tout tourne bien, et après je reprendrai ce fil parce que je serais curieux de savoir ce que j'ai mal fait dans le script.
[ poster un retour de commande ] [ poster une photo ]
Thinkpad x220, Dell latitude E7270 (i7 6600U, 16 Go de RAM, ...), Thinkstation E32 modifié: i5-4570, GTX 1060 6 Gb, 16 Gb de RAM, ...
Mon nouveau blog: nuliel.fr
Hors ligne
#16 Le 31/05/2021, à 18:28
- geole
Re : modification live usb pour changer le noyau
Après je reprendrai ce fil parce que je serais curieux de savoir ce que j'ai mal fait dans le script.
Je te comprends.... Une fois, j'ai exécuté en lignes de commandes. Uniquement pour voir et vu que ce n'était pas pour moi ni pour les aidés du forum... https://doc.ubuntu-fr.org/personnaliser_livecd
Hors ligne
#17 Le 31/05/2021, à 19:44
- Nuliel

Re : modification live usb pour changer le noyau
En fait j'en avais déjà fait un avec juste un logiciel (wxmaxima), j'avais déjà galéré, alors un changement de noyau ça ne pouvait pas se passer autrement.
[ poster un retour de commande ] [ poster une photo ]
Thinkpad x220, Dell latitude E7270 (i7 6600U, 16 Go de RAM, ...), Thinkstation E32 modifié: i5-4570, GTX 1060 6 Gb, 16 Gb de RAM, ...
Mon nouveau blog: nuliel.fr
Hors ligne