Come in tutti i sistemi UNIX, Linux incluso, il primo programma a partire è init.
Dovendo tuttavia, un sistema embedded, essere un sistema estremamente semplice, il pacchetto baselayout non
ricrea un ambiente SystemV, caratterizzato dalle varie directory /etc/rc?.d.
Tutto infatti viene eseguito a livello di /etc/inittab, di cui adesso proponiamo un esempio.
Osservare i commenti:
# /etc/inittab
#
# Copyright (C) 2001 Erik Andersen <andersen@codepoet.org>
#
# Note: BusyBox init doesn't support runlevels. The runlevels field is
# completely ignored by BusyBox init. If you want runlevels, use
# sysvinit.
#
# Format for each entry: <id>:<runlevels>:<action>:<process>
#
# id == tty to run on, or empty for /dev/console
# runlevels == ignored
# action == one of sysinit, respawn, askfirst, wait, and once
# process == program to run
# Startup the system
# fa il check del filesystem hda1
console::sysinit:/sbin/fsck.ext2 -y /dev/hda1
# fa il check del filesystem hda1
console::sysinit:/sbin/fsck.ext2 -y /dev/hda2
# rimonta il file system di root in read-only
null::sysinit:/bin/mount -o remount,ro /
# monta il filesystem proc
null::sysinit:/bin/mount -t proc proc /proc
# monta tutto il resto
null::sysinit:/bin/mount -a
# setta l'hostname prendendo dal file
null::sysinit:/bin/hostname -F /etc/hostname
# configura l'interfaccia di loopback
null::sysinit:/sbin/ifconfig lo 127.0.0.1 up
# imposta la rotta per l'interfaccia di loopback
null::sysinit:/sbin/route add -net 127.0.0.0 netmask 255.0.0.0 lo
# attiva la interfaccia eth0 prendendo i dati dal file
null::sysinit:/sbin/ifconfig eth0 $(cat /etc/net.eth0) up
# configura il default gateway prendendo i dati dal file
null::sysinit:/sbin/route add default gw $(cat /etc/gateway)
# crea delle directory temporanee
null::sysinit:/bin/mkdir -p /tmp/var/log
null::sysinit:/bin/mkdir -p /tmp/var/run
null::sysinit:/bin/mkdir -p /tmp/var/tmp
# setta il layout di tastiera italiano
null::sysinit:/bin/loadkeys it
# carica un modulo del kernel (in questo caso quello del touchscreen)
null::sysinit:/sbin/modprobe touch
# now run any rc scripts
::sysinit:/etc/init.d/rcS
# Set up a couple of getty's
# setta due terminali
tty1::respawn:/sbin/getty 38400 tty1
tty2::respawn:/sbin/getty 38400 tty2
# Put a getty on the serial port
# configura un terminale seriale a 115200 bps
ttyS0::respawn:/sbin/getty -L ttyS0 115200 vt100
# Logging junk
# crea il file di log
null::sysinit:/bin/touch /var/log/messages
# avvia syslogd
null::respawn:/sbin/syslogd -n -m 0
null::respawn:/sbin/klogd -n
#tty3::respawn:/bin/tail -f /var/log/messages
# Stuff to do for the 3-finger salute
# se si preme ctrl-alt-canc effettua il reboot
::ctrlaltdel:/sbin/reboot
# Stuff to do before rebooting
# quello che c'e' da fare al reboot
# esegui questo script
null::shutdown:/etc/init.d/rcK
# killa syslogd e klogd
null::shutdown:/bin/killall klogd
null::shutdown:/bin/killall syslogd
# smonta tutti i file system
null::shutdown:/bin/umount -a -r
# questa riga e' commentata perche' nel nostro
# sistema non c'e' swap
#null::shutdown:/sbin/swapoff -a |
Non si tratta che del file
inittab del pacchetto baselayout, alla quale sono
state aggiunte delle personali modifiche.
Il file
/etc/net.eth0 deve contere:
<indirizzo_ip> netmask <netmask> |
mentre il file
/etc/gateway deve contenere l'ip del gateway.