窄口牛 发表于 2016-10-7 00:49:17

grub2源码如何编译成可定制的命令模块

可否出个教程?

窄口牛 发表于 2016-10-7 00:49:56

下载了20160928的新源码包,不会编译。

窄口牛 发表于 2016-10-7 10:10:51

这种有makefile,直接执行就可以了?

wintoflash 发表于 2016-10-7 10:15:24

窄口牛 发表于 2016-10-7 10:10
这种有makefile,直接执行就可以了?

图片更新了一下。要严格按照我给的教程来做。
makefile就是makefile,不是带扩展名的

窄口牛 发表于 2016-10-7 10:24:36

哦,下载的这个不是官方的,好像是个人搬运维护的。

wintoflash 发表于 2016-10-7 10:32:26

窄口牛 发表于 2016-10-7 10:24
哦,下载的这个不是官方的,好像是个人搬运维护的。

那就省略掉git clone那个步骤,直接cd进去,从./autogen.sh那里开始做

窄口牛 发表于 2016-10-7 10:36:53

http://git.savannah.gnu.org
这里的

wintoflash 发表于 2016-10-7 10:40:47

窄口牛 发表于 2016-10-7 10:36
http://git.savannah.gnu.org
这里的

这个就是官方的

窄口牛 发表于 2016-10-7 11:01:40

哦,明白了。

2013qiuwei0209 发表于 2016-10-9 20:11:05

窄口牛 发表于 2016-10-7 10:36
http://git.savannah.gnu.org
这里的

ftp://alpha.gnu.org/gnu/grub/
这个也不错啊,看看神雕的winly,里面有点编译的,看了你就会怎么configure了,生成了makefile,一切就好办了

2013qiuwei0209 发表于 2016-10-9 20:13:18

之前自己整理了一部分,之后就没弄了,没时间了

1.grub2源码获取
1) grub2源码地址:ftp://alpha.gnu.org/gnu/grub/
2.linux下编译grub2源码
1) configure配置(BIOS模式)
$ ./configure --prefix=/share/grub2lib --with-platform=pc --target=i386
2) configure配置 (UEFI模式)
$ ./configure --prefix=/share/grub2lib --with-platform=efi --target=i386
$ ./configure --prefix=/share/grub2lib --with-platform=efi --target=x86_64
3.grub2打包
BIOS模式定制:
注意了,BIOS模式對應的是MBR分區表,那麼啟動扇區的扇區數量為63
因為啟動扇區數量為63,有時定制BIOS模式時定制的模塊可以不要太多,基本上取biosdisk part_msdos fat exfat ntfs這些模塊就可以了,還有下面給出的定制命令,其實也能直接用的,原因後面再講

grub-mkimage.exe -d I386-PC -p (hd0,1)/Grub2/BIOS -o Core.img -O i386-pc biosdisk part_msdos fat exfat ext2 ntfs normal iso9660 search_fs_file

UEFI模式的32Bit定制:
grub-mkimage.exe -d i386-efi-p (hd0,1)/Grub2/UEFI_i386-efi -o I386-EFI.EFI -Oi386-efi part_gpt part_msdos disk fat exfat ext2 ntfs appleldr hfs iso9660 normal search_fs_file

UEFI模式的64Bit定制:
grub-mkimage.exe -d x86_64-efi-p (hd0,1)/Grub2/UEFI_x86_64-efi -o X86_64-EFI.EFI -O x86_64-efi part_gpt part_msdos disk fat exfat ext2 ntfs appleldr hfs iso9660 normal search_fs_file

grub-mkimage命令參數解釋(注意,大小寫,不能搞混,以及路徑用的是正斜杠 / ):
-d 表示在定制的模式時需要用到的文件所在的路徑,壹般不用給完整路徑,直接給出和模式對應的文件夾名稱就行了,在定制時會默認的路徑,在Windows下,我的Grub2包放在C盤,那麼路徑是C:\grub-2.02~beta2-for-windows,模式對應的路徑默認自然就是C:\grub-2.02~beta2-for-windows\i386-pc
-p 定制後對應的路徑,因為涉及Grub2的prefix变量值以及Grub2啟動路勁,所以這裡才是基本完成路徑定制,不過還有些問題我後面再講
-o (這裡是小o) 表示定制後輸出的文件名稱以及路徑,壹般只寫文件名稱就行,在Windows下,會直接輸出到Grub2包所在的路徑中
-O (這裡是大O)表示定制模式,後面接的自然就是包含的模塊,可以自己在模式對應的目錄裏面查找并選需要的模塊

窄口牛 发表于 2016-10-9 20:58:52

定制掌握了,编译需要学习。

窄口牛 发表于 2016-10-9 21:00:55

之前在乌班图下报错,抽空再鼓捣,发现源码更新了,所以想编译。

laosiji425 发表于 2016-10-15 09:56:32

没来得急看,应该不错,先帮你顶











static/image/common/sigline.gif
BBIN平台首选大全bbinlt.com

devilma 发表于 2016-10-20 10:13:25

学习了!谢谢!!

tdqk003 发表于 2016-10-20 15:00:44

大师啊你什么时候出个教程啊

tdqk003 发表于 2016-10-20 15:03:45

我也像弄个呢   我感觉你网盘里的很好 就一个cfg文件,但是启动报错
error:disk "mdmdxsk" not found

dnns 发表于 2016-10-24 00:17:11

窄口牛 发表于 2016-10-9 21:01
之前在乌班图下报错,抽空再鼓捣,发现源码更新了,所以想编译。

编译是最简单的一步了吧. --
虽然不明白为什么你要编译. 因为 比如说 grub-2.02~beta2 不是有 grub-2.02~beta2-for-windows.zip Windows 下已经可用的模块了? 你是想修改里面相关信息编译还是想打到某个功能修改模块再编译呢.

这里举例吧. ubuntu 好. debian 也好. 都差不多. 如果 是 redhat 分支的就别参考下面的. 因为包名不一样.

# redhat 分支的 linux 别照 copy
apt-get install make bison gcc flex

wget http://alpha.gnu.org/gnu/grub/grub-2.02~beta2.tar.xz
tar -xvf grub-2.02~beta2.tar.xz

# 然后进入目录.
grub-2.02~beta2

# 用传统 bios 的话也就是生成 mbr
./configure --target=i386 --with-platform=pc

# efi ia32
./configure --target=i386 --with-platform=efi

# efi x64
./configure --target=x86_64 --with-platform=efi

# 这些参数看自己需求加在 configure 后
# --enable-grub-mkfont
# --with-platform=emu --enable-grub-emu-sdl --enable-grub-emu-usb

# -j 8 看你电脑配置了. 如果不是很给力直接 make 就好了. 等不及还是 -j 8 吧.
make -j 8

如果报错. 一般会具体列出哪里出的错. 如果你看不明白. 可以发上来我帮你看看
至于 mkimage 就不多说了. 这取决于你喜欢在 windows 下还是 linux 下. 反正都是用脚本的. 但如果你常用系统是 windows 那还是回 windows 去生成. 批处理写个 2个模板 1个针对 mbr 的 1个针对 efi 的. efi 改改就 64 32 通用.

毕竟初接触 linux 不建议你使用桌面版的. 第1看的云里雾去的. 第2好不效率. 你若是虚拟机里装的 linux 还是在 windows 下直接 ssh(putty) 和 scp(winscp) ssh 敲命令或者复制粘贴命令. scp 上传下载文件吧.第3安装起来太久了. 还要下个大大的镜像. 安装后体积也大. debian 就挺不错的有小镜像. 又或者推荐你用 centos 比较旧的 server 版.

不过还是取决你个人喜好吧.


wengzhenquan 发表于 2020-11-6 04:00:05

wintoflash 发表于 2016-10-7 10:15
图片更新了一下。要严格按照我给的教程来做。
makefile就是makefile,不是带扩展名的

Windows环境下 怎么make?

窄口牛 发表于 2020-11-6 06:42:06

本帖最后由 窄口牛 于 2020-11-6 07:28 编辑

bug10下可以用wsl,搭建环境又需要学习了。

窄口牛 发表于 2020-11-6 08:13:05

现在不需要编译了,你直接下载文件管理器,就是最新的grub2了。愿意用文件管理器,就直接用,不愿意就用里面现成的grub2自己定制就行了。

my9823 发表于 2020-11-6 11:17:19

虽然不懂编程,但是你需要有点linux知识。

my9823 发表于 2020-11-6 18:04:55

楼主推荐个链接看看,虽然时时早期的翻译,不过简单易懂,关于linux下软件的编译安装
http://www.jinbuguo.com/linux/understand_package_install.html
页: [1]
查看完整版本: grub2源码如何编译成可定制的命令模块