+ -
当前位置:首页 → 问答吧 → 信心严重受打击!有关grub的Splash

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

时间:2009-09-09

来源:互联网

前两天,将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上很快就解决了。

信心倍受摧残。

作者: cqlhj1971   发布时间: 2009-09-09

补充下:
新编译的grub运行后,在它的命令行下,输入h,命令列表中根本没有splashimage。
而在弄成功的ubuntu中的grub命令列表中就有splashimage命令。
估计还是编译过程中的问题。

作者: cqlhj1971   发布时间: 2009-09-09

不大清楚,这些玩意是否也需要 framebuffer 的?

作者: d00m3d   发布时间: 2009-09-09

乘机推荐一下GRUB2.
支持Jpeg或png, 全屏图像
我安装LFS的GRUB时, 发现传说中的GRUB2可以下载了, 毫不犹豫的扔掉GRUB选择了GRUB2..

作者: swordhui   发布时间: 2009-09-09

剑兄可说说用後感否?

作者: d00m3d   发布时间: 2009-09-10

剑兄可找到加启动密码的命令 或 模块?
grub2 N年前已可用,不被大多数人支持只因其没有完全覆盖 grub 特性。
给 grub2 加密码的补丁已出现很多年,不知官方现在是否合并相关代码。

作者: 聚焦深空   发布时间: 2009-09-10

lz,把splashimage (hd0,2)/boot/grub/user.xpm.gz这个这样写试一下


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

作者: 松心心   发布时间: 2009-09-10

非常感谢你们抽出时间来关注!

我再试试。

作者: cqlhj1971   发布时间: 2009-09-10

引用:
作者: d00m3d
剑兄可说说用後感否?
用着感觉还不错, 我没做过多深入测试.
对使用者来说, 最显著的变化是扇区号从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的大小非常重要.

作者: swordhui   发布时间: 2009-09-10

引用:
作者: 聚焦深空
剑兄可找到加启动密码的命令 或 模块?
grub2 N年前已可用,不被大多数人支持只因其没有完全覆盖 grub 特性。
给 grub2 加密码的补丁已出现很多年,不知官方现在是否合并相关代码。
还没注意密码功能, 有空研究一下.
防止别人在启动命令里加入 init=/bin/bash?

作者: swordhui   发布时间: 2009-09-10

http://wiki.archlinux.org/index.php/Graphical_GRUB

看看这个会不会有所帮助?

作者: cityzz   发布时间: 2009-09-10

Grub2 现在还未有空研究,Legacy Grub 又不尽如意,基於它开发的 Grub4dos 倒是有点进取

作者: d00m3d   发布时间: 2009-09-10

GRUB2还是值得一试的,至少功能强大多了,支持点图形绝对不是问题

作者: pinkme005   发布时间: 2009-09-10