Démarrer une ISO Knoppix à partir de Grub – device / uri folie

J'essaye de démarrer un Knoppix ISO de Grub comme ceci:

loopback loop /boot/iso/knoppix.iso linux (loop)/boot/isolinux/linux lang=en bootfrom=/mnt-iso//boot/iso/knoppix.iso initrd (loop)/boot/isolinux/minirt.gz 

Ma question est le paramètre bootfrom . Si je n'inclue pas la double barre oblique, le système ne démarrera jamais. Il se plaindra qu'il n'a pas pu find le dossier KNOPPIX sur le lecteur (car il est à l'intérieur de l'ISO).

Il searchra les lecteurs dans une tentative de localiser ce dossier – à la fin de quels disques sont apparus dans /dev/ de sda1 à sdz15 .

C'est très déroutant.

Edit: Progrès!

Avec le menuentry suivant, j'ai réussi à get knoppix pour réclamer ouvrir et vérifier un file ISO, seulement pour affirmer qu'il ne peut pas find le dossier KNOPPIX.

Impossible de find KNOPPIX dir in iso image:

 loopback loop /boot/iso/knoppix.iso linux (loop)/boot/isolinux/linux lang=en bootfrom=UUID=<uuid>/boot/iso/knoppix.iso initrd (loop)/boot/isolinux/minirt.gz 

Il est difficile de dire ce qui se passe parce que l'ATS est petit et que le text ne s'enroule pas.

Edit: Encore plus de progrès. Après avoir parcouru la moitié du repo knoppix avec un grep dents fines, j'ai décidé de voir si le problème était dans le kernel car évidemment le rest du système n'était pas chargé de toute façon.

ssortingngs linux | grep "Cannot find" ssortingngs linux | grep "Cannot find" – Aucun résultat

Et qu'en est-il d'initrd.gz? (Notez que je n'ai aucune idée de ce qu'il y a dedans, j'ai entendu quelque part que c'était un morceau de memory)

Ooh il y a une autre archive là dedans … Ooh il y a un système de files! Qu'y a-t-il dans ce gros file nommé init? …

  if [ ! -r "$BOOTSYS/$knoppix_dir/KNOPPIX" ]; then message "${CRE}${RED}Cannot find $knoppix_dir dir in ISO image ${MAGENTA}${BOOTDEV}${YELLOW}/${BOOTFILE}${NORMAL} " 

VRAIMENT? Qui sur terre fait que le message d'erreur utilise une variable clairement distincte de la condition?

D'accord, au less, je connais la ligne exacte du problème (591) mais la seule façon dont je vois est une tentative très hackeuse de gâcher avec ce bash et hardcode pour me laisser passer … Ou pour définir ma partition en question à sda. Et bien sûr, je ne sais pas encore comment faire. Yay! Alors. Comment puis-je éditer init ?

Il s'avère que le script d'initialisation dans initramfs de knoppix est du code spaghetti.

En particulier, il était codé en dur de n'accepter que les périphériques au format /dev/sdxy ce qui causait des problèmes avec les paths d'access plus longs et l'UUID.

Je viens de faire un nouvel initrd, couper cette section entière et codé en dur mon UUID en elle. Bien sûr, ce n'est pas si facile. Knoppix initrd est si petit qu'il n'a pas de choses comme blkid ou la possibilité de monter par UUID= .

J'ai fini par find le file de périphérique avec fdisk et grep:

 message "${CRE}${RED}This minitrt has been hacked by Jonathan Vollebregt due to the horrific state of the knoppix init. You are about to see a very dirty hack.${NORMAL} " echo "Hardcoded identifier awaits: Using fdisk and partition details to match device" echo "grepping '/dev/sd.5.+4096.+57935871.+28965888.+83.+Linux'" BOOTDEV=`fdisk -lu` BOOTDEV=`echo "$BOOTDEV" | grep -E "^/dev/sd.5.+4096.+57935871.+28965888.+83.+Linux$"` BOOTDEV=`echo "$BOOTDEV" | grep -o "^/dev/sd.5"` if [ -z "$BOOTDEV" ]; then echo "Well shit..." sleep 1m fi echo "Device file: $BOOTDEV" echo "mkdir -p /mnt-hack" mkdir -p "/mnt-hack" echo "mount -t ext4 -o ro $BOOTDEV /mnt-hack" mount -t ext4 -o ro "$BOOTDEV" "/mnt-hack" BOOTFILE="/${BOOTFROM#*/}" echo "Ssortingpping also reveals: /$BOOTFILE" echo "mount -t iso9660 -o ro /mnt-hack/$BOOTFILE $BOOTSYS" mount -t iso9660 -o ro "/mnt-hack/$BOOTFILE" "$BOOTSYS" echo "knoppix_dir=$knoppix_dir" echo "BOOTSYS=$BOOTSYS" 

La partition en question est assez unique en taille, donc je doute que j'aurai une collision de sitôt.