LinuxSir.cn,穿越时空的Linuxsir!

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

信心严重受打击!有关grub的Splash

[复制链接]
发表于 2009-9-9 17:36:57 | 显示全部楼层 |阅读模式
前两天,将LFS-6.5安装成功了,喜悦中。

想给grub启动界面加个图片,麻烦来了。先是按网上说的,自己制作了一张640*480的14色的xpm图片,再用gzip压缩为.xpm.gz,将该文件复制到/boot/grub目录下。再在menu.lst文件的timeout 10这一行下面加入:splashimage (hd0,2)/boot/grub/user.xpm.gz。重新启动,grub界面依然如故。

怀疑是自己图片有问题,下了几张ubuntu的.xpm.gz图片,试了下,无效。

后来又了解到官方的grub里没有splashimage功能,需要打补丁。

grub-0.97-graphics.patch这个补丁可真难找。下回来后,重新编译grub:

tar xvf grub-0.97.tar.gz
cd grub-0.97

patch -Np1 -i ../grub-0.97-graphics.patch

patch -Np1 -i ../grub-0.97-disk_geometry-1.patch
patch -Np1 -i ../grub-0.97-256byte_inode-1.patch
./configure --prefix=/usr
make CFLAGS="-march=i486 -mtune=native -Os"
make install

cp -v /usr/lib/grub/i386-pc/stage{1,2} /boot/grub

然后运行grub
root (hd0,1)
setup (hd0)

menu.lst文件内容如下:

default 0
timeout 10

splashimage (hd0,2)/boot/grub/user.xpm.gz

title LFS 6.5
root (hd0,2)
kernel /boot/lfskernel-2.6.30.2 root=/dev/hda2

唉,应该没什么问题呀。
就是不出来那图片。

又怀疑补丁安装次序有问题,将图片补丁装在lfs手册上补丁之后,问题依然。

心不有甘。真诚求助,望解惑!感谢!

同样的问题,在ubuntu上很快就解决了。

信心倍受摧残。
 楼主| 发表于 2009-9-9 17:59:56 | 显示全部楼层
补充下:
新编译的grub运行后,在它的命令行下,输入h,命令列表中根本没有splashimage。
而在弄成功的ubuntu中的grub命令列表中就有splashimage命令。
估计还是编译过程中的问题。
回复 支持 反对

使用道具 举报

发表于 2009-9-9 19:29:42 | 显示全部楼层
不大清楚,这些玩意是否也需要 framebuffer 的?
回复 支持 反对

使用道具 举报

发表于 2009-9-9 19:56:32 | 显示全部楼层
乘机推荐一下GRUB2.
支持Jpeg或png, 全屏图像
我安装LFS的GRUB时, 发现传说中的GRUB2可以下载了, 毫不犹豫的扔掉GRUB选择了GRUB2..
回复 支持 反对

使用道具 举报

发表于 2009-9-9 20:07:45 | 显示全部楼层
剑兄可说说用後感否?
回复 支持 反对

使用道具 举报

发表于 2009-9-9 20:20:03 | 显示全部楼层
剑兄可找到加启动密码的命令 或 模块?
grub2 N年前已可用,不被大多数人支持只因其没有完全覆盖 grub 特性。
给 grub2 加密码的补丁已出现很多年,不知官方现在是否合并相关代码。
回复 支持 反对

使用道具 举报

发表于 2009-9-9 20:46:44 | 显示全部楼层
lz,把splashimage (hd0,2)/boot/grub/user.xpm.gz这个这样写试一下


splashimage= (hd0,2)/boot/grub/user.xpm.gz
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-9-9 21:14:17 | 显示全部楼层
非常感谢你们抽出时间来关注!

我再试试。
回复 支持 反对

使用道具 举报

发表于 2009-9-9 21:37:02 | 显示全部楼层
Post by d00m3d;2025458
剑兄可说说用後感否?


用着感觉还不错, 我没做过多深入测试.
对使用者来说, 最显著的变化是扇区号从1开始编起了, 这样和Linux分区的习惯一样, 不用象GRUB1那样, 要把Linux分区号减1.

另一个显著的变化就是..  安装方法变了,配置语法变了
所幸编译简单, 只需要多加一个lzo包.

我的自动编译脚本... 可做编译时参考
#!/bin/bash

. functions_pub

PackageName=grub-1.96
PackageURL=ftp://alpha.gnu.org/gnu/grub/grub-1.96.tar.gz


case "${1}" in
download)
        check_and_download $PackageURL
        ;;
build)
        #step0: unpack.
        unpack_and_enter $PackageName $PackageURL

        #configure      
        ./configure --prefix=/usr --sysconfdir=/etc
        err_check "[Error] configure $PackageName failed."

        #step4: make.
        make
        err_check "[Error] make $PackageName failed."   

        make check | tee /var/lfs/$PackageName-check

        #step5: install.
        make install
        err_check "[Error] install $PackageName failed."

        #leave directory.
        package_leave $PackageName $PackageURL
        ;;

*)
        exit 1
        ;;
esac

#end


LZO的:

#!/bin/bash

. functions_pub

PackageName=lzo-2.03
PackageURL=http://www.oberhumer.com/opensource/lzo/download/lzo-2.03.tar.gz


case "${1}" in
download)
        check_and_download $PackageURL
        ;;
build)
        #step0: unpack.
        unpack_and_enter $PackageName $PackageURL

        #configure      
        ./configure --prefix=/usr --sysconfdir=/etc\
                --enable-shared
        err_check "[Error] configure $PackageName failed."

        #step4: make.
        make
        err_check "[Error] make $PackageName failed."

        #step5: install.
        make install
        err_check "[Error] install $PackageName failed."

        #leave directory.
        package_leave $PackageName $PackageURL
        ;;

*)
        exit 1
        ;;
esac

#end


先装LZO就可以.

编译安装后, 可以用grub-install安装到硬盘中, 这是一个自动化安装脚本, 理论上它会重写MBR, 将必要文件拷贝到/boot/grub, 并根据boot分区类型生成core.img, 然后将core.img写到0磁道.

core.img也可以自己生成, 必须包含 biosdisk模块, pc模块,  和ext2模块(如果用ext2/3)

biosdisk负责驱动磁盘读写.
pc模块负责解析MBR.
ext2模块负责找到其他模块的位置(boot/grub)

有一次..我忘了将biosdisk编入core.img, 结果.. 引导后找不到硬盘, 直接进入了应急Shell. 在应急Shell里也无法加载其他模块, 因为根本找不到硬盘.

另一个值得说的是, 我在不同CPU下, 编译core.img大小不同.
在公司的AMDCPU下, 28K
在我的T43下, 31K

core.img的大小非常重要.
回复 支持 反对

使用道具 举报

发表于 2009-9-9 21:45:51 | 显示全部楼层
Post by 聚焦深空;2025461
剑兄可找到加启动密码的命令 或 模块?
grub2 N年前已可用,不被大多数人支持只因其没有完全覆盖 grub 特性。
给 grub2 加密码的补丁已出现很多年,不知官方现在是否合并相关代码。


还没注意密码功能, 有空研究一下.
防止别人在启动命令里加入 init=/bin/bash?
回复 支持 反对

使用道具 举报

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

本版积分规则

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