LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 5479|回复: 26

Unicon加fbsplash的安装总结

[复制链接]
发表于 2005-12-6 07:47:42 | 显示全部楼层 |阅读模式
感谢sunmoon1997的补丁。
等我再做一遍后再向大家汇报,以免发生像上次一样的错误。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
发表于 2005-12-6 12:06:18 | 显示全部楼层
热烈期待中!
楼主真是做了好事啊!
回复 支持 反对

使用道具 举报

发表于 2005-12-6 13:54:24 | 显示全部楼层
wowowo,迫不及待了!
希望能将编译好的内核和相关模块做一个tgz包放上来。
回复 支持 反对

使用道具 举报

发表于 2005-12-6 20:10:44 | 显示全部楼层
这个我以前搞过,没有搞定,再后来没时间继续搞了![
搞好了写个帖子出来
回复 支持 反对

使用道具 举报

 楼主| 发表于 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的帮助。
  • 回复 支持 反对

    使用道具 举报

    发表于 2005-12-7 09:00:39 | 显示全部楼层
    感谢楼主,有时间的话我做一个二进制包给大家下载。^_^
    回复 支持 反对

    使用道具 举报

    发表于 2005-12-8 08:41:43 | 显示全部楼层
    楼主,现在这个 unicon 好像还有点问题。
    1. 我重复启动unicon 再 kill 掉它这个过程时,屏幕底部会多出一行不能编辑的空行,可显示的部份就越来越小,glibc 还会报错,有时还会死锁住键盘,只能按 reset。
    2. 搂主提供的 unicon-kernel 补丁要在打了 fbsplash 补丁后才能打,否则出错。
    3. 在用 fbsplash 后, Unikey.cpp 和 xl_(????) (具体哪个文件我忘记了)中,调整输入条位置的两句代码没有改回来。
    4. 楼主上面提到的安装过程中少了 pth 库的安装步骤,没有 pth ,uncion 无法编译出输入法模块。
    回复 支持 反对

    使用道具 举报

     楼主| 发表于 2005-12-8 09:09:29 | 显示全部楼层
    Post by qianzheng82
    楼主,现在这个 unicon 好像还有点问题。
    1. 我重复启动unicon 再 kill 掉它这个过程时,屏幕底部会多出一行不能编辑的空行,可显示的部份就越来越小,glibc 还会报错,有时还会死锁住键盘,只能按 reset。
    2. 搂主提供的 unicon-kernel 补丁要在打了 fbsplash 补丁后才能打,否则出错。
    3. 在用 fbsplash 后, Unikey.cpp 和 xl_(????) (具体哪个文件我忘记了)中,调整输入条位置的两句代码没有改回来。
    4. 楼主上面提到的安装过程中少了 pth 库的安装步骤,没有 pth ,uncion 无法编译出输入法模块。


    1.这个问题在2.4版的内核上也有,不要重复启动unicon。
    2.对的,这是为了向fbsplash兼容。
    3.是xl_unikey.c,Unikey.cpp中是
    -    ChineseInput_Y = MyVideoInfo.pixel_height/MyVideoInfo.font_height - 1;
    +    ChineseInput_Y = MyVideoInfo.pixel_height/MyVideoInfo.font_height - 2;
    xl_unikey.c中是:
    +    /*             (our_fbhzinfo.height/16)*2-2,   */
    +    /*             (our_fbhzinfo.height/16)*2-1);  */
    +                 our_fbhzinfo.height/16-2,
    +                 our_fbhzinfo.height/16-1);
    这样改了应该位置是对的。
    4.谢谢提醒,原装的slaskware上确实没有pth.
    回复 支持 反对

    使用道具 举报

    发表于 2005-12-8 11:01:05 | 显示全部楼层
    我用bootsplash和unicon也做了这个
    现在我可以在console下看到bootsplah和中文,但是遗憾的是不能打字,没有输入法,我没有用gentoo的东西,还有不知道你们做的稳定不稳定,我的有时侯就会出现汉字花屏的现象,reset不管用,logout都不管用,用起来感觉很小心,很不爽......
    回复 支持 反对

    使用道具 举报

     楼主| 发表于 2005-12-8 11:33:13 | 显示全部楼层
    汉字花屏问题其实是个普遍现象,我在486的机器,2.4.31版本的内核上安装unicon时,也时有发生,并且有关机时内核core dump的现象,不过不影响使用,重启或者换个tty都行,而且一般是与机器的配置有关,我在810ep以上的主板上还没发现过这个问题。
    我认为现在的unicon需要在以下几个方面进行改进:
    1 把汉字显示部分做到内核之外,vt本来是指向fbcon的,现在最好在用户程序中通过fb设备去做实际的显示工作。就像xterm什么的X下的模拟终端一样,也许最终连键盘过滤(没有这个就是你不能输入中文的原因,你可以根据我的patch修改,改起来不难)都可以移出内核,搞个framebuufer的X window?
    2 输入条的风格最好改成overthespot之类的,现有的输入条位置调整简直是门黑色艺术,不过只要严格按照我的安装总结去做,至少应该是可用的,我看过我给的补丁了,没有错误。如果不行的话,就要看grub的配置,还有是主题是不是emergence的。
    3 支持utf-8
    其实以上三个问题是紧密相连的。
    4 支持fcitx和skim,能读写它们的词库文件。
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    快速回复 返回顶部 返回列表