无忧启动论坛

标题: 发现一个似乎可以逆天的神器。 [打印本页]

作者: 2012hsj17    时间: 2014-3-8 18:01
标题: 发现一个似乎可以逆天的神器。
本帖最后由 2012hsj17 于 2014-3-8 19:03 编辑

我下载了一个UEFi版的Android,发现它的引导器非常特殊。
Gummiboot.efi
引导方式把..\loader\entries\*.conf文件做为菜单文件。
每一个都是独立的引导项。
现在提供引导器:
Gummiboot.7z (449.64 KB, 下载次数: 340)
作者: 2012hsj17    时间: 2014-3-8 21:16
最主要的是这个引导器似乎可以替代GRUB。注意是GRUB,不是GRUB2。也就是说理论上可以引导传统PE。
作者: xinyifly    时间: 2014-3-8 21:25
先看看。每次在这个论坛,最让我郁闷的是找不到专门讲引导的一些东西,都是给个工具,不给一些手动修改引导的说明。
作者: xinyifly    时间: 2014-3-8 21:27
额,突然想起来,之前为了带区卷改回了MBR引导。
作者: fujianabc    时间: 2014-3-9 02:17
下来看了一下,就是一堆efi执行文件而已。
何以认为是可以取代grub,而且可以引导传统的pe的,又何以逆天??
作者: 2012hsj17    时间: 2014-3-9 02:36
fujianabc 发表于 2014-3-9 02:17
下来看了一下,就是一堆efi执行文件而已。
何以认为是可以取代grub,而且可以引导传统的pe的,又何以逆天 ...

看过那些conf文件了吗?里面的内容相当于grub里面的menu.lst 而且编码相近。也就是说只需要简单的转化,大多数的Linux和GRUB的PE很有可能可以在UEFI下加载运行。
作者: fujianabc    时间: 2014-3-9 03:27
2012hsj17 发表于 2014-3-9 02:36
看过那些conf文件了吗?里面的内容相当于grub里面的menu.lst 而且编码相近。也就是说只需要简单的转化, ...

这些conf文件只是这个gummiboot的执行命令而已,类似于grub2中所执行的命令。android uefi版通过这个gummiboot来加载启动

没看出来和grub有何关系,更没看出bios下的pe通过这个东西执行的可能性。
作者: 2012hsj17    时间: 2014-3-9 11:35
注意一下,grub2引导Linux时指向efi文件。也就是说必须把Linux改编。而gummiboot则是指向了非efi文件,和grub一样,不用改代码。
作者: fujianabc    时间: 2014-3-9 17:17
2012hsj17 发表于 2014-3-9 11:35
注意一下,grub2引导Linux时指向efi文件。也就是说必须把Linux改编。而gummiboot则是指向了非efi文件,和gr ...

uefi+grub2启动linux也是加载linux内核和initrd两条命令,不需要指向.efi文件
作者: 2012hsj17    时间: 2014-3-9 21:24
fujianabc 发表于 2014-3-9 17:17
uefi+grub2启动linux也是加载linux内核和initrd两条命令,不需要指向.efi文件

一下是64位乌班图14.04的grub.cfg文件的代码。

  1. if loadfont /boot/grub/font.pf2 ; then
  2.         set gfxmode=auto
  3.         insmod efi_gop
  4.         insmod efi_uga
  5.         insmod gfxterm
  6.         terminal_output gfxterm
  7. fi

  8. set menu_color_normal=white/black
  9. set menu_color_highlight=black/light-gray

  10. menuentry "Try Ubuntu without installing" {
  11.         set gfxpayload=keep
  12.         linux        /casper/vmlinuz.efi  file=/cdrom/preseed/ubuntu.seed boot=casper quiet splash --
  13.         initrd        /casper/initrd.lz
  14. }
  15. menuentry "Install Ubuntu" {
  16.         set gfxpayload=keep
  17.         linux        /casper/vmlinuz.efi  file=/cdrom/preseed/ubuntu.seed boot=casper only-ubiquity quiet splash --
  18.         initrd        /casper/initrd.lz
  19. }
  20. menuentry "OEM install (for manufacturers)" {
  21.         set gfxpayload=keep
  22.         linux        /casper/vmlinuz.efi  file=/cdrom/preseed/ubuntu.seed boot=casper only-ubiquity quiet splash oem-config/enable=true --
  23.         initrd        /casper/initrd.lz
  24. }
  25. menuentry "Check disc for defects" {
  26.         set gfxpayload=keep
  27.         linux        /casper/vmlinuz.efi  boot=casper integrity-check quiet splash --
  28.         initrd        /casper/initrd.lz
  29. }
