From: Jake Moe <jakesaddress@gmail.com>
To: gentoo-user@lists.gentoo.org
Subject: Re: [gentoo-user] Booting Gentoo from USB stick
Date: Thu, 16 Sep 2010 08:03:27 +1000 [thread overview]
Message-ID: <4C9142AF.3060603@gmail.com> (raw)
In-Reply-To: <20100915101013.GC9603@ksp.sk>
On 15/09/10 20:10, YoYo Siska wrote:
> On Wed, Sep 15, 2010 at 08:34:33AM +1000, Jake Moe wrote:
>> On 15/09/10 04:28, YoYo Siska wrote:
>>> 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<jakesaddress@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:
>>>>>>>> * 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...
>>>
>>>
>>>
>>>
>> Thanks for that. I originally tried with "LABEL=UsbRoot" in both
>> GRUB and fstab, but it couldn't find it, so I put it in a system
>> that I'd pulled the hard drive from, so I could test if it'd work
>> with /dev/sda instead. Neither method works; it just doesn't seem
>> to see the USB storage in /dev. When I try by label, I get what's
>> in the attached error.
>>
>> I've had a quick look at SYSLINUX (and it's counterpart, EXTLINUX),
>> and it appears to really be nothing more than another bootloader
>> like LILO or GRUB. Is that the case? If so, I might try and
>> overwrite GRUB with EXTLINUX and see if that works; it appears that
>> it should be that easy. Most of the USB booting doco I can find
>> seems to want SYSLINUX anyway; maybe I'll give it a try. I had
>> thought that a USB storage device is storage like anything else, so
>> a "standard" install should work. Maybe it doesn't...
> Yes, syslinux is just another "bootloader" ;) It his however
> specifically created for removable disks. I don't know how exactly grub
> works and how it handles "removable" disk (ie when the disk appears at
> different places) when finding devices for its root partition and the
> root option for kernel...
>
>> Jake Moe
>>>> Activiating mdev
>>>> Determining root device...
>> /init: line 477: blkid: not found\
> seems like your initrd is missing the blkid program (used to determine
> the labels and uuids of disks...)
> Looking at the genkernel help it seems to ethis option:
> --disklabel Include disk label and uuid support in your
> ramdisk
>
>> !! Could not find the root block device in LABEL=UsbRoot.
>> Please specify another value or: press Enter for hte same, type "shell" for a
>> shell, or "q" to skip...
>> root block device(LABEL=UsbRoot) :: /dev/sda1
>>>> Mounting root...
>>>> Booting (initramfs)..
>> INIT: version 2.87 booting
>>
>> Gentoo Linux; http://www.gentoo.org/
>> Copyright 1999-2009 Gentoo Foundation; Distributed under teh 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: Unable to resolve 'LABEL=UsbRoot'
> This means fsck was unable to find the filesystem with that label.
> You can use dumpe2fs /dev/yourpartition to check if the filesystem
> really has the cooret label (look for "Filesystem volume name" at the
> top)
>
>> * Filesystem couldn't be fixed :( [ !! ]
>> Give root password for maintenance
>> (or type Control-D to continue):
> yoyo
>
Thanks for that, I'll rebuild the genkernel with blkid support.
As to the second suggestion, there is *no* /dev/sda1 (the partition in
question). It just doesn't exist for some reason. However, fstab shows
that it's mounted, and /sys/block has entries for the disk, so I'm not
sure why it's dropped out. I'm guessing it has something to do with
udevd, or uevents? Because shortly before that, I tell it to find the
root partition at /dev/sda1, and it starts to boot, but then it loses it.
Jake Moe
next prev parent reply other threads:[~2010-09-15 22:08 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-09-10 5:09 [gentoo-user] Booting Gentoo from USB stick Jake Moe
2010-09-10 7:27 ` Maciej Grela
2010-09-10 8:43 ` Jake Moe
2010-09-10 9:05 ` J. Roeleveld
2010-09-10 11:29 ` David Relson
2010-09-14 18:28 ` YoYo Siska
2010-09-14 22:34 ` Jake Moe
2010-09-15 10:10 ` YoYo Siska
2010-09-15 22:03 ` Jake Moe [this message]
2010-09-15 22:18 ` Al
2010-09-15 22:43 ` Jake Moe
2010-09-15 23:04 ` Al
2010-09-16 0:21 ` Jake Moe
2010-09-16 11:08 ` Al
2010-09-15 22:26 ` Dale
2010-09-15 22:34 ` Jake Moe
2010-09-16 6:22 ` J. Roeleveld
2010-09-16 10:01 ` Jake Moe
2010-09-16 11:30 ` J. Roeleveld
2010-09-21 5:35 ` Jake Moe
2010-09-21 7:26 ` J. Roeleveld
2010-09-22 4:36 ` Jake Moe
2010-09-22 7:02 ` Al
2010-09-22 8:57 ` Jake Moe
2010-09-22 7:16 ` J. Roeleveld
2010-09-22 9:13 ` Jake Moe
2010-09-22 11:23 ` J. Roeleveld
2010-09-10 10:51 ` Al
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4C9142AF.3060603@gmail.com \
--to=jakesaddress@gmail.com \
--cc=gentoo-user@lists.gentoo.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox