|
本帖最后由 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下)
- set pager=1
- insmod all_video
- insmod video_bochs
- insmod video_cirrus
- insmod efi_gop
- insmod efi_uga
- insmod font
- insmod gfxterm
- insmod gfxmenu
- insmod gettext
- insmod jpeg
- insmod ext2
- #加载unicode字体显示中文
- loadfont /neyan/grub2_efi/fonts/unicode.pf2
- set locale_dir=/neyan/grub2_efi/locale
- set lang=zh_CN
- #设置分辨率
- set gfxmode=auto
- terminal_output gfxterm
- background_image /neyan/grub2_efi/back.jpg
- #倒计时
- set timeout=3
- #颜色
- set color_normal=green/black
- set color_highlight=white/cyan
- menuentry "OpenWrt" {
- set root='(hd0,msdos1)'
- linux /boot/vmlinuz root=PARTUUID=cacf3a9c-02 rootfstype=ext2 rootwait intel_idle.max_cstate=1 console=tty0 console=ttyS0,38400n8 noinitrd
- }
- menuentry "OpenWrt (failsafe)" {
- linux /boot/vmlinuz failsafe=true root=PARTUUID=cacf3a9c-02 rootfstype=ext2 rootwait intel_idle.max_cstate=1 console=tty0 console=ttyS0,38400n8 noinitrd
- }
- menuentry "启动EFI SHELL" {
- echo "正在启动EFI SHELL,请等待...."
- search --file /rdtobot/efi_file/boot/bootx64.efi --set=root
- chainloader ($root)/rdtobot/efi_file/boot/bootx64.efi
- }
- menuentry "重启"{
- reboot
- }
- menuentry "关机"{
- halt
- }
复制代码
至此,可uefi启动的openwrt启动盘就制作完毕了。
重启效果图:
x86基于linfang的固件定制的uefi启动的固件(只在虚拟机下测试,本人无实体机测试环境,大家下载后反馈哈)
链接:http://pan.baidu.com/s/1boKAstL 密码:6u74
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|