grub2更新 2008-07-25

启动讨论 grub/grub2/syslinux/grub4dos/Lilo
bean
帖子: 238
注册时间: 2008-06-03 12:25

grub2更新 2008-07-25

#1

帖子 bean » 2008-07-25 15:43

最近grub2增加了不少新的东西,我编译了一个新的bootcd,下载地址:

http://nufans.net/grub4dos/grub2/grub2- ... -07-25.iso

一些重要的新功能介绍:

1,cygwin支持

最新的svn代码可以不经修改地在cygwin下编译。bootcd的版本就是使用cygwin编译,并且把一些重要的工具也加上了,比如说grub-mkimage.exe。

2,64-bit EFI支持

新版本grub2支持x86_64的EFI,比较新的Macbook都是使用64位EFI。不过,编译64位EFI只能在linux下,我没有把二进制版本加到bootcd里。

bootcd里包含32位EFI映像,它也是使用cygwin编译的,使用时把它们复制到相应的目录就行了。

3, 保存环境变量

新版本grub2支持保存环境变量的值。首先,你需要创建一个grubenv文件并放到grub目录里,例如/boot/grub。bootcd里就有一个grubenv,你也可以使用grub-editenv来创建。

grub-editenv grubenv create

grub-editenv还有其他的功能,比如说;

a. 显示grubenv里存储的变量:

grub-editenv grubenv ls

b. 设置grubenv里变量的值

grub-editenv grubenv set default=1

然后,在grub的配置文件grub.cfg里,使用以下的命令就可以装载grubenv里的变量了:

load_env

需要保存变量值时,使用save_env,例如:

save_env default

这就把default的值保存到grubenv里,下次启动时用load_env就会读取新的值了。

4. LZMA压缩

新的core.img使用lzma进行压缩,其效果比原来lzo要好得多。

5. ext4支持

新版本的grub2支持ext4文件系统。

6. uuid支持

新版本的grub2支持uuid。使用ls -l可以查看文件系统的uuid。search命令也可以按照uuid来进行搜索。
billbear
帖子: 3681
注册时间: 2008-05-03 23:42

#2

帖子 billbear » 2008-07-25 20:01

先顶再看
头像
ptptptptptpt
帖子: 3711
注册时间: 2006-09-19 18:16

#3

帖子 ptptptptptpt » 2008-07-25 22:27

好强大啊!

看了更要顶
go2
帖子: 153
注册时间: 2008-05-17 4:14

#4

帖子 go2 » 2008-07-25 23:09

bean:
刚去了znpc看了很多,不好意思提问,那里关于grub太专业了。这里想请教几个问题
1.grub2如何加载模块,是在编译时加?还是使用时加?
2.如果是使用是加,是否每次都要重覆动作?
3.grub2是否没法内置菜单?
4.grub2可以自动查找EFI文件夹,启动?
5.grub2对EFI的支持是否也就可以启动mac?

谢谢大使!
bean
帖子: 238
注册时间: 2008-06-03 12:25

#5

帖子 bean » 2008-07-25 23:25

go2 写了:bean:
刚去了znpc看了很多,不好意思提问,那里关于grub太专业了。这里想请教几个问题
1.grub2如何加载模块,是在编译时加?还是使用时加?
模块在使用时加载。而且,grub2能自动加载模块。比如说,hexdump命令在hexdump.mod里,你在输入hexdump命令的时候,如果内存里没有hexdump.mod,会自动加载。另外,grub2也会自动处理模块间的依赖关系。

你也可以用insmod来手动加载,lsmod来显示当前加载的模块,rmmod来卸载。用法和linux里差不多的。
3.grub2是否没法内置菜单?
grub2里支持memdisk。也就是说,你可以把所有需要使用的内容,包括菜单文件,用cpio打包,然后加到内核里。这个有点像initrd,不过文件是包含到内核core.img里,而不是一个分开的文件。grub-mkimage里可以使用-m来指定memdisk文件。
4.grub2可以自动查找EFI文件夹,启动?
grub2里可以用search命令来寻找文件的。
5.grub2对EFI的支持是否也就可以启动mac?
可以,grub2 efi可以调用其他efi映像,也可以启动Linux。osx其实就是通过efi映像来启动的。
go2
帖子: 153
注册时间: 2008-05-17 4:14

#6

帖子 go2 » 2008-07-25 23:33

bean:谢谢你,我没想到你这么快能回覆,让我对grub2有清楚的了解,也希望你和climbing、不点等各位大侠能让grub2更完善及更强大!
billbear
帖子: 3681
注册时间: 2008-05-03 23:42

#7

帖子 billbear » 2008-07-25 23:56

试了一下,
rEFIt 不认光盘上的 efi 部分,只认 bios 部分,这大概是 rEFIt 的问题,可能光盘上存在 bios 引导的部分就会使它忽略 efi 部分,把 efi 文件夹单独刻盘就在 rEFIt 出现从 efi 引导的选项。奇怪的是,如果单刻 efi 文件夹总是刻录出错,难道只刻几百k会出问题吗?后来我又加刻了个 5M 的文件才成功。然后从光盘的 efi 引导就会进入 grub rescue ,而同样的 efi 文件夹如果拷到硬盘引导就正常出来菜单,何解?
接下来,菜单里引导 OS X 的选项无效,不知何故, search 是找到正确位置的。不用search,直接指定是可以启动的。
billbear
帖子: 3681
注册时间: 2008-05-03 23:42

