~thc
  
 
  
 
 
Group: Members 
Posts: 42 
Joined: Dec. 2005 | 
  | 
Posted: Feb. 21 2007,20:26 | 
   | 
 
 
  
use extreme caution: several steps mentioned below could ruin your pendrive and/or your harddisk DO NOT COPY AND PASTE COMMANDS - double check what you are doing! I have tested this with a 2 gb pendrive (fat16) / knoppix 5.1.1 and a 512 mb pendrive (fat32) / dsl 2.1.
  the filenames, directoriy names and grub settings used below are only examples!
  what you need
  - an usb pendrive of any size formatted as a hard disk - the first or only partition of this pendrive formatted with a fat filesystem and enough space left for dsl/knoppix - the contents of a dsl (or other knoppix based) cd - a real or virtual computer running a linux installation with grub and usb pendrive support - a pc bios capable of emulating a hard disk booting mechanism for the usb pendrive
  step by step
  1. copy the following dsl/knoppix files to the usb pendrive
   (cd)/KNOPPIX/KNOPPIX -> (usb)/KNOPPIX/KNOPPIX  (cd)/boot/isolinux/kernel_filename -> (usb)/boot/linux  (cd)/boot/isolinux/gzipped_miniroot_filename -> (usb)/boot/minirt.gz
  [starting with knoppix 5 the cd contains essential kernel modules in /KNOPPIX/modules - you will need this directory and all files in it too.]
  2. convert isolinux.cfg from the dsl/knoppix cd
  create a new text file (dos or un*x) namend menu.lst and add those three lines:
 
 | Code Sample  |   default 0  timeout 5  color cyan/blue white/blue |  
 
  the syntax of the boot entries in (cd)/boot/isolinux/isolinux.cfg and grub's menu.lst differ slightly.
  for every dsl/knoppix isolinux.cfg boot entry like this example
 
 | Code Sample  |   LABEL  example  KERNEL linux24  APPEND ramdisk_size=100000 init=/etc/init lang=us apm=power-off vga=791 initrd=minirt24.gz quiet BOOT_IMAGE=knoppix |  
 
  add the corresponding boot entry to menu.lst like this converted example:
 
 | Code Sample  |   title  example  kernel /boot/linux ramdisk_size=100000 init=/etc/init lang=us apm=power-off vga=791 quiet BOOT_IMAGE=knoppix  initrd /boot/minirt.gz |  
 
  another example: a menu.lst file containing only the default dsl 2.1 entry would look like this:
 
 | Code Sample  |   default 0  timeout 5  color cyan/blue white/blue
   title dsl  kernel /boot/linux ramdisk_size=100000 init=/etc/init lang=us apm=power-off vga=791 nomce noapic quiet BOOT_IMAGE=knoppix  initrd /boot/minirt.gz |  
 
  create a directory (usb)/boot/grub. copy the file menu.lst to (usb)/boot/grub
  3. prepare the grub install
  boot the linux installation and mount your usb pendrive (sda1 and /mnt are only examples!)
 
 | Code Sample  |  |  # mount /dev/sda1 /mnt |  
 
  copy the grub stage loader files from the linux installation to the stick
 
 | Code Sample  |   # cp /boot/grub/stage1 /mnt/boot/grub  # cp /boot/grub/fat_stage1_5 /mnt/boot/grub  # cp /boot/grub/stage2 /mnt/boot/grub |  
 
  mark the usb grub directory by putting a unique file there:
 
 | Code Sample  |  |  # touch /mnt/boot/grub/mark |  
 
  4. install grub
  start grub from the command line.
 
 
  from the grub shell enter the following commands (hd1 and the grub output are only examples!):
 
 | Code Sample  |   grub> find /boot/grub/mark   (hd1,0)
   grub> root (hd1,0)   Filesystem type is fat, partition type 0xe
   grub> setup (hd1)   Checking if "/boot/grub/stage1" exists... yes   Checking if "/boot/grub/stage2" exists... yes   Checking if "/boot/grub/fat_stage1_5" exists... yes   Running "embed /boot/grub/fat_stage1_5 (hd1)"...  15 sectors are embedded.  succeeded   Runnung "install /boot/grub/stage1 (hd1) (hd1)1+15 p (hd1,0)/boot/grub/stage2  /boot/grub/menu.lst"... succeeded  Done.
   grub> quit |  
 
  the file "mark" is no longer needed:
 
 | Code Sample  |   # rm /mnt/boot/grub/mark  # umount /mnt |  
 
  the stick should now boot into grub.
  goodies
  - grub's stage 1.5 loader reads file systems, not hard disk sectors - you don't have to worry about the geometry or the size of your pendrive.
  - grub's setup does not alter neither the boot sector of the first (or only) pendrive partition nor the contents of that partition. [the stage 1.5 loader is written to 15 (normally empty and unused) sectors directly following the mbr/partition table.]
  - if bartpe is (or will be ;) ) installed on your pendrive, you can tell grub to boot it by adding to menu.lst:
 
 | Code Sample  |   title bartpe  chainloader +1 |    
 |