zoukankan      html  css  js  c++  java
  • bootsplash

    原著:Narada
    翻译:Max
    yuan wen:
    http://www.linuxfans.org/nuke/modules.php?name=Forums&file=viewtopic&t=46419

    注:本文只部分翻译,并加入了其它内容。
    原文请访问:http://forums.gentoo.org/viewtopic.php?t=49036

    ---------------------------------------------


    一.内核补丁

    下面是对部分内核的 bootsplash 补丁下载地址:

    2.4.20
    ftp://ftp.suse.com/pub/people/stepan/bootsplash/kernel/bootsplash-3.0.7-2.4.20-vanilla.diff

    2.4.21
    http://dhruba.codewordt.co.uk/patches/patch-2.4.21-bootsplash.bz2

    2.4.22
    ftp://ftp.suse.com/pub/people/stepan/bootsplash/kernel/bootsplash-3.0.7-2.4.22-vanilla.diff.bz2

    2.6.0-test9
    ftp://ftp.suse.com/pub/people/stepan/bootsplash/kernel/bootsplash-3.1.3-2.6.0-test9.diff

    注:本文系统平台参数:

    Gentoo 1.4 RC4

    kernel 2.4.20-r8

    Simsung 753 DFX 1024x768@75Hz

    Nvidia GF2 MX400 64M

    二.方案目标

    高分辨率的 Framebuffer

    高分辨率的 Bootsplash

    自定义 Framebuffer 字体

    自定义 Bootsplash 主题

    给你的 Framebuffer 和 Bootsplash 截图

    在 Framebuffer 下使用多媒体工具和图形化的浏览器

    自定义 Grub splash 图像

    扩展 Framebuffer 和 bootsplash 到所有12个虚拟终端

    让虚拟终端支持中文

    自定义登录问候画面


    三.开始工作!

    1.获取必须的 bootsplash 程序

    更新 portage 树
    代码:
    emerge sync


    编译安装media-gfx/bootsplash (字符界面下的 Framebuffer 背景图像).
    由于bootsplash默认情况下是mask的,所以我们要:

    代码:
    ACCEPT_KEYWORDS="~x86" emerge bootsplash


    覆盖你原来的bootsplash配置文件:

    代码:
    etc-update



    2.编译内核以支持 Framebuffer & Bootsplash

    首先检查 /usr/src/linux 是否指向你当前内核源代码目录

    代码:
    ls -l /usr/src/


    一些版本的内核如 gentoo-sources, gaming-sources 和 xfs-sources 已经内置了 Framebuffer 支持,如果你的内核没有支持,请检查并如下打上补丁。

    代码:
    ebuild /var/db/pkg/media-gfx/bootsplash-0.6-r2/bootsplash-0.6-r2.ebuild config


    开始配置内核
    代码:
    cd /usr/src/linux
    make menuconfig


    把以下各项编译进内核.不要编译成模块,也不要开启 nvidia 或 ATI 选项(我们只要有vesa就可以了).


    代码:

    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 (initrd) support
    Console Drivers ->
    [*] 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


    开始编译内核,并复制新内核到 /boot (你最好先备份现有内核),完成后先不要重新启动,也不要卸载 /boot分区。

    代码:

    make dep && make clean bzImage modules modules_install
    mount /boot
    cp /boot/vmlinuz-2.4.20-r8 /boot/vmlinuz-2.4.20-r8.bak
    cp /usr/src/linux/arch/i386/boot/bzImage /boot/vmlinuz-2.4.20-r8-fb


    如果你在编译内核过程中出现错误,或者丢失了一些配置选项,请按照下面步骤重新编译。

    代码:

    cd /usr/src/linux/
    mv .config ~/kernel.config
    make mrproper
    mv ~/kernel.config .config
    make oldconfig
    make menuconfig


    下面生成一个启动过程中的背景图像:

    代码:

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


    编辑/boot/grub/grub.conf,下面是我的grub.conf,你可以参考我的加以修改,下面是一些参数的意思:

    video= 放在 kernel一行后面,用以控制显示参数, 如:ywrap和mtrr 来加速 Framebuffer 刷新。
    vga= 放在 kernel一行后面,用以控制 Framebuffer 的分辨率和色彩深度。
    splash= 放在 kernel一行后面,一般有'silent'、'verbose' 可选。
    initrd= 放在 kernel 一行后面另起一行,用来装载启动时的背景图像。

    代码:

    timeout 30
    default 0
    splashimage=(hd0,7)/grub/splash.xpm.gz
    # For booting Windows 200 Pro
    title Windows 2000 Pro
    rootnoverify (hd0,0)
    chainloader +1

    # For booting Gentoo Linux with Framebuffer & Bootsplash
    title Gentoo Linux 1.4 RC4 (2.4.20-8) Framebuffer
    root (hd0,9)
    kernel (hd0,7)/vmlinuz-2.4.20-r8-fb ro root=/dev/hda10 video=vesa:1024x768@72 vga=0x317
    initrd (hd0,7)/initrd-1024x768

    # For booting Gentoo Linux without Framebuffer & Bootsplash
    title Gentoo Linux 1.4 RC4 (2.4.20-8)
    root (hd0,9)
    kernel (hd0,7)/vmlinuz-2.4.20-r8 ro root=/dev/hda10



    下面是 kernel 中 "vga="参数一览表,根据自己的情况选择。

    代码:


        | 640x480  800x600  1024x768 1280x1024
    ----+-------------------------------------
    256 |  0x301    0x303    0x305    0x307
    32k |  0x310    0x313    0x316    0x319
    64k |  0x311    0x314    0x317    0x31A
    16M |  0x312    0x315    0x318    0x31B



    如果你需要更详悉的解释,请参考下面的文档:

    代码:

    /usr/share/bootsplash/grub.conf.sample
    /usr/src/linux/Documentation/fb/vesafb.txt
    /usr/src/linux/Documentation/svga.txt


    把 bootsplash 加入default运行级,让其在启动是自动运行:
    代码:
    rc-update add bootsplash default


    现在重启!如果一切正常你就会看到漂亮的 Framebuffer 和 Bootsplash 啦!

    如果只想使用 Framebuffer 而不需要 Bootsplash ,只要:

    代码:
    rc-update del bootsplash default


    并且去掉grub.conf中的这一行:

    代码:
    initrd=/boot/initrd-1280x1024


    减小终端字体,打开/etc/rc.conf,修改下面一行

    代码:
    CONSOLEFONT="default8x9"


    其它可用字体可以参考下面的目录:

    代码:
    /usr/share/consolefonts


    3.自定义你的 Bootsplash 主题!

    建立 personal 目录:

    代码:
    mkdir -p /etc/bootsplash/personal/images/
    cp -r /etc/bootsplash/default/config /etc/bootsplash/personal/


    修改 default 符号链接:

    代码:
    rm /etc/bootsplash/default
    ln -s /etc/bootsplash/personal /etc/bootsplash/default


    打开 /etc/conf.d/bootsplash.conf 并修改如下:

    代码:
    BOOTSPLASH_THEME=personal


    把你的 bootsplash 图像(大小要与grub.conf中的相一致)复制到 /etc/bootsplash/personal/images/bootsplash-1024x768.jpg. 确保图像分辨率为 96x96, 注意这里指的不是图像的大小,而是每英寸的像素值,可以使用gimp等修改。

    打开 /etc/bootsplash/personal/config/bootsplash-1024x768.cfg 并修改如下,以指向你的新图像位置:

    代码:

    mount /boot
    /sbin/splash -s -f /etc/bootsplash/default/config/bootsplash-1024x768.cfg > /boot/initrd-1024x768


    重启!看看效果吧!

    3.给我的 Framebuffer 截图!

    编译安装 fbgrab

    代码:
    ACCEPT_KEYWORDS=~x86 emerge fbgrab
    fbgrab ~/console.png


    4.自定义 Grub splash 图像!

    要自定义 grub splash,只要自定义一幅图像复制到 /boot/grub 就可以了。

    先安装一个gimp的补丁用来生成grub可以使用的图像格式:

    代码:

    emerge gimp (如果你还没有 gimp )
    wget [url]http://dhruba.codewordt.co.uk/files/grub-image.scm[/url] -P ~
    mv ~/grub-image.scm /usr/share/gimp/1.2/scripts/


    用 gimp 打开你选择的图片,右键单击图像,File > Grub Boot Image,然后保存起来,
    下面有一个例子图片,其它图片可以到这里找: http://linuxserver.tkdack.com/node.php?title=Grub%20Splash%20Screens

    代码:

    mount /boot
    wget [url]http://linux.tkdack.com/downloads/grub/powered-by.xpm.gz[/url] -P ~
    mv ~powered-by.xpm.gz /boot/grub/


    修改 /boot/grub/grub.conf 指向你的新图像:

    代码:
    splashimage=(hd0,0)/boot/grub/splash.xpm.gz


    5.扩展 Framebuffer 到 12 个虚拟终端!

    打开 /etc/inittab ,在第37行后加入:

    代码:

    c8:12345:respawn:/sbin/agetty 38400 tty8 linux
    c9:12345:respawn:/sbin/agetty 38400 tty9 linux
    c10:12345:respawn:/sbin/agetty 38400 tty10 linux
    c11:12345:respawn:/sbin/agetty 38400 tty11 linux
    c12:12345:respawn:/sbin/agetty 38400 tty12 linux


    打开 /etc/init.d/bootsplash,在第30行修改如下:

    代码:
    for TTY in `seq 0 11`



    重启后你就有了 12 个虚拟终端并都支持 Framebuffer splash 图像了!

    6.让虚拟终端支持中文

    安装unicon

    代码:
    emerge unicon


    这里下载编译zhcon

    http://prdownloads.sourceforge.net/...tar.gz?download

    代码:
    ./configure & make & make install


    安装字符界面下的浏览器

    代码:

    emerge lynx 

    or

    emerge w3m (推荐)




    7.让虚拟终端支持鼠标

    代码:
    emerge gpm


    修改 /etc/conf.d/gpm

    代码:

    MOUSE=ps2
    #MOUSE=imps2
    MOUSEDEV=/dev/psaux
    #MOUSEDEVMOUSE=ps2
    #MOUSEDEV=/dev/input/mice


    把gpm加入default运行级

    代码:
    rc-update add gpm default


    重启后字符界面下就可以使用鼠标啦,左键拖动选择,中键单击粘贴。


    8.自定义登录问候画面

    下载安装 cowsay

    http://freshmeat.net/redir/cowsay/1504/url_tgz/cowsay-3.03.tar.gz

    代码:

    ./configure --prefix=/usr
    make & make install


    建立如下 /etc/init.d/issue 脚本文件:

    代码:

    #!/bin/sh
    # Local system initialization script
    RELEASE="release 1.1a"
    COLOR1="\033[1;6m\033[35;40m" # bright magenta on black  COLOR2="\033[1;6m\033[37;40m" # bright white on black
    COLOR3="\033[1;6m\033[33;40m"
    COLOR_RESET="\033[0m"
    rm -f /etc/issue
    /usr/bin/clear >> /etc/issue
    /usr/bin/cowsay "Hello World" >> /etc/issue
    echo -e $COLOR1"Gentoo"$COLOR2 "Linux"$COLOR_RESET "$RELEASE" "(\l)">>/etc/issue
    echo "Kernel $(uname -r) on an $(uname -m)" >> /etc/issue
    echo -e $COLOR3"Welcome to the My Linux World!">>/etc/issue
    echo >>/etc/issue
    cp -f /etc/issue /etc/issue.net


    代码:
    chmod +x /etc/init.d/issue


    添加x属性,加入 default 运行级或 local.start脚本执行:

    代码:

    rc-update add issue default
    或者
    echo /etc/init.d/issue >> /etc/conf.d/local.start



    四、总结

    至此,我想我们可以基本上放弃X了,因为我们已经有了一个不亚于X的漂亮的工作环境。如果你喜欢用vi超过gedit,喜欢mpg123超过xmms,喜欢总是把手指放在键盘上,而不是拿着鼠标晃来晃去,那么你会从这篇文档得到享受!
  • 相关阅读:
    为什么C++(感谢waterwalk翻译)
    容器操作笔记
    如此理解面向对象编程
    C++初学者小细节(不定时更新)
    Sales_item 专题
    10步让你成为更优秀的程序员
    C++ PRIMER 笔记
    C++ 异常处理
    透明度 rgba 和 opacity 的区别
    盒模型
  • 原文地址:https://www.cnblogs.com/huqingyu/p/384520.html
Copyright © 2011-2022 走看看