[Voyage-linux] HowTo: Voyage Linux on a USB flash drive
Kim-man "Punky" TSE
(spam-protected)
Fri May 19 02:05:13 HKT 2006
Hi Damini,
I can create a account on alpha.voyage.hk so that you can upload your
files to it.
Reply to me privately if you want to upload your contribution there.
- Punky
Damini Mark wrote:
> Thanks Danny
>
> This is very useful for me. I am very glad this issue was raised and resolved.
>
> By the way I have made a custom kernel to support Raid 1-6 and 10, Broadcom GigE cards, Lager Block Devices and Qlogic Fiber Channel Cards. It works with Voyage-current and its Kernel 2.6.15. This custom kernel can also mount >2TB on a single LUN. Where can I upload this?
>
> Best Regards
> Marvin
> -----Original Message-----
> From: voyage-linux-bounces+dmark=berkcom.com at list.voyage.hk
> [mailto:voyage-linux-bounces+dmark=berkcom.com at list.voyage.hk]On Behalf
> Of Danny Adair
> Sent: Wednesday, May 17, 2006 8:56 PM
> To: voyage-linux at voyage.hk
> Subject: [Voyage-linux] HowTo: Voyage Linux on a USB flash drive
>
>
> Voyage Linux on USB flash drive
>
> Author: Danny W. Adair <danny at adair.net>
> Last Change: 18 May 2006
> ------------------------------------------------------------
>
>
> Voyage Linux won't work "on" USB storage devices out of the box.
> This is how I did get it working:
>
> --------------------
> Summary
> --------------------
> - We will make two partitions on the USB key, one for the boot loader
> and the kernel, one for the rest of the system. We need a separate
> partition for the kernel because of BIOS limitations (grub error 18
> someone?).
>
> - We'll get and unpack the current Voyage Linux distribution. It's got
> advantages over 0.2 and I hope it's going to be a stable release soon.
>
> - Voyage's "stock" kernel can't load the USB modules for mounting / to
> the second partition because that's a Catch-22: they're sitting on a
> USB drive partition! The solution is to recompile the kernel with this
> support built-in (hooray - we've got nothing better to do!): After
> recompiling the kernel and making a .deb package for it, we chroot
> into voyage on the host computer and install the new kernel.
>
> - We'll install voyage on the USB key, and it'll have our shiny new kernel.
>
> - We'll make minor adjustments to the installation on the USB key
> which the installation script currently doesn't do for us (Voyage
> seems to have its focus on Compact Flash drives, which are "real" IDE,
> and "hda" is assumed to be the target disk for voyage. We adjust that
> to "sda".
>
>
>
> ####################
> Make sure you do all this as root.
> ####################
>
>
> --------------------
> 1. Prepare USB key
> --------------------
> Make sure the right device driver is loaded: On my system EHCI was
> loaded instead of UHCI. Just rmmod ehci_hcd, modprobe uhci_hcd and
> then put the USB key in. The EHCI driver may look like it's working -
> if you get I/O errors, switch.
> a) Use fdisk or cfdisk to create one small bootable (make it at least
> 3MB, it needs to fit a kernel image) and one big (=rest) Linux
> partition.
> b) Create ext2 file systems on the partitions and turn off automated fsck:
> # mkfs.ext2 /dev/sda1
> # tune2fs -c 0 /dev/sda1
> # mkfs.ext2 /dev/sda2
> # tune2fs -c 0 /dev/sda2
> Your USB key is now ready for installation.
>
> --------------------
> 2. Download voyage and kernel source
> --------------------
> # mkdir ~/voyage-build
> # cd ~/voyage-build
> or whatever directory you would like to put this in
> # wget http://www.voyage.hk/download/voyage/voyage-current.tar.gz
> # wget http://www.voyage.hk/dists/unstable/kernel/kernel-source-2.6.15-voyage_3.0-1_all.deb
> # wget http://www.voyage.hk/download/kernel_config/config-2.6.15-486-voyage_3.0-1
> You now have all you need for the installation.
>
> --------------------
> 3. Recompile kernel for built-in USB storage support
> --------------------
> I assume you have all necessary packages (make, gcc, kernel-package,
> etc.) installed on your host computer.
> a) Install source and unpack:
> # dpkg -i ~/voyage-build/kernel-source-2.6.15-voyage_3.0-1_all.deb
> # cd /usr/src/
> # tar xjvf kernel-source-2.6.15-voyage.tar.bz2
> b) Copy the "stock" voyage kernel configuration to the source tree:
> # cd kernel-source-2.6.15-voyage
> # cp ~/voyage-build/config-2.6.15-486-voyage_3.0-1 .config
> c) Ensure all the necessary drivers will be built-in:
> # make menuconfig
> You can navigate with cursor keys, select with enter, one level up
> with escape.
> Make sure the following are included (marked as "*" by hitting 'y'):
> - Device Drivers -> USB support -> Support for Host-side USB
> - Device Drivers -> USB support -> UHCI HCD
> (or OHCI HCD depending on the controller on your target computer -
> hopefully even EHCI HCD (USB 2.0) - not in my case)
> - Device Drivers -> USB support -> USB Mass Storage support
> - Device Drivers -> SCSI device support -> legacy /proc/scsi/ support
> - Device Drivers -> SCSI device support -> SCSI disk support
> Escape out and say "yes" to save the new kernel configuration.
> c) Compile the new kernel as a debian package:
> # make-kpkg --revision="3.0USB" --append-to-version "-486-voyage"
> kernel-image
> You can change the revision string if you like, I just want to
> indicate what this kernel will (additionally) be for.
> Now this usually takes a while...
> d) A shiny new kernel package (in my case called
> "kernel-image-2.6.15.6-ubuntu1-486-voyage_3.0USB_i386.deb") should now
> be sitting in /usr/src/.
>
> --------------------
> 4. Unpack voyage
> --------------------
> a) # cd ~/voyage-build/
> # tar --numeric-owner -zxvf voyage-current.tar.gz
>
> --------------------
> 5. Install new kernel in voyage
> --------------------
> We will need to do the old chroot procedure (see "Manual
> Customizations" in the Voyage wiki).
> a) Copy the new kernel into voyage:
> # cp /usr/src/kernel-image-2.6.15.6-ubuntu1-486-voyage_3.0USB_i386.deb
> voyage-current/usr/src/
> b) Get voyage ready for changes:
> # cd voyage-current/
> # cp -r ro/* rw/
> # cd ..
> # chroot voyage-current/
> # mount -t proc none /proc
> c) Install the new kernel
> # dpkg -i /usr/src/kernel-image-2.6.15.6-ubuntu1-486-voyage_3.0USB_i386.deb
> - Say no to creating a boot floopy
> - Say no to booting Linux from the hard disk
> d) Leave the voyage "changes" environment:
> # umount /proc
> # exit
> e) To save space on the target, you can delete the kernel package from
> voyage now:
> # rm voyage-current/usr/src/kernel-image-2.6.15.6-ubuntu1-486-voyage_3.0USB_i386.deb
> NOTE: You're installing on a "fresh" key. Subsequent installations
> will change files differently. Shouldn't be too hard to figure out.
>
> --------------------
> 6. Install voyage on USB key, adjust parameters for USB
> --------------------
> Make sure your USB key is plugged in but not mounted.
> a) # cd ~/voyage-build/voyage-current
> b) Adjust the file system table of voyage: / will be mounted to sda2:
> # vi etc/fstab
> (vi or whatever editor you prefer)
> - Change "/dev/hda1" to "/dev/sda2" in the first line
> c) # mkdir /mnt/usbkey1
> # mkdir /mnt/usbkey2
> Or wherever you would like to temporarily mount the key for installation.
> We'll be working on two partitions (and will need to copy from one
> to the other) so I'm using two directories.
> /mnt/usbkey2 will be used now, /mnt/usbkey1 will be needed in (the
> last) step 7.
> d) # ./voyage_update
> Specify correct disk (/dev/sda), voyage partition (2 -> /dev/sda2),
> bootstrap partition (1 -> /dev/sda1),
> temporary mount point (/mnt/usbkey2), and module 5 "Generic PC".
> Choose grub instead of lilo.
> You should get some congratulations soon. :-)
> e) Adjust the grub parameters on the boot partition (I hope this will
> become part of the voyage_update script):
> # mount /dev/sda1 /mnt/usbkey1/
> # vi /mnt/usbkey1/grub/menu.lst
> (vi or whatever editor you prefer)
> - Change "kernel /vmlinuz root=/dev/hda2" to "kernel /vmlinuz
> root=/dev/sda2 rootdelay=10"
> - Change "root (hd0,1)" to "root (hd0,0)" - I think this is a bug
> in the voyage_update script (it puts the voyage instead of the
> bootstrap partition here).
> f) Provide a device map, so that grub knows what hd0 is in this case:
> # echo '(hd0) /dev/sda' > /mnt/usbkey1/grub/device.map
>
> --------------------
> 7. Copy kernel to boot partition
> --------------------
> We told grub that the kernel is at /vmlinuz, but it's on the other
> partition at the moment. Move the kernel over to the grub partition:
> a) /mnt/usbkey1 should still be mounted from the last steps, mount the
> voyage partition:
> # mount /dev/sda2 /mnt/usbkey2/
> b) Move the entire "boot" directory to the grub partition - we'll be
> booting from there:
> # mv /mnt/usbkey2/boot/ /mnt/usbkey1/
> c) Don't forget the symbolic link "/vmlinuz":
> # mv /mnt/usbkey2/vmlinuz/ /mnt/usbkey1/
> You might have to adjust the link to point to the new kernel:
> # cd /mnt/usbkey1
> # rm vmlinuz
> # ln -s boot/vmlinuz-2.6.15.6-ubuntu1-486-voyage vmlinuz
> # cd ..
> d) Done. Unmount the USB key partitions:
> # umount /dev/sda1
> # umount /dev/sda2
> e) Delete the "boot" directory from your host voyage so it doesn't get
> re-installed next time:
> # rm -R ~/voyage-build/voyage-current/boot/
>
> --------------------
> 8. Smile
> --------------------
> Put the key into the target computer and turn it on.
>
> a) If you're not happy, tell me.
> I'll put problems (and hopefully their solutions) in the following
> "Troubleshooting" section.
> b) If you're happy, tell others. :-)
>
> --------------------
> Troubleshooting
> --------------------
> wfm
>
> _______________________________________________
> Voyage-linux mailing list
> Voyage-linux at list.voyage.hk
> http://list.voyage.hk/mailman/listinfo/voyage-linux
>
> _______________________________________________
> Voyage-linux mailing list
> Voyage-linux at list.voyage.hk
> http://list.voyage.hk/mailman/listinfo/voyage-linux
>
--
Regards,
Punky
P U N K N ! X . c o m
Technology + Lifestyle
(http://www.punknix.com)
V O Y A G E . H K - http://www.voyage.hk
Linux - voyage-0.2 is released!
Store - Senao NMP-8602 Plus (400mW) is now in stock!
More information about the Voyage-linux
mailing list