On Fri, Sep 10, 2010 at 07:29:01AM -0400, David Relson wrote: > On Fri, 10 Sep 2010 11:05:12 +0200 > J. Roeleveld wrote: > > > On Friday 10 September 2010 10:43:30 Jake Moe wrote: > > > On 10/09/2010 5:27 PM, Maciej Grela wrote: > > > > 2010/9/10 Jake Moe<jakesaddr...@gmail.com>: > > > >> Hello all, > > > >> > > > >> I've been thinking about creating a Gentoo USB stick for install > > > >> and rescue purposes (and, of course, just to see if I could). > > > >> I've mostly followed the Gentoo handbook (I used a single 4GB > > > >> partition for the whole system, and no swap). I've used > > > >> genkernel for the kernel (so I can have a multi-system capable > > > >> kernel). I've gotten GRUB installed and working. My problem > > > >> comes in after what I believe is the init process: > > > >> > > > >> > > > >> Gentoo Linux; http://www.gentoo.org > > > >> > > > >> Copyright 1999-2009 Gentoo Foundation; Distributed under the > > > >> GPLv2 > > > >> > > > >> Press I to enter interactive boot mode > > > >> > > > >> * Mounting proc > > > >> at /proc ... [ > > > >> > > > >> ok ] > > > >> > > > >> * Mounting sysfs > > > >> at /sys ... [ > > > >> > > > >> ok ] > > > >> > > > >> * > > > >> Mounting /dev ... [ > > > >> > > > >> ok ] > > > >> > > > >> * Starting > > > >> udevd ... [ > > > >> > > > >> ok ] > > > >> > > > >> * Populating /dev with existing devices through > > > >> uevents ... [ > > > >> > > > >> ok ] > > > >> > > > >> * Waiting for uevents to be > > > >> processed ... [ > > > >> > > > >> ok ] > > > >> > > > >> * Mounting devpts > > > >> at /dev/pts ... [ > > > >> > > > >> ok ] > > > >> > > > >> * Checking root filesystem ... > > > >> > > > >> fsck.ext2: No such file or directory while trying to > > > >> open /dev/sda1 /dev/sda1: > > > >> The superblock could not be read or does not describe a correct > > > >> ext2 filesystem. If the device is valid and it really contains > > > >> an ext2 filesystem (and not swap or ufs or something else), then > > > >> the superblock > > > >> > > > >> is corrupt, and you might try running e2fsck with an alternate > > superblock: > > > >> e2fsck -b 8193<device> > > > >> > > > >> * Filesystem couldn't be > > > >> fixed :( [ > > > >> > > > >> !! ] > > > >> Give root password for maintenance > > > >> (or type Control-D to continue): > > > >> > > > >> > > > >> If I give the root password, I can find no /dev/sda1. However, > > > >> mount shows /dev/sda1 on /, and there *is* a /sys/block/sda > > > >> folders, with a sda1 folder in that as well. It's almost like > > > >> it had /dev/sda1, but then lost it somehow. > > > >> > > > >> Does anyone have any idea what's going on here? Any help would > > > >> be appreciated. > > > > > > > > Have you seen http://www.sysresccd.org/Main_Page ? It's based on > > > > Gentoo, you could check what they did to boot from a usb stick. > > > > > > > > Br, > > > > Maciej Grela > > > > > > Excellent, thanks for that, I hadn't found it in my previous > > > searches. I'll have a look there. > > > > > > Jake Moe > > > > Had a similar issue a while ago when I was playing around with this > > myself. > > > > Take a look at the linux boot parameters. > > > > The 'theoretical' part is: You need to let the kernel initialize the > > USB-stick before trying to access it. (This can take some time) > > > > There is a delay-option, just can't remember the proper name off-hand. > > > > -- > > Joost > > I've got USB booting working in a syslinux environment. A delay of 12 > seconds is working for me. The syslinux.cfg stanza I use is: > > LABEL usb > KERNEL linux > APPEND rootdelay=12 root=/dev/sda2
The usual way for linux on removable usb sticks / disks is to use LABEL or UUID to identify the disks and not the device names, because they will be different in different computers ;) The downside is that you need an initrd to mount the root partition... I think that the usual initrd generated by genkernel works... If you created the rootfs with: mkfs.ext2 -j -LUSBGentoo /dev/sdXY then you can change the kernel parameter to root=LABEL=USBGentoo and your fstab to: LABEL=USBGentoo / ext3 ... You can also use the uuid of the filesystem, find it out with dumpe2fs -h /dev/sdb2 | grep UUID and then use UUID=XXX instead of LABEL=XXX I never really played around with grub and USB booting, so I use syslinux. I create a small FAT partition with syslinux, kernel and initrd image (it gets also pretty handy when you sometimes need to copy something from a windows machine ;) and a second "regular" ext3 partition for the rootfs. Basically you would do: - partition the stick, mark the FAT partition as bootable/active - format the partitions: - mkfs.vfat -nUSBData /dev/sdX1 - mkfs.ext2 -j -LUSBGentoo /dev/sdX2 - install syslinux (on the FAT partition): - syslinux /dev/sdX1 - mount /dev/sdX2, install gentoo in the usual way - compile the kernel and initrd, make sure required USB stuff is in the kernel (theoretically it could be as modules in initrd... but in-kernel is safer :) if you are in a hurry, or don't know how to create them, get them from a gentoo livecd ;) don't forget to also copy the modules (/lib/modules-XXX/...) from the livecd to the rootfs. - put the kernel and initrd on the FAT partition (I name them vmlinuz.img and initrd.img) - edit syslinux.cfg (on the FAT partition), see http://syslinux.zytor.com/wiki/index.php/SYSLINUX#How_do_I_Configure_SYSLINUX.3F a very simple one from my USB disk: DEFAULT linux LABEL linux SAY Now booting USBGentoo KERNEL vmlinuz.img APPEND root=LABEL=USBGentoo initrd=initrd.img you might also add rootdelay=10 to the options if the usb stick/disk isn't detected quick enough umount, reboot, set the computer to boot from usb, enjoy... ;) Xorg without a config seems to work pretty well on most computers these days, IIRC the alsa modules for soundcards are also autoloaded, so you don't need any fancy hw detection to have a desktop running from USB stick ;) yoyo BTW there is also a "manual" way to boot even without an initrd: use LABEL=XXX in your fstab, on the kernel command line use root=/dev/sda2 (or whatever you think will be more probable on you machines ;) then try to boot it, if it is wrong, you can enter the corrent "root=/dev/sdX2" param in the syslinux prompt (you can either look up the correct device in the boot messages, or just try sda, sdb, sdc, ... ;) You could also create menu options for the usual cases... (sda...sdf shoud be more than enough... ;) You can however accidentally mount a rootfs from one of the disks on the computer and thus booting the system on the computer, just with your kernel...