Page suivantePage précédenteTable des matières

8. Créez les scripts de démarrage du système

Ces scripts sont lancés au démarrage du système et sont responsables de diverses tâches comme, par exemple, monter le système de fichiers en lecture/écriture, activer le swap, régler quelques paramètres systèmes et lancer divers démons dont le système a besoin.

8.1 Préparer les répertoires et les fichiers principaux

Dans cette section vous avez besoin du paquetage Sysvinit.

 cd /etc
 mkdir rc0.d rc1.d rc2.d rc3.d rc4.d rc5.d rc6.d init.d rcS.d

 #!/bin/sh
 # Begin /etc/init.d/rcS
 runlevel=S
 prevlevel=N
 umask 022
 export runlevel prevlevel
 trap ":" INT QUIT TSTP
 for i in /etc/rcS.d/S??*
 do
 [ ! -f  "$i" ] && continue;
 $i start
 done
 # End /etc/init.d/rcS

8.2 Créer le script de redémarrage reboot

 #!/bin/sh
 # Begin /etc/init.d/reboot
 echo -n "System reboot in progress..."
 /sbin/reboot -d -f -i
 # End /etc/init.d/reboot

8.3 Créer le script d'arrêt halt

 #!/bin/sh
 # Begin /etc/init.d/halt
 /sbin/halt -d -f -i -p
 # End /etc/init.d/halt

8.4 Créer le script mountfs

#!/bin/sh
# Begin /etc/init.d/mountfs
check_status()
{
 if [ $? = 0 ]
 then
 echo "OK"
 else
 echo "FAILED"
 fi
}
echo -n "Remounting root file system in read-write mode..."
/bin/mount -n -o remount,rw /
check_status
> /etc/mtab
/bin/mount -f -o remount,rw /
echo -n "Mounting proc file system..."
/bin/mount proc
check_status
# End /etc/init.d/mountfs

8.5 Créer le script umountfs

#!/bin/sh
# Begin /etc/init.d/umountfs
check_status()
{
 if [ $? = 0 ]
 then
 echo "OK"
 else
 echo "FAILED"
 fi
}
echo "Deactivating swap..."
/bin/swapoff -av
check_status
echo -n "Unmounting file systems..."
/bin/umount -a -r
check_status
# End /etc/init.d/umountfs

8.6 Créer le script sendsignals

#!/bin/sh
# Begin /etc/init.d/sendsignals
check_status()
{
 if [ $? = 0 ]
 then
 echo "OK"
 else
 echo "FAILED"
 fi
}
echo -n "Sending all processes the TERM signal..."
/sbin/killall5 -15
check_status
echo -n "Sending all processes the KILL signal..."
/sbin/killall5 -9
check_status

8.7 Créer le script de démarrage checkroot

#!/bin/sh
# Begin /etc/init.d/checkroot
echo "Activating swap..."
/sbin/swapon -av
if [ -f /fastboot ]
then
 echo "Fast boot, no file system check"
else
 /bin/mount -n -o remount,ro /
 if [ $? = 0 ]
 then
 if [ -f /forcecheck ]
 then
 force="-f"
 else
 force=""
 fi
 echo "Checking root file system..."
 /sbin/fsck $force -a /
 if [ $? -gt 1 ]
 then
 echo
 echo "fsck failed. Please repair your file system manually by"
 echo "running fsck without the -a option"
 echo "Please note that the file system is currently mounted in"
 echo "read-only mode."
 echo
 echo "I will start sulogin now. CTRL+D will reboot your system."
 /sbin/sulogin
 /reboot -f
 fi
 else
 echo "Cannot check root file system because it is not mounted in"
 echo "read-only mode."
 fi
fi
# End /etc/init.d/checkroot

8.8 Créer le script de démarrage sysklogd

#!/bin/sh
# Begin /etc/init.d/sysklogd
check_status()
{
 if [ $? = 0 ]
 then
 echo "OK"
 else
 echo "FAILED"
 fi
}
case "$1" in
 start)
 echo -n "Starting system log daemon..."
 start-stop-daemon -S -q -o -x /usr/sbin/syslogd -- -m 0
 check_status
 echo -n "Starting kernel log daemon..."
 start-stop-daemon -S -q -o -x /usr/sbin/klogd
 check_status
 ;;
 stop)
 echo -n "Stopping kernel log daemon..."
 start-stop-daemon -K -q -o -p  /var/run/klogd.pid
 check_status
 echo -n "Stopping system log daemon..."
 start-stop-daemon -K -q -o -p /var/run/syslogd.pid
 check_status
 ;;
 reload)
 echo -n "Reloading system load daemon configuration file..."
 start-stop-daemon -K -q -o -s 1 -p /var/run/syslogd.pid
 check_status
 ;;
 restart)
 echo -n "Stopping kernel log daemon..."
 start-stop-daemon -K -q -o -p /var/run/klogd.pid
 check_status
 echo -n "Stopping system log daemon..."
 start-stop-daemon -K -q -o -p /var/run/syslogd.pid
 check_status
 sleep 1
 echo -n "Starting system log daemon..."
 start-stop-daemon -S -q -o -x /usr/sbin/syslogd -- -m 0
 check_status
 echo -n "Starting kernel log daemon..."
 start-stop-daemon -S -q -o -x /usr/sbin/klogd
 check_status
 ;;
 *)
 echo "Usage: $0 {start|stop|reload|restart}"
 exit 1
 ;;
esac
# End /etc/init.d/sysklogd

8.9 Créer les liens symboliques et fixer les permissions

chmod 755 rcS reboot halt mountfs umountfs sendsignals checkroot sysklogd
cd ../rc0.d
ln -s ../init.d/sysklogd K90sysklogd
ln -s ../init.d/sendsignals S80sendsignals
ln -s ../init.d/umountfs S90umountfs
ln -s ../init.d/halt S99halt
cd ../rc6.d
ln -s ../init.d/sysklogd K90sysklogd
ln -s ../init.d/sendsignals S80sendsignals
ln -s ../init.d/umountfs S90umountfs
ln -s ../init.d/reboot S99reboot
cd ../rcS.d
ln -s ../init.d/checkroot S05checkroot
ln -s ../init.d/mountfs S10mountfs
cd /etc/rc2.d
ln -s ../init.d/sysklogd S03sysklogd

8.10 Créer le fichier /etc/fstab

 /dev/<LFS-partition designation> / ext2 defaults 0 1
 /dev/<swap-partition designation> none swap sw 0 0
 proc /proc proc defaults 0 0


Page suivantePage précédenteTable des matières