|
发表于 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的大小非常重要. |
|