找回密码
 立即注册
img_loading
智能检测中

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888广告投放联系QQ68610888
查看: 26735|回复: 18

支持uefi启动的openwrt

[复制链接]
发表于 2017-4-11 16:50 | 显示全部楼层 |阅读模式
本帖最后由 kohillyang 于 2017-4-13 14:32 编辑

前几天似乎有人问怎么uefi启动来着,当时我回答说在前面压缩一个fat32分区,然后加上uefi引导就行了,但是我没仔细说,今天抽空写一篇教程,大神轻喷。
本帖中的启动盘来源于
<http://bbs.wuyou.net/forum.php?mod=viewthread&tid=310626>


基础知识:
1. uefi启动分区只能是fat,fat32,linux下新建的默认为fat,即fat16,因此uefi的启动文件必须放在fat分区。
2. openwrt为linux内核,一般使用linux引导,因此启动顺序为:uefi-grub2-linux内核。
3. linux内核即boot分区下的/boot/vmlinuz,或者编译出来的xxx-linuz,这是一个压缩的内核,在启动的过程中会有一个自解压的过程。
4. 内核启动过程中,会提供一个/挂载点,随后可以挂载你自己的root到/挂载点。我们常用的chroot就是切换挂载点/的过程。

openwrt分区
根据编译出来的img文件,默认会有两个ext4(也可能是其他格式的)分区,第一个分区为boot分区,默认不是fat格式,我们需要把它里面的文件提取出来,然后把第一个分区格式化为fat格式,然后把复制出来的文件再复制回去。


第二个分区即rootfs,这个分区的位置在grub.cfg中由UUID指定,如下图所示:

类似的,我们对我们的磁盘分两个区,第一个为FAT32,第二个为ext2,作为我们的root分区。

在ubuntu下用cp  -a指令把img的第二个分区的所有内容复制到该分区。
用blkid指令查看新建的分区的UUID,如下图中的/dev/sdb2中cac3afc9a-2,末尾的2代表这是第二个分区。

把附件中的文件解压到第一个分区并,更改gub2.cfg中的UUID(在/media/kohill/2F09-0C37/neyan/grub2_efi下)

  1. set pager=1

  2. insmod all_video

  3. insmod video_bochs

  4. insmod video_cirrus

  5. insmod efi_gop

  6. insmod efi_uga

  7. insmod font

  8. insmod gfxterm

  9. insmod gfxmenu

  10. insmod gettext

  11. insmod jpeg

  12. insmod ext2



  13. #加载unicode字体显示中文

  14. loadfont /neyan/grub2_efi/fonts/unicode.pf2

  15. set locale_dir=/neyan/grub2_efi/locale

  16. set lang=zh_CN



  17. #设置分辨率

  18. set gfxmode=auto

  19. terminal_output gfxterm

  20. background_image /neyan/grub2_efi/back.jpg



  21. #倒计时

  22. set timeout=3



  23. #颜色

  24. set color_normal=green/black

  25. set color_highlight=white/cyan





  26. menuentry "OpenWrt" {

  27. set root='(hd0,msdos1)'

  28. linux /boot/vmlinuz root=PARTUUID=cacf3a9c-02 rootfstype=ext2 rootwait intel_idle.max_cstate=1 console=tty0 console=ttyS0,38400n8 noinitrd

  29. }



  30. menuentry "OpenWrt (failsafe)" {

  31.         linux /boot/vmlinuz failsafe=true root=PARTUUID=cacf3a9c-02 rootfstype=ext2 rootwait intel_idle.max_cstate=1 console=tty0 console=ttyS0,38400n8 noinitrd

  32. }

  33. menuentry "启动EFI SHELL" {

  34. echo "正在启动EFI SHELL,请等待...."

  35. search --file /rdtobot/efi_file/boot/bootx64.efi --set=root

  36. chainloader ($root)/rdtobot/efi_file/boot/bootx64.efi

  37. }

  38. menuentry "重启"{

  39. reboot

  40. }
  41. menuentry "关机"{

  42. halt

  43. }
复制代码



至此,可uefi启动的openwrt启动盘就制作完毕了。
重启效果图:





