From: Helmut Hullen on
Hallo, Joseph,

Du meintest am 19.04.08:

>> I need some possibility to boot a machine via "initrd" and telling
>> "initrd" another "root device" than the pre-installed device in the
>> "initrd".

> I have a solution that I use that I think would meet your needs. As
> Alan said, it is not simple. It is like Frank's method, but you do
> not recompile busybox.

Looks fine, but it sounds like much additional work for me, "eternal"
additional work.

Ok - I can do this work (just the time I have to do it ...). But it
might be a better way (for me) if some other guy puts this option into
the official slackware script.

You need it, Frank needs it, I need it - maybe there are many other
people who also would appreciate this option.

Viele Gruesse
Helmut

"Ubuntu" - an African word, meaning "Slackware is too hard for me".

From: Joseph Rosevear on
Helmut Hullen <helmut(a)hullen.de> wrote:
> Hallo, Joseph,

> Du meintest am 19.04.08:

> >> I need some possibility to boot a machine via "initrd" and telling
> >> "initrd" another "root device" than the pre-installed device in the
> >> "initrd".

> > I have a solution that I use that I think would meet your needs. As
> > Alan said, it is not simple. It is like Frank's method, but you do
> > not recompile busybox.

> Looks fine, but it sounds like much additional work for me, "eternal"
> additional work.

> Ok - I can do this work (just the time I have to do it ...). But it
> might be a better way (for me) if some other guy puts this option into
> the official slackware script.

> You need it, Frank needs it, I need it - maybe there are many other
> people who also would appreciate this option.

> Viele Gruesse
> Helmut

> "Ubuntu" - an African word, meaning "Slackware is too hard for me".

Helmut,

I'm offering to show you how I do it.

You might find that it is worth the trouble.

-Joe
From: Helmut Hullen on
Hallo, Joseph,

Du meintest am 19.04.08:

>> I need some possibility to boot a machine via "initrd" and telling
>> "initrd" another "root device" than the pre-installed device in the
>> "initrd".


> I have a solution that I use that I think would meet your needs. As
> Alan said, it is not simple. It is like Frank's method, but you do
> not recompile busybox.

> I do it by making a boot disk (Joe's Boot Disk) which is a CD. This
> method also uses grub. This works well and is able to do what you
> said. You can put the disk into a machine and boot.

The way you describe is similar to my actual way.

First I use slackware's "mkinitrd" with a very long modules list to make
the first stage initrd (one of the options: "-c").

Then:

mkdir -p /tmp/initram
cd /tmp/initram
zcat /path/to/first_stage_initrd.gz | cpio -vim

Then I fill up the "dev" directory with the many other devices the disks
may need, p.e. "/dev/cciss/c0d0pxy".
Last step in this routine:

find . | cpio -o -H newsc | gzip > /path/to/final_dist_initrd.gz

And my self made kernel packages use (in the "install/doinst.sh" script)
the lines

# Root-Device

Pfad=boot/<new_kernel_version>

while read Device Mount Rest
do
case $Mount in
/)
Rootdev=$Device
;;
esac
done < etc/fstab

test "$Rootdev" || exit

(cd $Pfad; rdev bzImage $Rootdev)

test -s $Pfad/initrd.gz || exit

Pwd=$(pwd)
(cd $Pfad; mv --backup=t initrd.gz initrd.gz-alt)

mkdir -p tmp/initram
cd tmp/initram
zcat $Pwd/$Pfad/initrd.gz-alt | cpio -vim
echo $Rootdev > rootdev
find . | cpio -o -H newc | gzip > $Pwd/$Pfad/initrd.gz
cd $Pwd

#

----------------------

It works, but it's no nice way. Making the distribution initrd may be a
bit more comfortable - but it's no hard way.

The steps in the "install/doinst.sh" might be more comfortable. "rdev"
works fine and understandable. Some similar routine for invoking initrd
may make the install routine more simple and safe. And if I can tell the
needed parameters in "/etc/lilo.conf"or at the boot prompt life may be
nicer.

Viele Gruesse
Helmut

"Ubuntu" - an African word, meaning "Slackware is too hard for me".

From: Helmut Hullen on
Hallo, +Alan,

Du meintest am 17.04.08:

>> I need some possibility to boot a machine via "initrd" and telling
>> "initrd" another "root device" than the pre-installed device in the
>> "initrd".

[...]

> It's a very interesting problem, and I don't think anyone who has
> worked on mkinitrd has considered it before.

I've just looked into the way SuSE uses. Seems like SuSE's "initrd" can
read command line parameters and/or parameter files.

But the way seems to be more than strange ... the biggest obstacle:
parameter files are stored in "/lib/mkinitrd", one directory for all
the different parameters I might use for different kernels. I prefer a
configuration file (or directory) in the same directory where the
(special) initrd (and perhaps the special kernel) is stored.

Viele Gruesse
Helmut

"Ubuntu" - an African word, meaning "Slackware is too hard for me".

From: Vincent Batts on
On 2008-04-19, Helmut Hullen <helmut(a)hullen.de> wrote:
> Hallo, Joseph,
>
> Du meintest am 19.04.08:
>
>>> I need some possibility to boot a machine via "initrd" and telling
>>> "initrd" another "root device" than the pre-installed device in the
>>> "initrd".
>
>> I have a solution that I use that I think would meet your needs. As
>> Alan said, it is not simple. It is like Frank's method, but you do
>> not recompile busybox.
>
> Looks fine, but it sounds like much additional work for me, "eternal"
> additional work.
>
> You need it, Frank needs it, I need it - maybe there are many other
> people who also would appreciate this option.
>
> Viele Gruesse
> Helmut

as far as referring to suse, that is a *very* confusing process, and one
i wouldn't neccesarily recommend as a model, i think
it might have something to do with grub to, see the excerpt from a suse
boxes /boot/grub/menu.lst :
<paste>
title 2.6.18.2-34
root (hd0,3)
kernel (hd0,1)/vmlinuz-2.6.18.2-34-default root=/dev/sda4 vga=0x31A
resume=/dev/mapper/swap splash=verbose showopts
initrd (hd0,1)/initrd-2.6.18.2-34
</paste>
where root for this entry is sda4 and /boot is sda2, / is passed to the
bootloader and to the kernel

but when you mkinitrd on suse, the init configurations save the default
rootdev from the host system that built it, to use if nothing else is
passed to it from the bootloader and kernel command line



vb