Accueil

Booter une mandrake 10.1 sur USB depuis grub avec une mandrake 10.1 (ou distribution récente)


1) Booter sur USB depuis grub (distribution du disque interne = celle du disque USB)


requis :


#!/bin/sh

mkinitrd --preload=ehci-hcd --preload=usb-storage --preload=scsi_mod --preload=sd_mod \

/boot/usbinitrd.img `uname -r`

#ajouter une entrée dans grub

gru=/boot/grub/menu.lst

#sometimes it is grub.conf

echo " ">> $gru

echo "title usblinux" >>$gru

echo "kernel (hd0,0)/boot/vmlinuz root=/dev/sda1 acpi=on resume=/dev/sda6 \

splash=silent vga=788" >>$gru

echo "initrd (hd0,0)/boot/usbinitrd.img" >>$gru


  1. Booter sur USB depuis grub (distribution du disque interne diférente de celle du disque USB)


requis :


#!/bin/sh

#remplacer le nom du kernel

kernel-name=2.6.8.1-12mdk

#monter la partition sda1 sur /mnt/hdusb1

su

mount /dev/sda1 /mnt/hdusb1

#lie /dev de sda1 vers ceux de la distribution du disque interne

#(pour pouvoir faire tourner le programme mkinitrd "dans le chroot"

mount -o bind /dev /mnt/hdusb1/dev

chroot /mnt/hdusb1

mkinitrd --preload=ehci-hcd --preload=usb-storage --preload=scsi_mod --preload=sd_mod \

/boot/usbinitrd.img $kernel_name

exit

cp /mnt/hdusb1/boot/vmlinuz /boot/

cp /mnt/hdusb1/boot/usbinitrd.img /boot/

#ajouter une entrée dans grub

gru=/boot/grub/menu.lst

#sometimes it is grub.conf

echo " ">> $gru

echo "title usblinux" >>$gru

echo "kernel (hd0,0)/boot/vmlinuz root=/dev/sda1 acpi=on resume=/dev/sda6 \

splash=silent vga=788" >>$gru

echo "initrd (hd0,0)/boot/usbinitrd.img" >>$gru

#fin



  1. Boot sur CD d'une distribution sur un disque externe USB (distributions identiques)


requis


script :

#!/bin/sh
d="CD_boot"
rm -rf $d
mkdir $d
cp /usr/lib/syslinux/isolinux.bin $d
su
d="CD_boot"
#créer l'initrd permettant le boot sur disque USB
mkinitrd --preload=ehci-hcd --preload=usb-storage --preload=scsi_mod --preload=sd_mod $d/usbinitrd.img `uname -r`
#copier le kernel dans le dossier CD_boot

#créer le fichier isolinux.cfg
cfg=$d/isolinux.cfg
echo "default linux" > $cfg
echo "timeout 0" >> $cfg
echo "label linux" >> $cfg
echo " kernel vmlinuz" >> $cfg
echo " append initrd=initrd.img root=/dev/sda1" >> $cfg
cp /boot/vmlinuz-`uname -r` $d/vmlinuz
#créer l'image iso
mkisofs -o boot_USB.iso -b isolinux.bin -c boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table $d
echo "vous pouvez graver l'image iso boot_USB.iso"
echo "cdrecord dev=ATAPI:0,0,0 blank=fast"
echo "cdrecord dev=ATAPI:0,0,0 boot_USB.iso"


  1. Boot sur CD d'une distribution sur un disque externe USB (distributions différentes)


Not already tested!


prerequisites :


script (to be run as root) :


#!/bin/sh

#replace the kernel name

kernel-name=2.6.8.1-12mdk

#mount partition /dev/sda1 on /mnt/hdusb1

su

mkdir /mnt/hdusb1

mount /dev/sda1 /mnt/hdusb1

#link /mnt/hdusb1/dev to /dev of

#(in order to be able to run "mkinitrd in the chrooted environment")

mount -o bind /dev /mnt/hdusb1/dev

chroot /mnt/hdusb1

mkinitrd --preload=ehci-hcd --preload=usb-storage --preload=scsi_mod --preload=sd_mod \

/boot/usbinitrd.img $kernel_name

exit

#needs syslinux (tested with version 1.76)

d="CD_boot"

rm -rf $d

mkdir $d

cp /usr/lib/syslinux/isolinux.bin $d

cp /mnt/hdusb1/boot/vmlinuz $d

cp /mnt/hdusb1/boot/usbinitrd.img $d

#copy kernel (vmlinuz) and initrd file in CD_boot directory

cp /mnt/hdusb1/boot/vmlinuz $d

cp /mnt/hdusb1/boot/usbinitrd.img $d/

#create file isolinux.cfg

#assuming kernel file is in isolinux/vmlinuz

#and initrd in file isolinux/initrd.img

cfg=$d/isolinux.cfg


echo "default linux" > $cfg

echo "timeout 0" >> $cfg

echo "label linux" >> $cfg

echo " kernel vmlinuz" >> $cfg

echo " append initrd=usbinitrd.img root=/dev/sda1" >> $cfg

mkisofs -o boot_USB.iso -b isolinux.bin -c boot.cat -no-emul-boot -boot-load-size 4 \

-boot-info-table $d

echo "you can now burn your iso image boot_USB.iso on your CD"

echo "cdrecord dev=ATAPI:0,0,0 blank=fast"

echo "cdrecord dev=ATAPI:0,0,0 boot_USB.iso"


5) paufiner son initrd (en cas de cagade au démarrage)




#!/bin/sh

# creéer le initrd initial and le monter avec l'option "loop"

mkinitrd --preload=ehci-hcd --preload=usb-storage --preload=scsi_mod –preload=sd_mod \

initrd.img `uname -r`

#unzip initrd.zip

mv initrd.img initrd.gz

gunzip initrd.gz

d1=/tmp/initrd

rm -rf $d1

mkdir $d1

mount -o loop initrd $d1

# taille de l'initrd (Mo)

size=8

#directory

d2=/tmp/initrd_custom

rm -rf $d2

mkdir $d2

dd if=/dev/zero of=initrd_vide bs=1024k count=$size > /dev/null 2>&1

mke2fs -F -m 0 -q -b 1024 initrd_vide

mount -t ext2 -o loop initrd_vide $d2

#copy the initrd

cp -rf $d1/* $d2

#put in everything else needed...

#in this case I didn't need to add other things

# programme sleep is sometimes needed

#ldd /bin/sleep tells librairies needed by sleep

#if sleep should be run at some step linuxrc file have to be edited

#cp /lib/modules/`uname -r`/kernel/fs/ext3/ext3.ko.gz $d2/lib

#gunzip -f $d2/lib/ext3.ko.gz

#cp /lib/modules/`uname -r`/kernel/fs/jbd/jbd.ko.gz $d2/lib

#gunzip -f $d2/lib/jbd.ko.gz

#cp -f /sbin/nash $d2/bin

#cp -f /sbin/udev $d2/bin

#cp -f /sbin/udevstart $d2/bin


# unmout and zip..

sync

sync

umount $d1

umount $d2

mv initrd_empty initrd_full

gzip -9 initrd_full

mv initrd_full.gz /boot/initrd_full.img