复制代码

众所周知,64位的乌班图是用GRUB2来引导的。
其中第十二行代码就指向vmlinuz.efi文件:
  1.     linux        /casper/vmlinuz.efi  file=/cdrom/preseed/ubuntu.seed boot=casper quiet splash --
复制代码
而传统的grub则是指向vmlinuz
所以说LINUX用grub2来做uefi的引导还必须要从新写代码。
而gummiboot里面的conf文件,如“”里面的代码:
  1. title        Live Android session
  2. androidfile liveboot.img
复制代码

它直接指向img镜像,而不是efi文件。
grun是不行的




作者: ali88home    时间: 2014-3-9 22:31
哦!Ubuntu使用cdrom来加载,以前都是加载RAW内核

而这个02.androidfile liveboot.img有看看里面什么吗?会不会像initrd (loop)/casper/initrd.img一样
作者: 2012hsj17    时间: 2014-3-9 22:44
ali88home 发表于 2014-3-9 22:31
哦!Ubuntu使用cdrom来加载,以前都是加载RAW内核

而这个02.androidfile liveboot.img有看看里面什么吗 ...

我尝试过,打不开啊
作者: rioufbi    时间: 2015-12-27 16:37
多谢楼主提供这个.支持一下!!!
作者: 2011cwj6958    时间: 2015-12-28 17:43
测试了。不能启动常见的img镜像。
作者: 2011cwj6958    时间: 2015-12-28 17:43
测试了。不能启动常见的img镜像。
作者: 2011cwj6958    时间: 2015-12-28 18:23
2012hsj17 发表于 2014-3-9 21:24
一下是64位乌班图14.04的grub.cfg文件的代码。

众所周知,64位的乌班图是用GRUB2来引导的。

现在64位的乌班图没有vmlinuz.都是用vmlinuz.efi引导,有的linux版本是统一用vmlinuz(bzImage)没有vmlinuz.efi文件。
作者: 2011cwj6958    时间: 2015-12-28 18:23
2012hsj17 发表于 2014-3-9 21:24
一下是64位乌班图14.04的grub.cfg文件的代码。

众所周知,64位的乌班图是用GRUB2来引导的。

现在64位的乌班图没有vmlinuz.都是用vmlinuz.efi引导,有的linux版本是统一用vmlinuz(bzImage)没有vmlinuz.efi文件。
作者: hgh1974    时间: 2015-12-28 19:57
2011cwj6958 发表于 2015-12-28 18:23
现在64位的乌班图没有vmlinuz.都是用vmlinuz.efi引导,有的linux版本是统一用vmlinuz(bzImage)没有vmlinu ...

这二货是一个,只是改成了.EFI而已,在G4D和WINLY下均能启动
作者: 求道者    时间: 2016-1-3 19:42
所以这个东西能不能引导普通的bootmgr?
efi就算了
作者: aleck099    时间: 2017-1-23 09:55
楼主你out了
linux的内核永远只有一个,文件名可以任意,但内核只有一个
一个内核,两种启动方式——bios/efi
只要内核是x64的,就可以被efi引导器引导
比如windows,他的内核也只有一个——ntoskrnl.exe
但windows也是可以efi引导启动的
所以,不存在“重写代码”的问题,代码不需要重写




欢迎光临 无忧启动论坛 (http://wuyou.net/) Powered by Discuz! X3.3