Re: Specify devices manually in exotic environment

Denis Vlasenko
2006-08-23T08:31:29Z

On Tuesday 22 August 2006 21:26, Milan Hauth wrote:
> Hello there.
>
> Got a quite exotic environment here -- a Compaq Evo T20 thin client, which
> I want to run Linux on.
>
> But I'm not satisfied with a completely thin client, meaning that all the
> files are located on the server. What I want is the basic system to be
> located on the client, while the Unix System Resources, for example, are
> mounted from the server, since they're too big for 32MB of Flash memory.
>
> The problem I'm facing at the moment is the T20's BIOS, which doesn't seem
> to pass the device information correctly to the Kernel.

More info? What information is not passed?

> GRUB (v0.97) does
> work with a workaround, which can be found in the document [1] I followed
> to 'teach' Linux to the T20.
>
> I already tried to use /proc/sys/kernel/real-root-dev, but setting the
> root device to 0x80 (as already specified for GRUB) or 0x81 (1st partition
> of 0x80) did not seem to help.
>
> So, did I forget anything when building my Kernel? Or is it just another
> trick, I don't know yet?
>
> Hopefully someone here can help me on this one.. have been 'working' on my
> cute T20 for several months now.. :-\

I just pass two parameters to kernel on the commandline,
then I create needed node (in initrd):

mknod /dev/root b "$ROOTMAJ" "$ROOTMIN"

And then (still in initrd):

mount -n -o ro /dev/root /new_root
mount -n -t ramfs none /new_root/dev
cp -dp /dev/console /dev/null /new_root/dev
cd /new_root
# making sure we dont keep /dev busy
exec <dev/console >dev/console 2>&1
# proc/ in new root is used here as a temp mountpoint for old root
pivot_root . proc
exec chroot . sh -c 'umount -n /proc; exec /bin/env - /sbin/init'

and then proceed as usual (/dev will be populated by udev later)

For this to work you only need to know major/minor#.
--
vda