100% graphical booting with a VIA M10000 motherboard
This allows you to boot up without seeing any text. There are 3 parts to this system: a BIOS image, a LILO patch, and a Linux Kernel patch. If
you run windows, you can just use the modified BIOS to eliminate any text. If you run Linux, you will want to use all 3 parts so that you
don't see any text at all.
NOTE: you NEED a "BIOS Savior" or other way to switch between 2 BIOSes. The modified BIOS gets rid of ALL text so you won't be able to
change any settings. You need a way to boot the original BIOS in case you need to change stuff.
-
VIA M10000 BIOS
The BIOS has been modified to eliminate any text output, changes to text mode, and screen clearing. Set your
BIOS to display a fullscreen splash image. Now when you boot up, the image will be displayed and will STAY on the
screen until the boot target (OS, bootloader) changes it. Note that this BIOS image has a simple Toyota logo as an
example, see here for instructions on changing it.
-
LILO patch
This patch tests a byte in the BIOS to determine whether the normal BIOS or the modified BIOS is active. If the
normal BIOS is active, booting proceeds as normal: the screen is cleared, text mode is entered, and a menu of boot
targets is displayed. If the modified BIOS is active, the screen will remain unchanged and the FIRST boot target will
automatically be selected. This lets you flip a switch (on the BIOS savior) to choose between deployed mode and development
mode. Deployed mode can boot a read-only system and start your frontend application automatically, and development mode
can boot a read-write system and start up X or whatever.
I used lilo version 22.7.2, but it might work on other versions, I don't know. So copy the patch to /whatever/lilo-2.2.7.2/ and
then cd into that directory and run:
patch -p1 < modified-lilo.patch
Now, I changed some things in the makefile, so you will
probably want to look through that and make sure everything is the way you want it. In particular I think I changed the installation
path, removed support for some filesystems, got rid of the man pages, etc.
-
Kernel patch
This is a very simple patch to the beginning of the compressed kernel. It
eliminates the text output "Uncompressing Linux... Ok, booting the kernel."
Find the file /usr/src/<mykernel>/arch/i386/boot/compressed/misc.c:
And comment out the following lines:
putstr ("Uncompressing Linux... ");
putstr ("Ok, booting the kernel.\n");
On top of all this, you probably want to customize the BIOS splash screen to show your own custom graphics, and use bootsplash
in your kernel.
Here is my LILO target:
# Modes: vga=769 is 640x480x8
# 785 is 640x480x16
# 786 is 640x480x24
# The first image is the default image
image=/boot/vmlinuz-bootsplash-nortc
label="Default"
initrd=/boot/bootsplash.img
append="splash=silent quiet ide1=noprobe ide2=noprobe ide3=noprobe ide4=noprobe ide5=noprobe lpj=4004950 init=/unioninit 5"
root=/dev/hda2
vga=785
"vmlinuz-bootsplash-nortc " is my kernel, with bootsplash added and the "RTCNoSync" patch applied. The ideX=noprobe options prevent the
system from probing all the IDE buses that I don't have hooked up. The lpj line is loops-per-jiffy - you'll probably want to come up
with your own number for that. It should be printed out near the very top of the bootup messages (run dmesg to read these). The init=/unioninit line is explained in the next section. Finally, 5 means go to runlevel 5, where
I start up my frontend application. My default runlevel is 3, which is a command-line interface. You could also define a different runlevel,
say 4, which runs your frontend and leave your default at 5, which could run a full X environment.
Read-only Linux filesystem with read-write data partition
This is how I used UnionFS to create a read-only Linux system that you can safely
shut down just by pulling the plug. Coming soon...
Linux Bluetooth handsfree kit
Work in progress...