NAME | SYNOPSIS | DESCRIPTION | NETWORK INITIALIZATION | DEVICE INITIALIZATION | EXAMPLES | FILES | ATTRIBUTES | SEE ALSO
/image/sys_bank/sysadm.ini
sysadm.ini is scanned by C_INIT
in order to execute the commands in sysadm.ini at boot time. Thus, sysadm.ini is generally used to initialize file and network devices. sysadm.ini is itself embedded in the system image and is read from the /image/sys_bank directory.
All C_INIT
commands such as mkdev, mknod, ifconfig, route and mount may be included in sysadm.ini. Commands may also run any executables included in the system image at build time, using the syntax:
sysadm.ini may therefore be adapted to perform all initialization required by applications.
The following list shows the network interfaces that can be set up using the mkdev command. Each interface configured corresponds to a structure maintained by the IOM
component.
Ethernet interface
loopback interface
tty interface
SLIP interface
PPP interface
BSD packet filter interface.
Where N is a digit, such as 0, 1, 2, and so forth.
Note that only ifeth and tty interfaces connect directly to hardware devices (in this case, Ethernet and serial lines, respectively). ppp and sl interfaces rely on a tty interface for the serial line, and bpf and lo interfaces are logical.
The following list shows the file and network devices you can set up using the mknod command. Each interface you configure corresponds to a node embedded in the system image and visible in the /dev directory after system initialization.
IDE disk, block access
IDE disk, raw access
RAM disk, block access
RAM disk, raw access
flash disk, block access
flash disk, raw access
SCSI disk, block access
SCSI disk, raw access
tty, raw access
pseudo-tty, slave
pseudo-tty, master
BSD packet filter device
Where N is a digit, such as 0, 1, 2, ..., and M is a digit, such as 1, 2, 3, ..., and X is a single letter referring to a partition, such as a, b, ..., h.
An example sysadm.ini file is provided below.
mkdev ifeth 0 /pci/epic100
The first argument is the interface name. The second argument identifies the unit number. The real interface name is obtained by concatenating the two -- ifeth0 in this case.
The third argument identifies the hardware device you want to connect to the interface. The third argument is not mandatory. If you type:
mkdev ifeth 0
mkdev takes the first hardware device available in the device tree.
mkdev lo 0
The loopback interface is logical, so it does not depend on hardware. Therefore, the mkdev command does not require a device tree pathname. The result is a lo0 interface.
Note that this example
First, set up a tty device managing the second target serial port (the first one is used for the tip line):
mkdev tty 0 #mkdev tty 0 /pci/pci-isa/ns16550-2 # x86, Pentium #mkdev tty 0 /raven/w83c553/ns16550-2 # PowerPC
Next, set up a PPP network interface:
mkdev ppp 0
The ppp0 interface is bound later to a tty device by the PPP manager. Therefore mkdev does not require a device tree pathname.
Finally, set up one or several pseudo devices so that the PPP daemon can access the tty and configure it for PPP. Use mknod for this. Start by creating a node to access the tty:
mknod /dev/tty01 c 0 0
which is sufficient for normal PPP daemon mode. However, if you use the dial-up on demand options of PPP, you need the so-called pseudo-ttys configured as follows:
mknod /dev/ttyp0 c 5 0 mknod /dev/ptyp0 c 6 0
which are used by PPP to detect when IP traffic occurs, before it has actually configured the tty interface.
Once all the devices and interfaces are set up, you can execute various network administration commands to initialize your network. The following list provides brief descriptions of the most important methods. See the man pages for details.
The simplest method. Caution is recommended however, as picking a wrong IP address can cause network problems. ifconfig directly sets up the interface, host address, netmask and broadcast address.
rarp obtains the IP address of the target from a RARP server, and then executes ifconfig. Therefore, you do not need to add an ifconfig in sysadm.ini.
In order to use RARP, set the ADMIN_RARP
and BPF
features to true. You also need to set up a bpf device:
mkdev bpf 0 mknod /dev/bpf0 c 23 0
dhclient enables you to obtain your IP address as well as other parameters such as routing and masks using the DHCP protocol. To use dhclient, you must set the BPF
feature to true, include dhclient.r in the system image, and include the following in sysadm.ini:
mkdev bpf 0 mknod /dev/bpf0 c 23 0 arun /image/sys_bank/dhclient ifeth0 & ifwait ifeth0
You must run dhclient in the background, using &, to prevent C_INIT
from being blocked. ifwait allows you to wait for the interface to be UP. This is important because dhclient
may run for a long time before obtaining an IP address. Unless you use ifwait, subsequent commands may execute on an unconfigured network.
As does RARP, dhclient executes the ifconfig command itself. Do not forget to ask your system administrator to add an entry for the target to the DHCP server database so that the target receives replies to DHCP requests.
Once all the devices and network interfaces are set up, you can mount a root file system to access actors that would not fit or that you did not want to include in the system image. The following example mounts an NFS file system located on the system with IP address, 123.45.67.89:
# dhclient built into the system image arun /image/sys_bank/dhclient ifeth0 & ifwait ifeth0 mount 123.45.67.89:/export/ChorusOS/root / arun /bin/myactor # my actor is on the host
# set umask to 0 during system configuration umask 0 # # First build the interfaces you need using the mkdev(1M) command. # All interfaces require a unit number. For bpf and tty, this number # also corresponds to the device minor. Thus, a # mkdev tty 0 # corresponds to a # mknod /dev/tty01 major 0 # # Some interfaces, such as Ethernet and tty, also require an # associated hardware device. # # Ethernet mkdev ifeth 0 # loopback interface mkdev lo 0 # If you need a tty for a serial line, note that the first device # Is reserved for a tip(1) line. As the mkdev(1M) command uses the # first free device it finds, it is not necessary to specify the # device, however. # #mkdev tty 0 #mkdev tty 0 /pci/pci-isa/ns16550-2 # x86, Pentium #mkdev tty 0 /raven/w83c553/ns16550-2 # PowerPC # If you want SLIP and/or PPP ifnets, #mkdev sl 0 #mkdev ppp 0 # rarp(1M) needs bpf. The unit number corresponds to the device minor. mkdev bpf 0 mkdev bpf 1 # # Next, build all the nodes for accessing devices. # # 0: Raw tty devices mknod /dev/tty01 c 0 0 #mknod /dev/tty02 c 0 1 # 1: reserved for local console # 2: pseudo devs. mknod /dev/mem c 2 0 mknod /dev/kmem c 2 1 mknod /dev/null c 2 2 mknod /dev/zero c 2 3 # 3: ST506/ESDI/IDE disk 0 mknod /dev/rhd0a c 3 0 mknod /dev/rhd0b c 3 1 mknod /dev/rhd0c c 3 2 mknod /dev/rhd0d c 3 3 mknod /dev/rhd0e c 3 4 mknod /dev/rhd0f c 3 5 mknod /dev/rhd0g c 3 6 mknod /dev/rhd0h c 3 7 # 3: ST506/ESDI/IDE disk 1 mknod /dev/rhd1a c 3 8 mknod /dev/rhd1b c 3 9 mknod /dev/rhd1c c 3 10 mknod /dev/rhd1d c 3 11 mknod /dev/rhd1e c 3 12 mknod /dev/rhd1f c 3 13 mknod /dev/rhd1g c 3 14 mknod /dev/rhd1h c 3 15 # 4: ST506/ESDI/IDE disk 0 mknod /dev/hd0a b 4 0 mknod /dev/hd0b b 4 1 mknod /dev/hd0c b 4 2 mknod /dev/hd0d b 4 3 mknod /dev/hd0e b 4 4 mknod /dev/hd0f b 4 5 mknod /dev/hd0g b 4 6 mknod /dev/hd0h b 4 7 # 4: ST506/ESDI/IDE disk 1 mknod /dev/hd1a b 4 8 mknod /dev/hd1b b 4 9 mknod /dev/hd1c b 4 10 mknod /dev/hd1d b 4 11 mknod /dev/hd1e b 4 12 mknod /dev/hd1f b 4 13 mknod /dev/hd1g b 4 14 mknod /dev/hd1h b 4 15 # 5: ptys mknod /dev/ttyp0 c 5 0 mknod /dev/ttyp1 c 5 1 # 6: ptys mknod /dev/ptyp0 c 6 0 mknod /dev/ptyp1 c 6 1 # 7: Flash Memory mknod /dev/rflash0a c 7 0 mknod /dev/rflash0b c 7 1 mknod /dev/rflash0c c 7 2 # 8: Flash Memory mknod /dev/flash0a b 8 0 mknod /dev/flash0b b 8 1 mknod /dev/flash0c b 8 2 # 9: SCSI disk mknod /dev/rsd0a c 9 0 mknod /dev/rsd0b c 9 1 mknod /dev/rsd0c c 9 2 mknod /dev/rsd0d c 9 3 mknod /dev/rsd0e c 9 4 mknod /dev/rsd0f c 9 5 mknod /dev/rsd0g c 9 6 mknod /dev/rsd0h c 9 7 #10 available for SCSI disk block mknod /dev/sd0a b 10 0 mknod /dev/sd0b b 10 1 mknod /dev/sd0c b 10 2 mknod /dev/sd0d b 10 3 mknod /dev/sd0e b 10 4 mknod /dev/sd0f b 10 5 mknod /dev/sd0g b 10 6 mknod /dev/sd0h b 10 7 # 11-12: reserved for the boot RAM disk for archive # 13: RAM disk mknod /dev/rrd0a c 13 0 mknod /dev/rrd0b c 13 1 mknod /dev/rrd0c c 13 2 # 14: RAM disk mknod /dev/rd0a b 14 0 mknod /dev/rd0b b 14 1 mknod /dev/rd0c b 14 2 #15-16 : available for cdrom # 23: BPF mknod /dev/bpf0 c 23 0 mknod /dev/bpf1 c 23 1 # set umask to default value after system configuration umask 22 # # Initialize the network. # # Using ifconfig #ifconfig ifeth0 YOUR.TARGET.IP.ADDRESS netmask 0xffff0000 broadcast 129.157.255.255 # Using rarp(1M) (requires ADMIN_RARP(5FEA) and BPF(5FEA) features) rarp ifeth0 # Using DHCP (requires BPF(5FEA) feature) # # This also requires that the dhclient(1M) actor be built into the # system image. # #arun /image/sys_bank/dhclient ifeth0 & ## wait for ifeth0 to be UP #ifwait ifeth0 # Other interfaces ifconfig lo0 127.0.0.1 up # Print network interface status to the console. ifconfig -a # start the Applicative Debug Server from NFS #arun /bin/rdbc # start the Applicative Debug Server from the system image #arun -xip /image/sys_bank/rdbc # # Additional initialization commands # #console rshd #mount YOUR.HOST.IP.ADDRESS:/PATH-TO-TARGET-ROOT-FILESYSTEM /
/image/sys_bank/sysadm.ini
See attributes(5) for descriptions of the following attributes:
ATTRIBUTE TYPE | ATTRIBUTE VALUE |
---|---|
Interface Stability | Evolving |
NAME | SYNOPSIS | DESCRIPTION | NETWORK INITIALIZATION | DEVICE INITIALIZATION | EXAMPLES | FILES | ATTRIBUTES | SEE ALSO