无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 9254|回复: 22
打印 上一主题 下一主题

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

[复制链接]
跳转到指定楼层
1#
发表于 2016-10-7 00:49:17 来自手机 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
2#
 楼主| 发表于 2016-10-7 00:49:56 来自手机 | 只看该作者
下载了20160928的新源码包,不会编译。
回复

使用道具 举报

3#
 楼主| 发表于 2016-10-7 10:10:51 来自手机 | 只看该作者
这种有makefile,直接执行就可以了?

Screenshot_2016-10-07-10-09-29.png (77.93 KB, 下载次数: 147)

Screenshot_2016-10-07-10-09-29.png

点评

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

使用道具 举报

4#
发表于 2016-10-7 10:15:24 | 只看该作者
窄口牛 发表于 2016-10-7 10:10
这种有makefile,直接执行就可以了?

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

点评

Windows环境下 怎么make?  详情 回复 发表于 2020-11-6 04:00
回复

使用道具 举报

5#
 楼主| 发表于 2016-10-7 10:24:36 | 只看该作者
哦,下载的这个不是官方的,好像是个人搬运维护的。

点评

非官方的,不安全。 那就省略掉git clone那个步骤,直接cd进去  详情 回复 发表于 2016-10-7 10:32
回复

使用道具 举报

6#
发表于 2016-10-7 10:32:26 | 只看该作者
窄口牛 发表于 2016-10-7 10:24
哦,下载的这个不是官方的,好像是个人搬运维护的。


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

使用道具 举报

7#
 楼主| 发表于 2016-10-7 10:36:53 | 只看该作者

点评

ftp://alpha.gnu.org/gnu/grub/ 这个也不错啊,看看神雕的winly,里面有点编译的,看了你就会怎么configure了,生成了makefile,一切就好办了  详情 回复 发表于 2016-10-9 20:11
这个就是官方的  详情 回复 发表于 2016-10-7 10:40
回复

使用道具 举报

8#
发表于 2016-10-7 10:40:47 | 只看该作者
窄口牛 发表于 2016-10-7 10:36
http://git.savannah.gnu.org
这里的

这个就是官方的
回复

使用道具 举报

9#
 楼主| 发表于 2016-10-7 11:01:40 来自手机 | 只看该作者
哦,明白了。
回复

使用道具 举报

10#
发表于 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,一切就好办了
回复

使用道具 举报

11#
发表于 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 -O  i386-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)表示定制模式,後面接的自然就是包含的模塊,可以自己在模式對應的目錄裏面查找并選需要的模塊
回复

使用道具 举报

12#
 楼主| 发表于 2016-10-9 20:58:52 来自手机 | 只看该作者
定制掌握了,编译需要学习。
回复

使用道具 举报

13#
 楼主| 发表于 2016-10-9 21:00:55 来自手机 | 只看该作者
之前在乌班图下报错,抽空再鼓捣,发现源码更新了,所以想编译。
回复

使用道具 举报

14#
发表于 2016-10-15 09:56:32 | 只看该作者
没来得急看,应该不错,先帮你顶












BBIN平台首选大全bbinlt.com
回复

使用道具 举报

15#
发表于 2016-10-20 10:13:25 来自手机 | 只看该作者
学习了!谢谢!!
回复

使用道具 举报

16#
发表于 2016-10-20 15:00:44 | 只看该作者
大师啊  你什么时候出个教程啊
回复

使用道具 举报

17#
发表于 2016-10-20 15:03:45 | 只看该作者
我也像弄个呢   我感觉你网盘里的很好 就一个  cfg文件,但是启动报错
error:disk "mdmdxsk" not found
回复

使用道具 举报

18#
发表于 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 版.

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


回复

使用道具 举报

19#
发表于 2020-11-6 04:00:05 来自手机 | 只看该作者
wintoflash 发表于 2016-10-7 10:15
图片更新了一下。要严格按照我给的教程来做。
makefile就是makefile,不是带扩展名的

Windows环境下 怎么make?
回复

使用道具 举报

20#
 楼主| 发表于 2020-11-6 06:42:06 来自手机 | 只看该作者
本帖最后由 窄口牛 于 2020-11-6 07:28 编辑

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

使用道具 举报

21#
 楼主| 发表于 2020-11-6 08:13:05 来自手机 | 只看该作者
现在不需要编译了,你直接下载文件管理器,就是最新的grub2了。愿意用文件管理器,就直接用,不愿意就用里面现成的grub2自己定制就行了。
回复

使用道具 举报

22#
发表于 2020-11-6 11:17:19 来自手机 | 只看该作者
虽然不懂编程,但是你需要有点linux知识。
回复

使用道具 举报

23#
发表于 2020-11-6 18:04:55 | 只看该作者
楼主推荐个链接看看,虽然时时早期的翻译,不过简单易懂,关于linux下软件的编译安装
http://www.jinbuguo.com/linux/understand_package_install.html
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-4-20 00:19

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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