Constructie

Er is veel typwerk te doen in deze paragraaf vanwege alle opstartscripts die moeten worden aangemaakt. Met behulp van een muis de tekst uit deze handleiding kopiëren en deze in een teksteditor plakken kan je veel tijd besparen.

Maak een GRUB configuratiebestand aan

Doe de diskette met het label "bootdisk" in het diskettestation en mount het.

bash# mount /dev/fd0 /mnt
bash# cd /mnt/boot/grub

Gebruik je favoriete teksteditor voor het aanmaken van het volgende bestand en sla het op als /mnt/boot/grub/menu.lst:

default 0
timeout 3
title Pocket Linux Boot Disk
kernel (fd0)/boot/vmlinuz root=/dev/fd0 load_ramdisk=1 prompt_ramdisk=1

Installeer sysvinit utility's

Download de laatste broncode van sysvinit van ftp://ftp.cistron.nl/pub/people/miquels/software/

bash# cd /usr/src/sysvinit-2.85/src
bash# make CC="gcc -mcpu=i386"
bash# cp halt init shutdown ~/fasen/sbin
bash# ln -s halt ~/fasen/sbin/reboot
bash# ln -s init ~/fasen/sbin/telinit
bash# mknod ~/fasen/dev/initctl p

Opmerking

Omwille van de snelheid slaan we de stappen voor het controleren van library's en het strippen van binary's over. De library vereisten voor sysvinit zijn zeer minimaal en de Makefile is zo geconfigureerd dat het automatisch de binary's stript.

Maak een /etc/inittab bestand aan

Gebruik een teksteditor voor het aanmaken van het volgende bestand en sla het op als ~/fasen/etc/inittab

# /etc/inittab - init daemon configuratiebestand
#
# Standaardrunlevel
id:1:initdefault:
#
# Systeeminitialisatie
si:S:sysinit:/etc/init.d/rc S
#
# Runlevel scripts
r0:0:wait:/etc/init.d/rc 0
r1:1:respawn:/bin/sh
r2:2:wait:/etc/init.d/rc 2
r3:3:wait:/etc/init.d/rc 3
r4:4:wait:/etc/init.d/rc 4
r5:5:wait:/etc/init.d/rc 5
r6:6:wait:/etc/init.d/rc 6
#
# einde /etc/inittab

Maak een /etc/init.d/rc script aan

Gebruik een teksteditor om het volgende bestand aan te maken en sla het op als ~/fasen/etc/init.d/rc

#!/bin/sh
#
# /etc/init.d/rc - script voor het wijzigen van het runlevel
#
PATH=/sbin:/bin
SCRIPT_DIR="/etc/rc$1.d"
#
# Controleer of de rcN.d directory werkelijk bestaat.
if [ -d $SCRIPT_DIR ]; then
#
# Voer als eerste de kill scripts uit.
  for SCRIPT in $SCRIPT_DIR/K*; do
    if [ -x $SCRIPT ]; then
      $SCRIPT stop;
    fi;
  done;
#
# Doe als laatste de Start scripts.
  for SCRIPT in $SCRIPT_DIR/S*; do
    if [ -x $SCRIPT ]; then
      $SCRIPT start;
    fi;
  done;
fi
#
# einde /etc/init.d/rc

Maak het bestand uitvoerbaar.

bash# chmod +x ~/fasen/etc/init.d/rc

Pas het script /etc/init.d/local_fs aan

Een case statement is toegevoegd zodat het script, afhankelijk van het gegeven opdrachtregelargument, zowel de lokale bestandssystemen kan koppelen als ontkoppelen met respectievelijk de opdrachten mount en umount. Het originele script staat in het "start" deel van de case statement. Het "stop" gedeelte is nieuw.

#!/bin/sh
#
# local_fs - controleer en mount lokale bestandssystemen
#
PATH=/sbin:/bin ; export PATH

case $1 in

start)
echo "Checking integrity of local filesystems."
  fsck -ATCp
  if [ $? -gt 1 ]; then
  echo "Errors in filesystem! Manual intervention needed."
    /bin/sh
  else
  echo "Remounting as read-write."
    mount -n -o remount,rw /
    echo -n > /etc/mtab
    mount -f -o remount,rw /
    echo "Mounting local filesystems."
    mount -a -t nonfs,smbfs
  fi
;;

stop)
echo "Unmounting local filesystems."
  umount -a -r
;;

*)
  echo "gebruik: $0 start|stop";
;;

esac
#
# einde local_fs

Maak een hostname script aan

Gebruik een teksteditor voor het aanmaken van het volgende script en sla het op als ~/fasen/etc/init.d/hostname

#!/bin/sh
#
# hostname - stel de systeemnaam in op de naam opgeslagen in /etc/hostname
#
PATH=/sbin:/bin ; export PATH

echo "Instellen van de hostnaam."
if [ -f /etc/hostname ]; then
  hostname $(cat /etc/hostname)
else
  hostname gnu-linux
fi
#
# einde hostname

Maak halt & reboot scripts aan

Gebruik een teksteditor voor het aanmaken van ~/fasen/etc/init.d/halt zoals hieronder weergegeven.

#!/bin/sh
#
# halt - stop het systeem
#
PATH=/sbin:/bin ; export PATH

echo "Initiating system halt."
halt
#
# einde /etc/init.d/halt

Maak het volgende script aan en sla het op als ~/fasen/etc/init.d/reboot

#!/bin/sh
#
# reboot - herstart het systeem
#
PATH=/sbin:/bin ; export PATH

echo "Initiating system reboot."
reboot
#
# einde /etc/init.d/reboot

Maak alle scripts uitvoerbaar

bash# chmod +x ~/fasen/etc/init.d/*

Maak rcN.d directory's en links aan

bash# cd ~/fasen/etc
bash# mkdir rc0.d rc1.d rc2.d rc3.d rc4.d rc5.d rc6.d rcS.d
bash# cd ~/fasen/etc/rcS.d
bash# ln -s ../init.d/local_fs S20local_fs
bash# ln -s ../init.d/hostname S30hostname
bash# cd ~/fasen/etc/rc0.d
bash# ln -s ../init.d/local_fs K10local_fs
bash# ln -s ../init.d/halt K90halt
bash# cd ~/fasen/etc/rc6.d
bash# ln -s ../init.d/local_fs K10local_fs
bash# ln -s ../init.d/reboot K90reboot

Maak het rootdisk image aan

bash# cd /
bash# dd if=/dev/zero of=/dev/ram7 bs=1k count=4096
bash# mke2fs -m0 /dev/ram7 4096
bash# mount /dev/ram7 /mnt
bash# cp -dpR ~/fasen/* /mnt
bash# umount /dev/ram7
bash# dd if=/dev/ram7 of=~/fase5-image bs=1k
bash# gzip -9 ~/fase5-image

Kopieer het image naar diskette

Doe de diskette met het label "rootdisk" in station fd0.

bash# dd if=~/fase5-image.gz of=/dev/fd0 bs=1k