[Toybox] Booting a toybox system

ibid.ag at gmail.com ibid.ag at gmail.com
Sat Dec 21 21:26:04 PST 2013


I did some testing on what it took to get a minimal toybox system to boot,
autoload modules, and connect to the network (manually).

I'm testing in qemu with user networking; the ethernet drivers are built 
as modules (pcnet32.ko/e1000.ko).

Instead of building a root filesystem, I'm just using the initrd as a 
live filesystem.
I create bin/, dev/, proc/, sys/, var/run/, var/log/, lib/modules/, lib/dhcp/,
tmp/, and mnt/. sbin can be a symlink to bin.
toybox gets dropped in bin/ and all the necessary symlinks created.

Modules get installed in /lib/modules/$KERNRELEASE/kernel/, as they would
ordinarily; I then run in the project root:
/sbin/depmod -b . $KERNRELEASE
rm lib/modules/*/*.bin lib/modules/modules.{softdep,devname}
#extract any files I need
#create the initrd:
find ./|cpio -o -H newc |gzip -9c >../tbinitrd.img

And that's ready for qemu.


In qemu, I configure the network like so:
ifconfig eth0 up
dhcp -v -s /lib/dhcp/set.sh

Hope this is helpful to someone,
Isaac Dunham


Commands needed:
Other programs:
pdksh (as /bin/sh)

>From toybox:
#boot
init
mount # hacked version of Ashwini Sharma's last version; all probably work
mkdir # for /dev/pts
getty # I used mine
login # if you use pdksh directly, you don't need getty or login

#autoload modules; no, the kernel doesn't seem to do this...
find
cat
xargs
resolve_modalias # mine; because modprobe -q isn't quiet (optional)
modprobe         #v2 from Ashwini

#networking
ifconfig
dhcp
route

#testing
ftpget  # from Ashwini with my patch, to test network
echo
env
ls
lsmod

#shutdown
sync
umount
kill
killall
poweroff # optional if you send the right signal to init

Scripts:

/init: (devtmpfs is not automounted from the initrd!)
#!/bin/sh
mount -t devtmpfs dev /dev
exec toybox init

/etc/fstab (simplifies rcS)
/etc/inittab (not needed with Ashwini's getty)
/etc/init.d/rcS (autostart at boot)
/lib/dhcp/set.sh

Files for user accounts...
/etc/passwd
/etc/shadow
/etc/group
/etc/profile
-------------- next part --------------
A non-text attachment was scrubbed...
Name: tb-bootscripts.cpio.bz2
Type: application/octet-stream
Size: 1426 bytes
Desc: not available
URL: <http://lists.landley.net/pipermail/toybox-landley.net/attachments/20131221/d47213cd/attachment.obj>


More information about the Toybox mailing list