Wie usplash beenden und Konsole anzeigen?

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
gunknown
Beiträge: 17
Registriert: 25.05.2006 20:28:11

Wie usplash beenden und Konsole anzeigen?

Beitrag von gunknown » 07.07.2008 20:29:45

Hi,

in folgendem Ausschnitt der /etc/init.d/checkroot.sh wird irgendwann der boot screen beendet und man landet in der konsole und schaut fsck beim arbeiten zu. Allerdings kann ich nicht erkennen welche Zeile bzw. welcher Befehl dafür verantwortlich ist. Theoretisch müsste es ja etwas mit usplash zutun haben.
Oder hat es einen anderen Grund dass der screen beendet wird?

Die Frage ist jedenfalls wie man in einem script das boot screen (usplash) beendet und die konsolenansicht in den vordergrund ruft.

Code: Alles auswählen

        if [ "$rootcheck" = yes ]
        then
                if [ -f /forcefsck ]
                then
                        force="-f"
                else
                        force=""
                fi
 
                if [ "$FSCKFIX" = yes ]
                then
                        fix="-y"
                else
                        fix="-a"
                fi
 
                spinner="-C"
                case "$TERM" in
                  dumb|network|unknown|"")
                        spinner="" ;;
                esac
                # This Linux/s390 special case should go away.
                if [ "${KERNEL}:${MACHINE}" = Linux:s390 ]
                then
                        spinner=""
                fi
 
                if [ "$VERBOSE" = no ]
                then
                        log_action_begin_msg "Checking root file system"
                        if [ "$roottype" = "ext2" -o "$roottype" = "ext3" ] && pidof usplash; then
                            PROGRESS_FILE=`mktemp -p /var/run` || PROGRESS_FILE=/var/run/checkroot_fsck
                            set -m
                            logsave -s $FSCK_LOGFILE fsck -C3 $force $fix -t $roottype $rootdev >/dev/console 2>&1 3>$PROGRESS_FILE &
                            set +m
                            usplash_progress "$PROGRESS_FILE"
                            rm -f $PROGRESS_FILE
                        else
                            logsave -s $FSCK_LOGFILE fsck $spinner $force $fix -t $roottype $rootdev
                            FSCKCODE=$?
                        fi
                        if [ "$FSCKCODE" = 0 ]
                        then
                                log_action_end_msg 0
                        else
                                log_action_end_msg 1 "code $FSCKCODE"
                        fi
                else
                        log_action_msg "Will now check root file system"
                        logsave -s $FSCK_LOGFILE fsck $spinner $force $fix -V -t $roottype $rootdev
                        FSCKCODE=$?
                        if [ "$FSCKCODE" = 0 ]
                        then
                                log_success_msg "Done checking root file system.
A log will be saved in ${FSCK_LOGFILE} if that location is writable."
                        else
                                log_failure_msg "Root file system check failed with error code ${FSCKCODE}.
A log is being saved in ${FSCK_LOGFILE} if that location is writable."
                        fi
                fi
        fi

Benutzeravatar
Natureshadow
Beiträge: 2157
Registriert: 11.08.2007 22:45:28
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Radevormwald
Kontaktdaten:

Re: Wie usplash beenden und Konsole anzeigen?

Beitrag von Natureshadow » 08.07.2008 15:32:27

Der verantwortliche Code beginnt bei Zeile 27. Allerdings glaube ich, dass es eine eigenmächtige Entscheidung von usplash ist, in den Verbose-Modus zu wechseln. Es wäre nämlich auch denkbar, dass die Ausgabe stattdessen in ein eigenes kleines "Fenster" innerhalb des Silent-Splashs geschrieben wird.

Explizit wird der Splash-Modus in diesem Skript jedenfalls nciht beendet. Wenn der usplash Daemon allerdings schon läuft, kannst du ihm mit usplash_write Befehle schicken, z.B.:

Code: Alles auswählen

# usplash beenden und Konsole wiederherstellen
usplash_write QUIT

# In den Verbose-Mode wechseln
usplash_write VERBOSE on
Siehe "man 8 usplash_write".

Grüße,
Nik

Antworten