#8

帖子 billbear » 2008-07-26 0:19

还有,刻 iso,在 macbook 以 bios 方式引导光盘,ls 看不到移动硬盘。
在一台ibm笔记本上是可以看到移动硬盘的,于是我就想,是不是只有 bios 支持 usb 的,grub2 才看到呢,我又拿到一台奔3的不支持 usb 启动的机器上试,结果 ls 列出内置 (hd0) (hd0,1) 然后就说 "out of disk" 不再列了,上一次跟你讨论也出现过,你大概还记得,那次是 grub efi 启动,ls 到移动硬盘停住了,out of disk, 没有继续列内置硬盘。我想,即使一块硬盘有问题,它应该接着列下一块才对。
另外就是 macbook 以 bios 方式引导,halt 命令会死机。 pc 正常。
bean
帖子: 238
注册时间: 2008-06-03 12:25

#9

帖子 bean » 2008-07-26 0:21

billbear 写了:试了一下,
rEFIt 不认光盘上的 efi 部分,只认 bios 部分,这大概是 rEFIt 的问题,可能光盘上存在 bios 引导的部分就会使它忽略 efi 部分,把 efi 文件夹单独刻盘就在 rEFIt 出现从 efi 引导的选项。奇怪的是,如果单刻 efi 文件夹总是刻录出错,难道只刻几百k会出问题吗?后来我又加刻了个 5M 的文件才成功。然后从光盘的 efi 引导就会进入 grub rescue ,而同样的 efi 文件夹如果拷到硬盘引导就正常出来菜单,何解?
哦,犯了一个低级错误,grub.efi里没有带iso9660,你用grub-mkimage生成一个新的grub.efi就行了:

./grub-mkimage -d . -o grub.efi pc gpt fat ext2 hfsplus ntfs iso9660
接下来,菜单里引导 OS X 的选项无效,不知何故, search 是找到正确位置的。不用search,直接指定是可以启动的。
刚才试了一下,search后的确有些问题,有空时测试一下。
另外就是 macbook 以 bios 方式引导,halt 命令会死机。 pc 正常。
这个是正常的, macbook的bios没有实现apm,因此用halt关不了机。在一些笔记本上也会有这个问题。
billbear
帖子: 3681
注册时间: 2008-05-03 23:42

#10

帖子 billbear » 2008-07-26 1:20

明白。
其实我最关心的是 grub2 能否在 linux 内核之前找到 usb 存储设备。 grub2 efi 看来是可以的,grub2 bios 在 macbook 上好像还不行。我还是希望能以 bios 方式从 usb 启动 macbook,我希望用一个 u 盘量产一部分做 grub2 cd,macbook 是支持从 usb cd 引导的,然后就可以启动 u 盘剩下部分里的 linux。
我这个 u 盘量产出一个 cd 以后,剩下的部分好像不是 usb-hdd 了,不能引导,只有从 cd 部分引导。上次我有提到, grub2 efi 也不能认出这剩下的 u 盘部分。但是 linux 内核是可以认到的。
另外, grub2 bios 不认我的 gpt 内置磁盘,内置磁盘上同时还有一个 MBR 表,也不认?只列出一个 (hd0) ,没有列出分区。我记得 grub legacy 是认 gpt 的, 而 grub4dos 只认 MBR.
billbear
帖子: 3681
注册时间: 2008-05-03 23:42

#11

帖子 billbear » 2008-07-26 1:47

保存环境变量是个很酷的功能,假如从 cd 启动 grub2,能否调出硬盘上 /boot/grub 里面的环境变量?
bean
帖子: 238
注册时间: 2008-06-03 12:25

#12

帖子 bean » 2008-07-26 1:50

我想pc和gpt模块同时使用可能会有些影响。要不试试只用gpt,看有没有改进?
bean
帖子: 238
注册时间: 2008-06-03 12:25

#13

帖子 bean » 2008-07-26 1:51

billbear 写了:保存环境变量是个很酷的功能,假如从 cd 启动 grub2,能否调出硬盘上 /boot/grub 里面的环境变量?
可以调出,用-f参数可以指定自己的文件,而不使用缺省的grubenv,例如:

load_env -f (hd0,0)/myenv

save_env -f (hd0,0)/myenv default

另外,其实也可以使用脚本功能,自动搜索配置文件。例如:

if search -s -f /myenv; then
load_env -f /myenv
fi
头像
SecretZero
帖子: 1670
注册时间: 2007-08-30 5:39

#14

帖子 SecretZero » 2008-07-26 2:20

等小白都挂了我再试,

现在8.10够我折腾了。
深度,值得深入!
http://bbs.deepin.org/?u=348684

最新的综艺魔法相册
http://www.77studio.net/?fromuid=344
billbear
帖子: 3681
注册时间: 2008-05-03 23:42

#15

帖子 billbear » 2008-07-26 10:13

开始折腾 8.10 了?
回复