Note: In the approach discussed below, the removal of some standard packages that are included in a base Debian install is suggested. Because these packages are only Priority: important, not essential, it is perfectly valid to do so, but you need to be aware that some packages may not function as intended without them (e.g. cron handles regularly scheduled tasks, sysklogd keeps logs of various system activities, logrotate rotates those logs and cupsys manages communication with printers on your network). Therefore, this is not an approach supported by the debian-eeepc team. However, so long as you're aware of these limitations of the approach, you're welcome to try it out. For a brief list of less intrusive changes, see tips and tricks. Also, have a look at BootProcessSpeedup, which is the source for those tips. An EeePC 901 with a booting time of 5 seconds was demonstrated at the Linux Plumber Conference 2008. Efforts and instruction to do this are collected on From_Naught_to_Sixty_in_5_Seconds.
I've created a bootchart for the EeePC boot up. This EeePC is running EeePC Debian and I have removed the following packages as I don't need them on such a small computer:
By doing a apt-get remove cron logrotate sysklogd cupsys
I'm using GDM to start an XFCE environment. Currently the EeePC takes 31 seconds to boot as is shown in the chart below. After some tweaks I was able to bring this down to roughly 20 seconds, a 10+ second improvement!
Currently I see a few sore spots:
Some seem udev related. I don't know the ins and outs of udev, but I've tried the following:
net.agent sits in /lib/udev/
A don't have that file on my Ubuntu system, is it really needed on the Eee?
I've put an exit at the top of the file and rebooted. This had no effect on the actual booting of the Eee, but it removed the sleep I also saw.
This sleep looks to be coming from the net.agent, which I handled in the previous bullet point.
udevsettle can optionally have a timeout. So /etc/rcS.d/S03udev can be edited . A --timeout 5 can be added to the udevsettle call. Again I have no idea what would happen to the booting of the EeePC. I have not made this change (yet).
> Why does this take so long? > Why is it needed?
It is needed to set the system's clock to the hardware's clock.
By running sudo chmod -x /sbin/hwclock you disable the startup scripts as they check the executable bit on . Doing so DROPS the boot time a full 10 seconds, down to 20 seconds. See Bootchart: no hwclock
Btw: why are there two hwclock init scripts?
This one is needed.
This one isn't, unless you use --adjust (but you probably already know what hwclock is and what the difference between those two script is if you use --adjust).
. [BenArmstrong] See this less invasive way to accomplish the same thing by avoiding the error that causes hwclock to stall out.
Bootchart: hwclock disabled
Bootchart: net.agent disabled
I'm seeing no adverse effects, BUT it still takes 31 seconds.
Finit is Eeepc fastinit reimplementation
Fastinit is a proprietary and much simplified init(8) replacement written by Asus to help the Eeepc to boot faster. Finit is a fastinit reimplementation based on fastinit system calls.
Warnning: This haven't been well tested. It doesn't start up syslogd, cron ...etc and it doesn't run rc6.d rc0.d scripts for shutdown/reboot. It might damage your data or mess up your filesystem.
Finit's purpose is to build upon the general workings of fastinit and improve/optimize it for Xandros or alternative distributions running on the Eeepc. Finit comes in three flavors: finit is a replica of the Asus fastinit, finit-mod is an improved drop-in replacement for fastinit, and finit-alt is a generic replacement for other systems.
Looking at the screenshot it seems that finit-alt has been ported to Debian. Booting in 9 seconds!
sysvinit-ng is boot scripts based on dependencies and parallelizing services startup.
See how to enable this at BootProcessSpeedup.
Looking at the screenshot it seems that sysvinit-ng only 4sec different than finit but much safer. Booting in 13 seconds!
The Eee Pc bios has a feature called Boot Booster, which seems to do some caching to shorten the time needed to execute grub, saving up to 3 seconds.
To enable it from the bios menu, you need to have a dedicated EFI partition on you first SSD (/dev/sda); if you have deleted it while installing Debian, you'll need to shrink the existing one(s) to make room for it. The Eee ships with a 16Mb partition, but there are several reports that 8Mb are enough; it has to be type 0xef and can be either the first or the last (or most probably in any position).
gparted is a software that will let you shrink ext2, ext3 and reiserfs partitions. Note that you won't be able to shrink your root partition while using it; you can boot with a live usb system and use gparted from there.