x86基于linfang的固件定制的uefi启动的固件(只在虚拟机下测试,本人无实体机测试环境,大家下载后反馈哈)
链接:http://pan.baidu.com/s/1boKAstL 密码:6u74













本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
发表于 2017-4-11 21:21 | 显示全部楼层
看看好不好用
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2017-4-11 21:22 | 显示全部楼层
你问我支持不支持
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-4-12 01:07 来自手机 | 显示全部楼层
帖子沉了…
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2017-4-12 13:36 | 显示全部楼层
我想试下在电脑棒及迷你主机上用下
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2017-4-12 15:18 | 显示全部楼层
收藏思考,感谢分享。
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2017-4-12 17:00 | 显示全部楼层
技术文,支持
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2017-4-13 09:40 | 显示全部楼层
真土豪用UEFI主板做软路由。。。。。。

点评

记得之前有人问我有没有可以UEFI启动的 表示大部分主板都支持UEFI吧,甚至有只支持UEFI的,比如大部分寨板。不支持的大多都是几年前的了。  详情 回复 发表于 2017-4-13 12:25
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-4-13 12:25 来自手机 | 显示全部楼层
tartarus 发表于 2017-4-13 09:40
真土豪用UEFI主板做软路由。。。。。。

记得之前有人问我有没有可以UEFI启动的

表示大部分主板都支持UEFI吧,甚至有只支持UEFI的,比如大部分寨板。不支持的大多都是几年前的了。
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2017-4-13 13:41 | 显示全部楼层
oh,卖糕,行是行啊。

我可怜的路由8M flash.

点评

有USB的话可以把软件装在U盘  详情 回复 发表于 2017-4-13 14:27
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-4-13 14:27 | 显示全部楼层
eeff11 发表于 2017-4-13 13:41
oh,卖糕,行是行啊。

我可怜的路由8M flash.

有USB的话可以把软件装在U盘

点评

谢谢啊,行是行,不过那USB2.0的速度  详情 回复 发表于 2017-4-14 10:43
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2017-4-14 10:43 | 显示全部楼层
kohillyang 发表于 2017-4-13 14:27
有USB的话可以把软件装在U盘

谢谢啊,行是行,不过那USB2.0的速度
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2017-4-21 15:39 | 显示全部楼层
x86基于linfang的固件定制的uefi启动的固件,, 经过虚拟机与实体机测试,都启不动,卡在界面~

点评

我这边测试的是没有画面但是可以正常启动,似乎是默认分辨率太高openwrt无法驱动的原因,虚拟机上你加上虚拟串口就可以看看到事实上是启动了的。参考qemu的命令sudo kvm --bios ./OVMF.fd /dev/sdb -net nic,model  详情 回复 发表于 2017-4-22 00:59
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-4-22 00:59 | 显示全部楼层
samloya 发表于 2017-4-21 15:39
x86基于linfang的固件定制的uefi启动的固件,, 经过虚拟机与实体机测试,都启不动,卡在界面~

我这边测试的是没有画面但是可以正常启动,似乎是默认分辨率太高openwrt无法驱动的原因,虚拟机上你加上虚拟串口就可以看看到事实上是启动了的。参考qemu的命令sudo kvm  --bios  ./OVMF.fd /dev/sdb -net nic,model=ne2k_pci -net user -soundhw es1370 -serial stdio

其中/dev/sdb是你的U盘或者img挂载的虚拟磁盘,OVMf.fd是给qemu用的uefi固件,


参考https://github.com/tianocore/tianocore.github.io/wiki/How-to-run-OVMF


https://sourceforge.net/projects/edk2/files/OVMF/
平板码字,比较累,有问题回复,我会继续跟进。
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

发表于 2018-7-26 10:44 | 显示全部楼层
这个东西有什么差别么,软路由启动关系?
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

欢迎大家光临恩山无线论坛

只谈技术、莫论政事!切勿转播谣言!为了你也为了他人。
只谈技术、莫论政事!(点击见详情) 切记不要随意传播谣言,把自己的日子过安稳了就行,为了自己好也为了大家好。 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。

查看 »

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2025-6-26 10:54

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com

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