|
楼主 |
发表于 2005-12-7 07:48:22
|
显示全部楼层
Unicon加fbsplash的安装总结
Unicon的安装总结
一> 首先我们要给内核打补丁,内核我还是选择2.6.14.2的版本.我知道这不是最新的内核,但是只要原理明白了,今后升级到新的内核应该是不难的.我看过linux-2.6.14.3的Changelog了,没看见针对显示设备的改进.
因此首先下载针对这个版本的vesa-tng和gensplash,下载地址:
pth ftp://ftp.gnu.org/gnu/pth/pth-2.0.6.tar.gz
内核linux-2.6.14.2 http://kernel.org/pub/linux/kernel/v2.6/linux-2.6.14.2.tar.bz2
vesa-tng http://dev.gentoo.org/~spock/pro ... rc1-r2-2.6.14.patch
fbsplash http://dev.gentoo.org/~spock/pro ... 9.2-r5-2.6.14.patch
splashutils http://dev.gentoo.org/~spock/pro ... ls-1.1.9.10.tar.bz2
fbsplash-theme-emergence http://dev.gentoo.org/~spock/pro ... mergence-r2.tar.bz2
miscsplashutils http://dev.gentoo.org/~spock/pro ... utils-0.1.3.tar.bz2
unicon的补丁
unicon-patch.rar
下载点:
永硕E盘 http://hj18.ys168.com 用IE浏览
mofile http://pickup.mofile.com/3903865392141831
或登录Mofile,使用提取码 3903865392141831 提取文件
然后打补丁:
成为超级用户
[PHP]su
cd /usr/src[/PHP]
为了叙事方便,我假设把下载的内核补丁都放在这里.
[PHP]rm -f linux /* 如果原来有这个符号链接的话,没有就算了. */
tar xjvf linux-2.6.14.2.tar.bz2
ln -s linux-2.6.14.2 linux
cd linux
cat ../vesafb-tng-1.0-rc1-r2-2.6.14.patch |patch -p1
cat ../fbsplash-0.9.2-r5-2.6.14.patch |patch -p1
[/PHP]
unicon的补丁:
[PHP]
cat ../unicon-kernel-20051206.patch |patch -p1
cd ../
tar xzvf unicon-fonts.tar.gz /* 安装字体包 */
cp unicon-fonts/\* linux/drivers/video/unicon
cd linux
[/PHP]
然后配置内核
[PHP]make menuconfig[/PHP]
确保你选中了:
[PHP]
Device Drivers > Graphics support:
----> Support for frame buffer devices
-------> <*> VESA VGA graphics support
-----------> VESA driver type (vesafb-tng) --->
------------> (HRESxVRES@FREQ) VESA default mode # pick resolution@freq of your own here !
------------> # 8pp is the only one supported for this time
------------> # Ex: (1024x768@72)
Device Drivers > Graphics support > Console display driver support:
----> Video mode selection support
-------> <*> Framebuffer Console support
Device Drivers > Graphics support:
----> Support for the framebuffer splash
[/PHP]
绝对不要选中tileblitting support
[PHP]
Device Drivers > Graphics support:
---->[ ] Enable Tile Blitting Support
[/PHP]
为了在启动时装入initramfs图象,选中:
[PHP]
Device Drivers > Block devices:
----> <*> RAM disk support
----> (4096) Default RAM disk size (kbytes) (NEW)
----> Initial RAM disk (initrd) support
[/PHP]
当然,别忘了选中UNICON
[PHP]
Device Drivers > Graphics support
----> UNICON console support
[/PHP]
现在,编译内核:
[PHP]make && make modules_install[/PHP]
我的内核安装在/boot上,所以
[PHP]cp arch/i386/boot/bzImage /boot/linux-2.6.14-fb[/PHP]
二> 安装splashutils
找个目录,解压splashutils,fbsplash-theme-emergence,miscsplashutils.
[PHP]tar xjvf splashutils-1.1.9.10.tar.bz2
tar xjvf fbsplash-theme-emergence-r2.tar.bz2
tar xjvf miscsplashutils-0.1.3.tar.bz2
[/PHP]
slackware用户被gentoo用户"忽悠"的地方就在这里,他们有klcc(一个gcc的wrapper),而我们没有,所以直接在splashutils中make是不行的,需要编辑splashutils-1.1.9.10/Makefile,把
[PHP]KLCC = klcc[/PHP]
改为:
[PHP]KLCC = gcc[/PHP]
然后
[PHP]make
make install /* 或者checkinstall */
cd ../ /* 回到上层目录 */ [/PHP]
然后新建一个目录,需要超级用户身份.
[PHP]mkdir /etc/splash [/PHP]
把主题拷贝进去:
[PHP]cp -r emergence/ /etc/splash [/PHP]
还要字体:
[PHP]cp miscsplashutils-0.1.3/fbtruetype/luxisri.ttf /etc/splash [/PHP]
搞个initramfs,我设定分辨率为800x600,因为对我来说太高的话字太小了.
[PHP]cd /etc/splash
splash_geninitramfs -v -g /boot/fbsplash-emergence-800x600 -r 800x600 emergence [/PHP]
三> 安装pth库
[PHP]
tar xzvf pth-2.0.6.tar.gz
cd pth-2.0.6
./configure
make
make install
[/PHP]
四> 安装unicon输入法
源码包: unicon-3.0.4-20010924.tar.gz
补丁: unicon-3.0.4-update-20051206.patch
放在同一个目录下面.
安装步骤:
[PHP]tar xzvf unicon-3.0.4-20010924.tar.gz
cd unicon-3.0.4
cat ../unicon-3.0.4-update-20051206.patch |patch -p1
./configure && make
make install /* 或者 checkinstall */[/PHP]
请想要在这里研究编程的朋友注意,要是想多次编译这个包的话,请把 "install: all" 中的 "make data-install;" 去掉,这样调试起来方便,不用每次去重新制作输入法的数据文件.
五> 配置grub(我现在只会这个了,lilo被我删了)
[PHP]
title linux-2.6.14-fb
kernel (hd0,3)/boot/linux-2.6.14-fb ro root=/dev/hda4 video=vesafb:800x600-32@85,ywrap,mtrr splash=verbose,theme:emergence
initrd (hd0,3)/boot/fbsplash-emergence-800x600
[/PHP]
然后安装grub
[PHP]
su
grub
root (hd0,3)
setup (hd0)
quit
[/PHP]
要点:ypan或ywrap都行,就是不要redraw,
不要在grub的选项中加入CONSOLE=/dev/tty1,否则unicon不能在启动脚本中运行,而只能在你登录后,以root身份启动.
在 /etc/rc.d/ 中放个文件叫做 rc.unicon
[PHP]#!/bin/sh
#
# /etc/rc.d/rc.unicon: unicon script.
#
# Put any local setup commands in here:
modprobe unikey
modprobe encode-gbk
setfont -C /dev/tty1 -u /usr/local/lib/unicon/direct.uni
setfont -C /dev/tty2 -u /usr/local/lib/unicon/direct.uni
setfont -C /dev/tty3 -u /usr/local/lib/unicon/direct.uni
setfont -C /dev/tty4 -u /usr/local/lib/unicon/direct.uni
setfont -C /dev/tty5 -u /usr/local/lib/unicon/direct.uni
setfont -C /dev/tty6 -u /usr/local/lib/unicon/direct.uni
if [ -x /usr/local/bin/unicon ]; then
echo "Starting Unicon 3.0.4 ..."
/usr/local/bin/unicon --gbk >/dev/null 2>&1
fi[/PHP]
然后让这个脚本具有执行权限
[PHP]chmod +x /etc/rc.d/rc.unicon[/PHP]
编辑 /etc/udev/scripts/make_extra_nodes.sh
在最后加上:
[PHP]if grep "2.6" /proc/sys/kernel/osrelease 1> /dev/null 2> /dev/null; then
mknod /dev/unikey c 10 202
fi
[/PHP]
关机脚本,先放个/etc/rc.d/rc.unicon-stop
[PHP]#!/bin/sh
pid=`ps ax | awk '{if (match($5, ".*/unicon$") || $5 == "unicon") print $1}'`
if test "$pid" != ""; then
kill $pid
echo "unicon: stopped scheduler."
fi
[/PHP]
然后
[PHP]chmod +x /etc/rc.d/rc.unicon-stop[/PHP]
编辑/etc/rc.d/rc.6
在
PATH=/sbin:/etc:/bin:/usr/bin的后面加上
[PHP]if [ -x /etc/rc.d/rc.unicon-stop ]; then
. /etc/rc.d/rc.unicon-stop
fi
[/PHP]
我不知道gentoo的启动脚本是怎么写的,当我在启动脚本中加入下列命令,期望在我登录之前,就在各个tty显示图片时,遭到了失败,只能登录后以root账号启动.sunmoon1997写过一个脚本,不明白在slackware上克隆还缺少什么?还有gentoo的主题是不能用的,一旦用了,就看不见输入条了,也许你可以自己修改程序,改变输入条的位置,或者干脆让我们把这个讨厌的输入条改成OverTheSpot什么的风格算了.
[PHP]splash_util -c setcfg --tty=2 --theme=emergence -m=s
splash_util -c on --tty=2
splash_util -c setcfg --tty=3 --theme=emergence -m=s
splash_util -c on --tty=3
splash_util -c setcfg --tty=4 --theme=emergence -m=s
splash_util -c on --tty=4
splash_util -c setcfg --tty=5 --theme=emergence -m=s
splash_util -c on --tty=5
splash_util -c setcfg --tty=6 --theme=emergence -m=s
splash_util -c on --tty=6
[/PHP]
错误信息:
[PHP]
FBIOSPLASH_SETCFG failed, error code 22.
FBIOSPLASH_SETSTATE failed, error code 22.
FBIOSPLASH_SETCFG failed, error code 22.
FBIOSPLASH_SETSTATE failed, error code 22.
FBIOSPLASH_SETCFG failed, error code 22.
FBIOSPLASH_SETSTATE failed, error code 22.
FBIOSPLASH_SETCFG failed, error code 22.
FBIOSPLASH_SETSTATE failed, error code 22.
FBIOSPLASH_SETCFG failed, error code 22.
FBIOSPLASH_SETSTATE failed, error code 22.
[/PHP]
想用fbshot截图吗?你最好在编译时加上-static参数,具体就是编辑fbshot-0.3/Makefile,把
[PHP]gcc fbshot.c -lpng -lz -o fbshot[/PHP]
改成:
[PHP]gcc fbshot.c -static -lpng -lz -o fbshot[/PHP]
基本上遇上有libpng的库最好都这么编译.其中包括fbgrab.
fbshot-0.3.tar.gz
fbgrab-1.0.tar.gz
不足之处,第一个控制台最下面好像多空了一行,其他的却正好.
最后再次感谢sunmoon1997的帮助。 |
|