Re: Creating an initrd - micro-howto
hi ya will
there is no initrd howto that i could find...
those docs i did find in google searches were out of date....
and incomplete in terms of getting a flash disk that you can boot
into /dev/ram0
-- lets assume that tomsrtbt is too small on the 1.77Mb floppy
and cdrom is too much hassle to make to boot into /dev/ram ???
we can take it offline to get you a working initrd
( am assumign you have another pc that we can debug it on
c ya
alvin
more expanded micro-initrd Flash howto ( from vague recollection of memory)
=======================================
am assuming you wanna boot from floppy or better if
booting from 4Mb flash to be on /dev/hda on the target
A1. Get a spare PC...
A2. boot it normally...
A3. install the kernel you wanna be using and compile it
and boot until you got the bootable kernel
A4. make a boot floppy
A5. boot the floppy.... if it works...good...now we can start
B0. Move things around so that you are using ONLY /dev/hdb for
your own development system
- use /dev/hda as your flash device on your cev box
and/or it will be the only disk on your target firewall
B1. change/update your kernel to support initrd
- turn on mimixfs
- turn on /dev/ram
- turn on /dev/loop ( better than /dev/ram ?? )
- you will be tweeking /dev/ram to support 8MB or 16Mb
since /lib/libc-2.* is how big ???
- /lib /boot /root /bin /sbin /etc must all fit in /dev/ram0
- keep playing with your kernel till you can
B2. make ANOTHER boot floppy....
- something you can play with
B3. make some ram devices
dd if=/dev/zero of=/dev/ram0 bs=1k count=8192
dd if=/dev/zero of=/dev/ram1 bs=1k count=8192
#
# you're gonna be tweek -i to cram more bytes into the ram device
#
mke2fs -m 0 -i 2000 /dev/ram0
mke2fs -m 0 -i 2000 /dev/ram1
mount /dev/ram0 /mnt/ram0
mount /dev/ram1 /mnt/ram1
B4. Start putting what is "required" to boot your server
into the initrd file
#
# make a script that does this
# ============================
#
#
# i forgot where mkinitrd puts its stuff
# - check your fs -- makes it easy
#
# - using mkinitrd helps solve some directory
# and copy problem but i forgot where it put stuff
#
# mkinitrd
#
-- lets do things the had way
#
# the boot FLOPPY that DOES work...
#
mount /dev/fd0 /mnt/floppy
=
= you should be able to see the guts of your boot floppy
=
#
# make some directories for /var/log /tmp
mkdir /mnt/ram0/tmp /mnt/ram0/usr/tmp
chmod 1777 /mnt/ram0/tmp /mnt/ram0/usr/tmp
...
mkdir /var/log
mkdir /var/run
mkdir /var/spool
....
#
# Copy the contents from the working bootable floppy
# to your new boot media that we gonna create
#
# remember the boot floppy assume /dev/hda1 or /dev/sda1
# for root... we are gonna use /dev/ram0
#
cp -par /mnt/floppy/bin /mnt/ram0/bin
cp -par /mnt/floppy/etc /mnt/ram0/etc
cp -par /mnt/floppy/dev /mnt/ram0/dev
cp -par /mnt/floppy/lib /mnt/ram0/lib
cp -par /mnt/floppy/boot /mnt/ram0/boot
cp -par /mnt/floppy/sbin /mnt/ram0/sbin
- fix /mnt/ram0/etc/fstab to point to /dev/hdaxx
....
be sure to add/copy your basic/favorite commands into /mnt/ram0:
bash, ls, ping, route, ifconfig, ps, top, dd,
mount, cp, mv, etc..etc..
#
# copy other non-critical, would be nice ot have commands
# into/mnt/ram1
#
#
# now lets create your initrd file
#
dd if=/dev/ram0 of=/tmp/initrd.test bs=1k
gzip /tmp/initrd.test.gz
#
dd if=/dev/ram1 of=/tmp/initrd.extra bs=1k
gzip /tmp/initrd.extra.gz
#
cp -p /tmp/initrd.test.gz /boot
cp -p /tmp/initrd.extra.gz /boot
#
# the kernel you want should already be in /boot
#
B5. Create a temporary lilo.Test.conf file
#
# Create a boot media that boots into /dev/ram0
#
#
# on the development machine, the flash is /dev/hda
#
boot=/dev/hda
#
map=/boot/map
install=/boot/boot.b
prompt
timeout=50
message=/boot/message
linear
#
# Create a bootable flash disk
#
image=/boot/vmlinuz-2.4.2
label=linux-2.4.2-FLASH
read-only
#
# the flash disk will be hda on the target firewall
root=/dev/hda1
#
initrd=/boot/initrd.test.gz
#
# end of file
# Run lilo.conf
#
lilo -C /etc/lilo.Test.conf
==
== the target flash disk should only need /boot/...stuff...
==
/boot/vmlinuz-2.4.2
/boot/initrd.test.gz
/boot/map
/boot/message
==
== take the flash to virgin PC... and boot it there
---------------------------------------------------
-- boot the flash ( on hda ) ... if it worked...
you'd have /dev/ram0 as your root partition
-- if it didnt boot....you're missing some required binaries
- go back to the development box and see whats missing
and add the missing binaries/libraries
have fun
alvin
On Tue, 8 May 2001, will trillich wrote:
> On Tue, May 08, 2001 at 08:32:01PM -0700, Alvin Oga wrote:
> > mkinitrd ...
> >
> > or take an existing initrd.gz file...decompress it
> > into /dev/ram or /dev/loop
> >
> > than change the kernel to your version, add your libs/commands
> > and other stuff you want in the initrd to make your system
> > bootable
> >
> > and compress that /dev/loop image into your_initrd.gz and add that
> > as your initrd image in lilo
> >
> > or so goes the simplified 3-line howto...
>
> um, point the way or name the doc, if you would.
>
> > either way...you need to make sure you have minixfs and /dev/ram enabled
> > in your kernel to be able to create initrd files
>
> eh?
>
> > i created a full system in about 2.5Mb that expands into 8-16Mb of
> > linux hierachy that runs in memory ( /dev/ramxx )
> > ( put that on a 4Mb flash and you've got a nice firewall ?? )
>
> ding ding ding! you've got my attention... that's almost
> precisely what i'd like to accomplish. can you do that with
> debian?
>
> > you can try tomsrtbt too but, its bash is too small as is its libraries
>
> do you have a more fleshed-out documentation trail of making a
> uncompress-onto-ramdisk-during-boot system?
>
> --
> DEBIAN NEWBIE TIP #3 from Will Trillich <will@serensoft.com>
> :
> Wondering how to find WHICH PACKAGE CONTAINS x-y-or-z? Just enter
> "dpkg -S part/of/path" and you'll get a list of all packages that
> affect paths like that. For an example, try "dpkg -S http".
>
> Also see http://newbieDoc.sourceForge.net/ ...
>
>
> --
> To UNSUBSCRIBE, email to debian-user-request@lists.debian.org
> with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org
>
Reply to: