All Debian boot messages

How can the messages that scroll by when booting a Debian system be reviewed later?

In other words, how can I review absolutely all of them conveniently? That's the important point to the question; merely a subset of them is insufficient.

Some boot time messages are written only to /var/log/daemon.log and /var/log/syslog, where I have seen messages like: udevd[240]: SYSFS{}= will be removed in a future udev version.

In squeeze, these are not in /var/log/dmesg. Nor are they in /var/log/boot with setting BOOTLOGD_ENABLE=yes in /etc/default/bootlogd and package bootlogd installed.

For more details on rsyslogd's various logging locations see your /etc/rsyslog.conf.


Solution 1:

The boot messages come in two parts: those that come from the kernel (loading drivers, detecting partitions, etc) and those that come from the services starting up ([ OK ] Starting Apache...). The kernel messages are stored in /var/log/kern.log and can also be accessed from the kernel's own log buffer with the dmesg program.

The userspace messages are not stored anywhere unless you install the bootlogd package. It will log the service startup messages in /var/log/boot Note if you have the "fancy" boot messages (the colored [ OK ] [FAIL] etc messages), it will log the terminal escape codes in the file. You can disable the fancy boot messages by creating an /etc/lsb-base-logging.sh shell script which defines FANCYTTY=0 in it.

Solution 2:

Bootup messages pass by so fleetingly that, for some, one might not be sure what they say. You may wish to check all the files where they might be logged, in addition to the usual (well-known) log files, for verification purposes (at least).

On Debian, logs generally are kept in directory /var/log.

After booting, what changed there today (which files) can be seen in the Bash shell by:

sudo ls -ld --sort=time `sudo find /var/log -type f -daystart -ctime 0 | sed -r 's/^.*\.([0-9]+|old|gz)$//g'`

The scrolling output may contain interesting strings like 'will be removed'. Here's how to find them:

sudo grep -ilF 'will be removed' `sudo find /var/log -type f -daystart -ctime 0 | sed -r 's/^.*\.([0-9]+|old|gz)$//g' | sort` > log-list; sudo nano `cat log-list`

Boot-time logging can be enabled by:

apt-get install bootlogd

and edit /etc/default/bootlogd to contain

BOOTLOGD_ENABLE=yes

Unfortunately, bootlogd seems unavailable on squeeze.

For color information, see here.

Solution 3:

I know it sounds silly, but when none of the other options work and you're desperate, you can grab your phone and record your screen as it boots and then play back the video at reduced speed to review them.

This is not a good solution if you want to programmatically check your boot messages, but if you see an error during booting and you want to diagnose it, this solution works fine.