TIP Utiliser les runlevels

Un article de Gentoo Linux Wiki.

Cet article fait partie des Trucs et Astuces.

Terminaux / Shells CD Live X Portage Système Systèmes de fichier Autres


L'objectif est de pouvoir choisir au démarrage de l'OS de démarrer les services que l'on désire. Je trouve ça particulièrement intéressant sur les portables. Cela permet de choisir si l'on veut démarrer avec X, ou avec le réseau wifi ou bien le réseau filaire.

Voici comment j'ai défini mes runlevels :

  • 0 : arrêt du systeme
  • 1 : single
  • 2 : nonetwork
  • 3 : ethernet (avec le réseau filaire et sans X)
  • 4 : nowifi (avec X et le reseau filaire)
  • 5 : default (avec X et Wifi )
  • 6 : reboot

Pour faire cela, nous allons créer et paramétrer les différents runlevels. Il faut créer les répertoires 'ethernet' et 'nowifi' dans '/etc/runlevels/'. Les autres modes existent déjà.

cd /etc/runlevels/
mkdir ethernet
mkdir nowifi

En suite, nous devons activer les services que nous désirons dans les différents runlevels. Pour voir tous ceux qui sont activés dans le runlevel 'default', utilisez la commande rc-status :

# rc-status default

Runlevel: default
  sshd                                                              [ started ]
  local                                                             [ started ]
  vixie-cron                                                        [ started ]
  domainname                                                        [ started ]
  metalog                                                           [ started ]
  esound                                                            [ started ]
  splash                                                            [ started ]
  netmount                                                          [ started ]
  hotplug                                                           [ started ]
  alsasound                                                         [ started ]
  xdm                                                               [ started ]
  net.wlan0                                                         [ started ]

Pour configurer le runlevel 'ethernet', nous allons remplacer le service net.wlan0 par net.eth0 et nous ne mettrons pas le service xdm.

rc-update add sshd ethernet
rc-update add local ethernet
rc-update add vixie-cron ethernet
rc-update add domainname ethernet
rc-update add metalog ethernet
rc-update add esound ethernet
rc-update add splash ethernet
rc-update add netmount ethernet
rc-update add hotplug ethernet
rc-update add alsasound ethernet
rc-update add net.eth0 ethernet

Pour configurer le runlevel 'nowifi', nous allons faire la même chose que pour le mode ethernet. Mais nous ajouterons aussi le service xdm.

rc-update add sshd nowifi
rc-update add local nowifi
.....
.....
rc-update add net.eth0 nowifi
rc-update add xdm nowifi

Voilà nos runlevels sont configurés. Il nous faut maintenant les associér à leur numéro de runlevel. Pour cela, éditez le fichier /etc/inittab pour qu'il ressemble à ceci :

.....
.....
l0:0:wait:/sbin/rc shutdown 
l1:S1:wait:/sbin/rc single
l2:2:wait:/sbin/rc nonetwork
l3:3:wait:/sbin/rc ethernet
l4:4:wait:/sbin/rc nowifi
l5:5:wait:/sbin/rc default
l6:6:wait:/sbin/rc reboot
#z6:6:respawn:/sbin/sulogin
.....
.....

Il ne nous reste plus qu'à configurer le chargeur de boot, pour qu'il nous donne le choix du runlevel au démarrage. Voici un exemple pour grub :

timeout 30
splashimage=(hd0,4)/boot/grub/splash.xpm.gz
default 0
fallback 1

title  GNU/Linux (default)
root (hd0,4)
kernel /boot/bzImage root=/dev/hda5 vga=791 5
initrd=/boot/initrd-gentoo-1024x768

title  GNU/Linux X et reseau filaire (nowifi)
root (hd0,4)
kernel /boot/bzImage root=/dev/hda5 vga=791 4
initrd=/boot/initrd-gentoo-1024x768

title  GNU/Linux reseau filaire (ethernet)
root (hd0,4)
kernel /boot/bzImage root=/dev/hda5 vga=791 3
initrd=/boot/initrd-gentoo-1024x768

Pour lilo, vous devez ajouter le numéro du runlevel dans le champ append.

append="vga=791 4"