bootsplash for slackware kernel-2.6.12!

作者:zhy2111314

原文:

地址一 | 地址二

用了三天时间,终于搞定slackware的bootsplash,其实应该很简单,但是开始走了不少弯路,前两天都是参考其它版本的Linux的bootsplash制作,感觉suse和gentoo的用的比较多,而slackware的介绍就不多,在Linuxsir.org 搜索恢复正常后,终于在slackware版搜索到两篇很有参考价值的

关于bootsplash for slk的制作。参考文章url如下:
Slackware 10.0 Bootsplash How-to---zhanggy_zju@linuxsir.org
[a href="http://www.linuxsir.org/bbs/showthread.php?t=101574&highlight=splash">bootsplash for kernel 2.6.5 (success! 全过程)---dreamrise@linuxsir.org

下面介绍下我自己的bootsplash-for-slk-2.6.12步骤:
1.下载所需文件
内核源代码:linux-2.6.12.tar.bz2
针对linux-2.6.12内核的bootsplash补丁:bootsplash-3.1-i486-1.tgz

2.编译内核并打上bootsplash补丁

#cp linux-2.6.12.tar.bz2 bootsplash-3.1.6-2.6.12.diff /usr/src
删除旧的linux链接
#rm linux
新建linux链接
#ln -sf linux-2.6.12 linux
#cd linux
打上补丁
#patch -p1 < ../bootsplash-3.1.6-2.6.12.diff
编译新的内核
#make menuconfig

下面是必选项,其余需要根据自己情况选择!

Code maturity level options  --->[*] Prompt for development and/or incomplete code/drivers
              Processor type and features  --->[*] MTRR (Memory Type Range Register) support
              Device Drivers  --->
                         Block devices  --->
                         <*> Loopback device support
                         <*> RAM disk support
                         (4096) Default RAM disk size
                         [*]   Initial RAM disk (initrd) support
              Graphics support  --->[*] Support for frame buffer devices
                                    [*]   VESA VGA graphics support
              Console display driver support  --->[*]   Video mode selection support
                                                  <*> Framebuffer Console support
              Bootsplash configuration  --->[*] Bootup splash screen 
#make
#make modules_install
#cp arch/i386/boot/bzImage /boot/kernel-2.6.7
#cp System.map /boot/System.map-2.6.7
#cp .config /boot/config-2.6.7
除非你改过Makefile,去掉#export INSTALL_PATH=/boot这行的#
否则在slackware中不要用#make install来安装内核。

如果是2.4.xx的内核,则下面是必选项,其余需要根据自己情况选择!

Code maturity level options  --->[*] Prompt for development and/or incomplete code/drivers
           Processor type and features  --->[*] MTRR (Memory Type Range Register) support
           Block Devices ->[*] Loopback device support
                           [*] RAM disk support
                          (4096)   Default RAM disk size
                           [*] Initial RAM disk (iPOST http://www.linuxsir.com/bbs/editpost.php HTTP/1.s/editpost.php HTTP/1.] VGA text console
                           [*] Video mode selection support
           Console Drivers -> Frame-buffer support ->[*] Support for frame buffer devices
                                                     [*] VESA VGA graphics console
                                                     [*] Use splash screen instead of boot logo
#make dep 
#make clean
#make bzImage
#make modules 
#make modules_install
#cp arch/i386/boot/bzImage /boot/kernel-2.4.26
#cp System.map /boot/System.map-2.4.26
#cp .config /boot/config-2.4.26

3.使用bootsplash工具
安装bootsplash-3.1-i486-1.tgz

#installpkg bootsplash-3.1-i486-1.tgz

安装后在/etc/rc.d/下就多了rc.bootsplash和rc.splash两个启动脚本。
修改rc.splash,让6个tty都有漂亮的背景。

......
# start_console : first fb console to display bootsplash
# console numeber is zero based!
# start_console = 0 Ctrl+Alt+F1
start_console=0
# end_console : last fb console to display bootsplash
# end_console = 5 Ctrl+Alt+F6
end_console=5
......

根据rc.splash的开始的注释部分修改/etc/rc.d/rc.local,添加下面这段使每一个终端都有背景。

if [ -x /etc/rc.d/rc.splash ]; then
       . /etc/rc.d/rc.splash
fi

检查/etc/bootsplash/themes目录,选个自己喜欢的主题链接到current。

用splash命令制作initrd-1024*768

#/sbin/splash -s -f /etc/bootsplash/themes/current/config/bootsplash-1024x768.cfg > /boot/initrd-1024x768 

4.修改/etc/lilo.conf

# LILO configuration file
# generated by 'liloconfig'
#
# Start LILO global section
boot = /dev/hda
message = /boot/boot_message.txt
prompt
timeout = 600
# Override dangerous defaults that rewrite the partition table:
change-rules
  reset
# VESA framebuffer console @ 800x600x256
#vga = 773
# Normal VGA console
# vga = normal
# VESA framebuffer console @ 1024x768x64k
 vga=791
# VESA framebuffer console @ 1024x768x32k
# vga=790
# VESA framebuffer console @ 1024x768x256
# vga=773
# VESA framebuffer console @ 800x600x64k
# vga=788
# VESA framebuffer console @ 800x600x32k
# vga=787
# VESA framebuffer console @ 800x600x256
# vga=771
# VESA framebuffer console @ 640x480x64k
# vga=785
# VESA framebuffer console @ 640x480x32k
# vga=784
# VESA framebuffer console @ 640x480x256
# vga=769
# End LILO global section
# Windows bootable partition config begins
#other = /dev/hda1
#  label = Windows
#  table = /dev/hda
# Windows bootable partition config ends
# Linux bootable partition config begins
image = /boot/vmlinuz
  root = /dev/hda3
  label = Linux
  read-only

image = /boot/kernel-2.6.12
 root = /dev/hda3
 label = SLK2612
 read-only
 append = " video = vesafb : ywrap, mtrr "
 initrd = /boot/initrd-1024*768
# Linux bootable partition config ends
# Windows bootable partition config begins
other = /dev/hda1
  label = Windows
  table = /dev/hda
# Windows bootable partition config ends

执行lilo

#lilo

5.重启,enjoy!

NOTICE:
1.开机后发现没有开启硬盘dma,因此修改/etc/rc.d/rc.local,添加:

# open harddisk dma
# for testing to use the following command:
# #hdparm -Tt /dev/hda
# ATA33 : -X66
# ATA66 : -X68
# ATA100: -X69
# ATA133: -X70
/usr/sbin/hdparm -d1 -X70 -c3 -m16 /dev/hda

2.多个控制台ttyN多个背景

by Debentoo Gao@Linuxsir.org
OK, 如果你想在 tty1 下使用背景时就可以运行
代码:
# splash -s -u 1 /usr/share/splash/bootsplash.cfg

-u 后面就是控制台号码,如果你想在第 100 个控制台下使用背景当然也可以用 -u 100 icon_razz.gif

ft... 这样每次开机都要一个一个设置太累了,让它在每次启动后自动在每个控制台上加上背景 icon_wink.gif
代码:
# cd /usr/share/splash
# for i in tty2 tty3 tty4 tty5 tty6; do mkdir $i ; cp boot* $i ; done
# echo '/bin/splash -s -u 1 /usr/share/splash/tty2/bootsplash.cfg' >> /etc/conf.d/local.start
# echo '/bin/splash -s -u 2 /usr/share/splash/tty3/bootsplash.cfg' >> /etc/conf.d/local.start
# echo '/bin/splash -s -u 3 /usr/share/splash/tty4/bootsplash.cfg' >> /etc/conf.d/local.start
# echo '/bin/splash -s -u 4 /usr/share/splash/tty5/bootsplash.cfg' >> /etc/conf.d/local.start
# echo '/bin/splash -s -u 5 /usr/share/splash/tty6/bootsplash.cfg' >> /etc/conf.d/local.start

这样一来你可以在 /usr/share/splash/tty? 下放入不同的 jpg 图片,就可以让每个控制台显示不同的背景画面了,hoho ^_^

OK, 完成,重新启动吧

引用地址: http://www.linuxsir.com/bbs/showthread.php?s=&threadid=22104
by tram@Linuxsir.org
splash -n -s -u 1 /etc/bootsplash/themes/{任何主题}/config/bootsplash-1024x768.cfg
如果要把背景去掉:
splash -n -s -u 1

3.重要参考:
http://www.linuxsir.org/bbs/showthread.php?t=83174
进度条、动画效果、关机画面、定做自己的主题等技巧!

注意
首先,第一次编译时没有选择NTFS(File System)支持,所以重启后windows下的ntfs盘不能识别。

其次,第二次编译时没有选择正确的chipset型号,出现

......
warning: The dma on your hard drive is turned off
......

重新编译,在
Device Drivers--->ATA/ATAPI/MFM/RLL Support-->
下,选择对应IDE Chipset,输入lspci查看自己的型号

[zhyfly]@[zhy2fly][~](0)$lspci
00:00.0 Host bridge: VIA Technologies, Inc. VT8601 [Apollo ProMedia] (rev 05)
00:01.0 PCI bridge: VIA Technologies, Inc. VT8601 [Apollo ProMedia AGP]
00:07.0 ISA bridge: VIA Technologies, Inc. VT82C686 [Apollo Super South] (rev 40)
00:07.1 IDE interface: VIA Technologies, Inc. VT82C586A/B/VT82C686/A/B/VT823x/A/C/VT8235 PIPC Bus Master IDE (rev 06)
00:07.2 USB Controller: VIA Technologies, Inc. VT6202 [USB 2.0 controller] (rev 1a)
00:07.4 Bridge: VIA Technologies, Inc. VT82C686 [Apollo Super ACPI] (rev 40)
00:08.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ (rev 10)
01:00.0 VGA compatible controller: Trident Microsystems CyberBlade/i1 (rev 6a)
[zhyfly]@[zhy2fly][~](0)$

以上也可以通过修改/usr/src/linux/.config后(把对应项改为y),再make oldconfig实现。