bwyciyv 发表于 2020-1-6 13:58

【原创】coreboot搭配grub2实现3秒进系统

本帖最后由 bwyciyv 于 2020-1-6 13:58 编辑

之前编译的coreboot一直用seabios来启动系统,
跟官方BIOS方式差不多,感觉意义不大,倒不如直接用回官方BIOS.
最近折腾了下coreboot+grub2启动方式, 发现启动速度实在太快了,实现选择OS后能3秒到登陆界面.顺便分享下grub.cfg代码,也想有大神能提供下意见,如何实现grub加载clover来引导黑苹果,或者ramos.

目前测试已经实现以下功能:
1,可以直接加载指定硬盘的Linux内核来启动
2,可以自动搜索所有插上电脑的存储设备类debian系统的启动文件grub.cfg,实现启动系统,包括U盘上的debian类系统.
3,实现热键关机,重启等.

建议编译coreboot时选择payloads时选择grub2就行,grub.cfg文件不要加载.生成coreboot.rom文件后,可以用自己编写好的grub.cfg写入coreboot.rom,方法如下,把coreboot.rom与grub.cfg文件拷到coreboot/build/下
输入命令
./cbfstool coreboot.rom add -f grub.cfg -n etc/grub.cfg -t raw
如果想删除已经写入rom文件的grub.cfg并重新更新写好的grub.cfg
以下命令
./cbfstool coreboot.rom remove -n etc/grub.cfg
./cbfstool coreboot.rom add -f grub.cfg -n etc/grub.cfg -t raw


以下是本人的grub



代码如下:

#以下部分是启动显示时间与默认启动部分,还有加载硬盘,USB设备等支持
timeout=1
default=0
insmod ahci
insmod usb
insmod regexp

#这部分是直接加载硬盘上的内核来启动系统,其中set root='ahci2,msdos1' , 是因为coreboot默认主硬盘位为ahci1,
   而我是用mstat位置来装系统盘,mstat位置为ahci2.
   再下面的root=/dev/sdb1,是因为如果主硬盘插有硬盘的话,mstat就会识别为sdb而不是sda(如果没有主硬盘没有mstat就会识别为sda)


menuentry 'GNU/Linux ' {
      insmod gzio
      insmod part_msdos
      insmod ext2
      set root='ahci2,msdos1'
      echo      'Loading Linux vmlinuz kernel ...'
      linux      /vmlinuz root=/dev/sdb1 console=ttyS0,115200
      echo      'Loading initial ramdisk ...'
      initrd      /initrd.img
}

#这是实现自动搜索所有插在电脑上的存储设备上的系统启动文件,只支持类debian系统,其它类linux可以搬葫芦画瓢.
主要目的是灵活实现启动其它硬盘的系统,重要是实现U盘安装linux.
menuentry 'All/Linux' {
      for x in (*,msdos1) ; do
                if [ -f "$x/boot/grub/grub.cfg" ] ; then
                        menuentry "Load Config from $x" $x {
                              root=$2
                              configfile /boot/grub/grub.cfg
                        }
                fi
                if [ -f "$x/grub/grub.cfg" ] ; then
                        menuentry "Load Config from $x" $x {
                              root=$2
                              configfile /grub/grub.cfg
                        }
                fi
      done
}

#这个,因为还没有装黑苹果,还没有测试,反正是成功启动clover了.
menuentry 'MacOS ' {
      insmod part_msdos
      set root='ahci2,msdos1'
      echo      'Loading macos...'
      linux16      /boot/memdisk iso ram
      echo      'clover...'
      initrd16 /boot/clover.iso
}

#热键关机与启动
menuentry 'Poweroff' --hotkey='p' {
      halt
}

menuentry 'Reboot' --hotkey='r' {
      reboot
}


启动效果如图









bwyciyv 发表于 2020-1-6 14:06

哦,对了,如果主系统是windows的话,看我这帖子没什么用..哈哈

iwaitiwait 发表于 2020-1-6 15:14

“选择OS后能3秒到登陆界面”这个主要还是固态硬盘的功劳吧,从按下开机按钮到出现选择系统界面才是coreboot和grub的功劳。

grub加载其他efi的例子,自己改改文件名换成clover就好

menuentry "Windows 7" {
      insmod part_gpt
      insmod chain
      set root='(hd0,gpt1)'
      chainloader /EFI/Microsoft/Boot/bootm***.efi
}

f23258 发表于 2020-1-6 15:22

一脸问号的路过……

William2006 发表于 2020-1-6 15:22

厉害。能不能分享一下coreboot 如何编译

bwyciyv 发表于 2020-1-6 15:22

iwaitiwait 发表于 2020-1-6 15:14
“选择OS后能3秒到登陆界面”这个主要还是固态硬盘的功劳吧,从按下开机按钮到出现选择系统界面才是coreboo ...

目前就是按开机键到登陆4秒,因为显示grub菜单手了一秒

bwyciyv 发表于 2020-1-6 16:48

William2006 发表于 2020-1-6 15:22
厉害。能不能分享一下coreboot 如何编译

有时间我写下教程

halleys 发表于 2020-1-6 18:08

完全看不懂

rainskyer 发表于 2020-1-6 20:18

都是高手啊

显像管 发表于 2020-1-6 22:56

一脸的问号路过,到十楼凑个热闹。高手高手

johnsonkee 发表于 2020-1-6 23:54

这个coreboot和黑果小兵教程下面的一个opencore是一个东西吗

bwyciyv 发表于 2020-1-7 02:37

johnsonkee 发表于 2020-1-6 23:54
这个coreboot和黑果小兵教程下面的一个opencore是一个东西吗

不一样,这个是直接写入主板的固件,opencore是在硬盘上的

johnsonkee 发表于 2020-1-7 02:59

bwyciyv 发表于 2020-1-7 02:37

不一样,这个是直接写入主板的固件,opencore是在硬盘上的

高端,学习了

hawk717388 发表于 2021-1-28 09:59

大佬厉害 学习了!!

ymd6688 发表于 2021-1-28 10:35

围观,高手,膜拜中!

diqing1111 发表于 2021-1-29 16:24

bwyciyv 发表于 2020-1-7 02:37
不一样,这个是直接写入主板的固件,opencore是在硬盘上的

写入主板???主板上bios?

super_hkg 发表于 2021-1-29 23:14

coreboot 也可以啟動 windows,只要用Windows 的bootloader 就可以,大前題coreboot 要放入顯卡bios

IT汤家凤 发表于 2021-8-29 17:18

super_hkg 发表于 2021-1-29 23:14
coreboot 也可以啟動 windows,只要用Windows 的bootloader 就可以,大前題coreboot 要放入顯卡bios

对windows支持貌似必须使用seabios作为payload,而且还需要vgabios.bin

jackyd98 发表于 2021-8-29 17:31

这,,,,不管是哪种GRUB, 启动LINUX都是载入内核启动,一直以来就是这样,更别说LINUX默认的GRUB2.
页: [1]
查看完整版本: 【原创】coreboot搭配grub2实现3秒进系统