SimplifiedLiveCD
⇤ ← Revision 1 as of 2005-10-31 22:14:11
4387
Comment: start spec with raw notes from BOF
|
5359
polish up BOF notes on boot loader, hardware detection, locating CD-ROM
|
Deletions are marked like this. | Additions are marked like this. |
Line 33: | Line 33: |
We will replace the d-i frontend with a simple initramfs with a usplash progress bar. This may be built using the d-i build system (which knows how to build initramfs now, and can build it out of udebs) or using mkinitramfs (which can build the initramfs out of arbitrary hooks, and already knows how to chain to a new root filesystem). This should carry out the following operations: === Boot loader === Su``SE applies the "gfxboot" patch to isolinux to allow graphical language selection. What should we do for powerpc, since nothing similar exists for yaboot? We could just rely on the user supplying kernel parameters (very suboptimal), or attempt to simplify later reconfiguration of the language/country/keymap once the desktop starts up. Remember that the user must be able to do this without understanding the language in which the desktop is displayed. === Hardware detection === Mostly udev coldplugging, as with the rest of the system. We need to ensure that suitable modules are present in the initramfs. lp, mousedev, and psmouse are still loaded manually using /etc/modules in breezy. Which of these are still necessary? On powerpc, many devices on the mac-io bus are also handled using /etc/modules; we should ensure that the mac-io hotplug patches are merged to allow this to be removed. === Locating CD-ROM === The cdrom-detect installer component walks through /dev/cdroms/ (a devfs-style path, relying on udev's compat-full.rules). We can either use it directly (requiring a debconf database, to some extent) or reimplement it without debconf. It appears that a reimplementation would be much smaller than the original, since cdrom-detect performs various other pieces of installer integration as well as just mounting /cdrom. We should ensure that there is a suitable hook at around this point for future hard drive detection; some other live CD systems allow the live filesystem to be cached on the hard disk. Again, the build system needs to include suitable modules. === System configuration === TODO: still rough BOF notes * keyboard layout: reasonable default and allow user to change it later? Knoppix and d-i both have language->layout guesses * if multiple options, put them into keyboard layout switcher applet * language: allow user to select from boot loader, or via command line option * add user: just invoke adduser or similar * run a custom hook uncompressed on the CD * X, gdm, swap, fstab, etc: casper * Should make it easy to unwind its changes, so they can be reversed for ubuntu-express * for example, move init scripts out of the way rather than deleting them * install an unwind script which just needs to be invoked * Do something like 93save-logs? should be part of initramfs-tools generically === Live filesystem initialization === * unionfs/squashfs, mostly in casper main * otherwise business as usual === Transfer of control to live filesystem from initramfs === * overmount live filesystem on rootfs, then run-init * if we use initramfs-tools, then we get this for free from /usr/share/initramfs-tools/init * check how to chain to usplash in live filesystem (progress bar position); depends on usplash-initramfs spec |
|
Line 43: | Line 91: |
=== Raw BOF notes, to be processed === Replace d-i frontend with one based on initramfs with a usplash progress bar. Do the same kind of thing as cdrom-detect (walk /dev/cdroms/) to find CD-ROM drives. Use either d-i build system or mkinitramfs; depends on complexity and whether we would like to use udebs - would like to use initramfs-tools, but would need to handle hooks somehow - how much code would be realistically shared with the udebs? - cdrom-detect? - localechooser, kbd-chooser hooks - don't need progress bars anymore due to usplash - don't need any user input, as we won't ask any questions anymore - don't need netcfg due to network-manager - would like to avoid complexity wherever possible, but also share code in order to benefit from well-tested components Hardware detection - mostly hotplug/udev, as rest of system - /etc/modules still has lp, mousedev, psmouse - mac-io modules on powerpc; incorporate mac-io hotplug if not already done? Locating CD-ROM - cdrom-detect walks /dev/cdroms/ (udev compat-full.rules); either use it directly or reimplement without debconf etc. - make sure there's a hook for future hard drive detection (caching of live CD to hard disk) - build system needs to include suitable modules System configuration - keyboard layout: reasonable default and allow user to change it later? knoppix and d-i both have language->layout guesses - if multiple options, put them into keyboard layout switcher applet - language: allow user to select from boot loader, or via command line option - add user: just invoke adduser or similar - run a custom hook uncompressed on the CD - X, gdm, swap, fstab, etc: casper - Should make it easy to unwind its changes, so they can be reversed for ubuntu-express - for example, move init scripts out of the way rather than deleting them - install an unwind script which just needs to be invoked - Do something like 93save-logs? should be part of initramfs-tools generically Boot loader - suse patches isolinux (gfxboot) for graphical language love - what to do for powerpc? (just rely on LANG=, or simplify later reconfiguration of language/country/keymap) Live filesystem initialization - unionfs/squashfs, mostly in casper main - otherwise business as usual Transfer of control to live filesystem from initramfs - overmount live filesystem on rootfs, then run-init - if we use initramfs-tools, then we get this for free from /usr/share/initramfs-tools/init - check how to chain to usplash in live filesystem (progress bar position); depends on usplash-initramfs spec |
* How much code would be realistically shared with the udebs? * cdrom-detect? * localechooser, kbd-chooser hooks * don't need progress bars anymore due to usplash * don't need any user input, as we won't ask any questions anymore * don't need netcfg due to network-manager * would like to avoid complexity wherever possible, but also share code in order to benefit from well-tested components |
Launchpad Entry: https://launchpad.net/distros/ubuntu/+spec/simplified-livecd
Created: 2005-10-31 by ColinWatson
Contributors: ColinWatson, MattZimmerman, FabianFranz
Packages affected: casper, initramfs-tools
Summary
Simplify and improve the live CD's bootstrap mechanism.
Rationale
As of Ubuntu 5.10, the Ubuntu live CD bootstraps itself using the installer machinery. While this was convenient for purposes of maintainability, it has disadvantages in performance, interactivity, complexity and aesthetics. It should be replaced with a simple initramfs which handles the following tasks non-interactively:
- Progress display using usplash
- Hardware detection (using standard, shared Ubuntu mechanisms)
- Location and mounting of the live media
- Initialization of the live filesystem
- Transfer of control to the live filesystem
Use cases
- Most users of the live CD want it to boot quickly and painlessly, without a sharp visual distinction between various stages of the bootstrap process.
- Pierre is French, and still wants to be able to select French as his language, have a reasonable keymap selected for him, etc.
Scope
This specification covers a redesign of the live CD bootstrap process. It does not attempt to address additional features that might be implemented in the live CD, although the redesign should take care to retain customisability and not to restrict reasonable extensions.
Design
We will replace the d-i frontend with a simple initramfs with a usplash progress bar. This may be built using the d-i build system (which knows how to build initramfs now, and can build it out of udebs) or using mkinitramfs (which can build the initramfs out of arbitrary hooks, and already knows how to chain to a new root filesystem). This should carry out the following operations:
Boot loader
SuSE applies the "gfxboot" patch to isolinux to allow graphical language selection.
What should we do for powerpc, since nothing similar exists for yaboot? We could just rely on the user supplying kernel parameters (very suboptimal), or attempt to simplify later reconfiguration of the language/country/keymap once the desktop starts up. Remember that the user must be able to do this without understanding the language in which the desktop is displayed.
Hardware detection
Mostly udev coldplugging, as with the rest of the system. We need to ensure that suitable modules are present in the initramfs.
lp, mousedev, and psmouse are still loaded manually using /etc/modules in breezy. Which of these are still necessary? On powerpc, many devices on the mac-io bus are also handled using /etc/modules; we should ensure that the mac-io hotplug patches are merged to allow this to be removed.
Locating CD-ROM
The cdrom-detect installer component walks through /dev/cdroms/ (a devfs-style path, relying on udev's compat-full.rules). We can either use it directly (requiring a debconf database, to some extent) or reimplement it without debconf. It appears that a reimplementation would be much smaller than the original, since cdrom-detect performs various other pieces of installer integration as well as just mounting /cdrom.
We should ensure that there is a suitable hook at around this point for future hard drive detection; some other live CD systems allow the live filesystem to be cached on the hard disk.
Again, the build system needs to include suitable modules.
System configuration
TODO: still rough BOF notes
* keyboard layout: reasonable default and allow user to change it later? Knoppix and d-i both have language->layout guesses
- if multiple options, put them into keyboard layout switcher applet
* language: allow user to select from boot loader, or via command line option * add user: just invoke adduser or similar * run a custom hook uncompressed on the CD * X, gdm, swap, fstab, etc: casper * Should make it easy to unwind its changes, so they can be reversed for ubuntu-express
- for example, move init scripts out of the way rather than deleting them
- install an unwind script which just needs to be invoked
* Do something like 93save-logs? should be part of initramfs-tools generically
Live filesystem initialization
* unionfs/squashfs, mostly in casper main * otherwise business as usual
Transfer of control to live filesystem from initramfs
* overmount live filesystem on rootfs, then run-init * if we use initramfs-tools, then we get this for free from /usr/share/initramfs-tools/init * check how to chain to usplash in live filesystem (progress bar position); depends on usplash-initramfs spec
Implementation
Code
Data preservation and migration
Outstanding issues
BoF agenda and discussion
- How much code would be realistically shared with the udebs?
- cdrom-detect?
- localechooser, kbd-chooser hooks
- don't need progress bars anymore due to usplash
- don't need any user input, as we won't ask any questions anymore
- don't need netcfg due to network-manager
- would like to avoid complexity wherever possible, but also share code in order to benefit from well-tested components
SimplifiedLiveCD (last edited 2008-08-06 16:14:38 by localhost)