BootLogd

Revision 7 as of 2005-04-26 02:02:49

Clear message

UbuntuDevel/BootLogd

Status

Introduction

Preserve output from the system initialization process.

Rationale

Much useful information is discarded, especially due to early gdm startup, and later UbuntuDevel/USplash.

Scope and Use Cases

Implementation Plan

Data Preservation and Migration

Packages Affected

User Interface Requirements

Outstanding Issues

UDU BOF Agenda

  • What needs to be done in order to enable bootlogd?
  • Enable it and start fixing the bugs
  • How early should it be enabled? One of the suggestions (#272428) included starting bootlogd from initrd, so that everything gets logged.

UDU Pre-Work

  • Bootlogd is started (in debian) from S05 (after udev, mountvirtfs, and mdadm), and logs to /var/log/boot. The

(sysvinit) author considers it broken/experimental, and has disabled it by default.

  • Known problems include:
    • #205724: Since it runs before fsck, it logs all spinner changes. This causes huge logfiles, and slows down
      • fsck considerably since it fsyncs after every line/write. Joeyh proposed only writing upon newlines...
    • #237056: udev was not providing /dev/ttyzf, which bootlogd needs. This appears to no longer be the case; at
      • least w/ debian's udev_056-2 + 2.6.11, as well a hoary's udev (w/ 2.6.10), /dev/ttyzf is created.
    • #213028: bootlogd needs to not run while in single user mode, otherwise things like passwords, fsck, and
      • lots of unnecessary stuff end up getting logged to a world-writable log file.
    • direct logging of console requires a) figuring out what the console actually is (parsing kernel arg console=,
      • etc; pre-2.4, there was an ioctl to get w/ this, TIOCGDEV), and b) logging terminal control characters.
    Suggestions by the author:
    • Add more support in kernel for bootlogd; author didn't expand upon that.
    • Provide wrapper for starting init scripts, that logs all output to a socket.
    Other possibilities:
    • When starting init scripts from /etc/init.d/rc{,S}, log all output to socket and console. Bootlogd then
      • reads logs from socket instead of /dev/console.
    • Start bootlogd from initrd; store logs in ring buffer until /var/log is writable, at which point dump early
      • logs to disk, fsync, and begin normal logging.