[systemd] bloque mon boot
Publié : mar. 17 juil. 2012, 00:54
Bonsoir,
J'ai voulu essayer systemd. Plus précisément, après une mise à jour de plymouth-git, qui m'a mis systemd en tant que dépendance, mon ordi a cessé de s'éteindre correctement (j'ai un étrange écran avec le logo d'Arch Linux que je n'avais jamais vu avant, qui freeze sur le message "Deactivating encrypted volumes", m'obligeant à éteindre de force), alors j'ai voulu en profiter pour "migrer" vers systemd, en suivant les indications du wiki. En particulier, j'ai pris soin d'éditer
En redémarrant mon ordi (j'avais toujours le même freeze évoqué plus haut), j'ai constaté que le thème BURG était tout cassé (j'avais un écran bleu avec une jauge rouge ASCII en bas de l'écran) et je suis tombé sur une ligne de commande de secours.
Après un redémarrage, BURG était encore moche, mais j'ai pu retrouver Gnome ; retour à la case départ, donc, et mon ordi ne s'éteint toujours pas correctement... Que faire ?
Pour référence, voici mon ficher /etc/rc.shutdown :
J'ai voulu essayer systemd. Plus précisément, après une mise à jour de plymouth-git, qui m'a mis systemd en tant que dépendance, mon ordi a cessé de s'éteindre correctement (j'ai un étrange écran avec le logo d'Arch Linux que je n'avais jamais vu avant, qui freeze sur le message "Deactivating encrypted volumes", m'obligeant à éteindre de force), alors j'ai voulu en profiter pour "migrer" vers systemd, en suivant les indications du wiki. En particulier, j'ai pris soin d'éditer
/etc/default/burg
(et de régénérer le fichier de config de BURG) en modifiant une ligne ainsi :Code : Tout sélectionner
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash init=/bin/systemd"
startx
ne fonctionnant pas, j'ai dû utiliser nano pour rectifier la ligne que j'avais modifié dans /etc/default/burg
et en retirant le "init=/bin/systemd
".Après un redémarrage, BURG était encore moche, mais j'ai pu retrouver Gnome ; retour à la case départ, donc, et mon ordi ne s'éteint toujours pas correctement... Que faire ?
Pour référence, voici mon ficher /etc/rc.shutdown :
Code : Tout sélectionner
#!/bin/bash
#
# /etc/rc.shutdown
#
. /etc/rc.conf
. /etc/rc.d/functions
# avoid staircase effect
stty onlcr
echo " "
printhl "Initiating Shutdown..."
echo " "
run_hook shutdown_start
[[ -x /etc/rc.local.shutdown ]] && /etc/rc.local.shutdown
stop_all_daemons
status 'Saving Random Seed' /usr/lib/systemd/systemd-random-seed save
[[ $TIMEZONE ]] && status "Configuring Time Zone" set_timezone "$TIMEZONE"
# Write to wtmp file before unmounting
halt -w
# stop monitoring of lvm2 groups before unmounting filesystems
[[ $USELVM = [Yy][Ee][Ss] && -x $(type -P lvm) ]] &&
status "Deactivating monitoring of LVM2 groups" vgchange --monitor n
# any future uevents can and should be ignored
status "Shutting down UDev" udevadm control --exit
run_hook shutdown_prekillall
kill_all
run_hook shutdown_postkillall
run_hook shutdown_preumount
# unmount any non-api partitions that are backed by swap, we don't want to
# move their contents into memory (waste of time and might caues OOM).
status "Unmounting Swap-backed Filesystems" umount_all "tmpfs"
# almost everything is dead now, so the swap should hopefully be relatively
# empty, and quick to switch off
status "Deactivating Swap" swapoff -a
status "Unmounting Non-API Filesystems" umount_all
run_hook shutdown_postumount
# Kill non-root encrypted partition mappings
if [[ -f /etc/crypttab ]] && type -p cryptsetup >/dev/null; then
stat_busy "Deactivating encrypted volumes"
# Maybe someone has LVM on an encrypted block device
# executing an extra vgchange is errorless
[[ $USELVM = [Yy][Ee][Ss] ]] && vgchange --sysinit -a n &>/dev/null
do_lock() {
stat_append "${1}.."
if cryptsetup remove "$1" &>/dev/null; then
stat_append "ok "
else
stat_append "failed "
fi
}
read_crypttab do_lock
stat_done
fi
[[ $USELVM = [Yy][Ee][Ss] && -x $(type -P lvm) ]] &&
status "Deactivating LVM2 groups" vgchange --sysinit -a n &>/dev/null
run_hook shutdown_poweroff
if [[ -x /run/initramfs/shutdown ]]; then
# decide what we want to do
if [[ $RUNLEVEL = 0 ]]; then
action="poweroff"
else
{ read kexec_loaded </sys/kernel/kexec_loaded; } 2>/dev/null
if (( kexec_loaded )); then
action="kexec"
else
action="reboot"
fi
fi
# make /run/initrafs a mount
mount --bind /run/initramfs /run/initramfs
# in case someone has shared our mountpoints, unshare them
mount --make-private /run/initramfs
mount --make-private /
# bind all api mounts
mkdir -p /run/initramfs/{sys,proc,dev,run,oldroot}
mount --bind /sys /run/initramfs/sys
mount --bind /proc /run/initramfs/proc
mount --bind /dev /run/initramfs/dev
mount --bind /run /run/initramfs/run
# enter shutdownramfs
cd /run/initramfs
pivot_root . oldroot
#reexec init
/oldroot/sbin/init u
# run /shutdown in the new root
exec chroot . /shutdown $action </dev/console >/dev/console 2>&1
else
status "Remounting Root Filesystem Read-only" \
mount -o remount,ro /
# Power off or reboot
printsep
if [[ $RUNLEVEL = 0 ]]; then
printhl "${C_H2}POWER OFF"
poweroff -d -f -h -i
else
printhl "${C_H2}REBOOTING"
# if kexec is installed and a kernel is loaded, use it
[[ -x $(type -P kexec) ]] && kexec -e &>/dev/null
reboot -d -f -i
fi
fi
# End of file
# vim: set ts=2 sw=2 noet: