加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

(转)coreboot & seabios

(2013-11-20 00:35:14)
分类: Linux技术
转自: http://www.biosren.com/thread-6882-1-1.html

seabios现在是很多虚拟机的默认启动bios,这跟它的短小精干有很大关系,也跟它提供比较完备的legacy支持有关。

按照以下步骤把seabios制作成coreboot的payload,

1. 下载seabios代码,

http://code.coreboot.org/p/seabios/downloads/

最新的代码是seabios v1.7.3.1
http://code.coreboot.org/p/seabios/downloads/31/

建议先试用seabios v1.7.2,因为下面提供的参考.config文件基于seabios v1.7.2。

2. 解压后在Linux环境下运行“make menuconfig”

如果运行该命令时报错,一般可安装所需的library解决。

对于作为coreboot的payload,最重要的是选择是选择General Features->Build Target->Build from coreboot,并按照所需选择其他选项。

提醒:我曾经因为设置Debugging->Debug Level为9,seabios在运行中死机。如果你遇到类似现象,请试着降低Debug Level到3或者更小值。

提供一个seabios v1.7.2的.config文件作为参考,在这个configure文件里,只初始化了serial port,AHCI controller。该文件已经过实际硬件验证,能启动带Legacy boot支持的的Linux。

  1. #
  2. # Automatically generated make config: don't edit
  3. # SeaBIOS Configuration
  4. # Thu Aug 15 00:02:09 2013
  5. #
  6. #
  7. # General Features
  8. #
  9. CONFIG_COREBOOT=y
  10. # CONFIG_QEMU is not set
  11. # CONFIG_THREADS is not set
  12. # CONFIG_RELOCATE_INIT is not set
  13. # CONFIG_BOOTMENU is not set
  14. # CONFIG_BOOTORDER is not set
  15. # CONFIG_COREBOOT_FLASH is not set
  16. #
  17. Hardware support
  18. #
  19. # CONFIG_ATA is not set
  20. CONFIG_AHCI=y
  21. # CONFIG_MEGASAS is not set
  22. # CONFIG_FLOPPY is not set
  23. # CONFIG_USB is not set
  24. CONFIG_SERIAL=y
  25. # CONFIG_LPT is not set
  26. #
  27. # BIOS interfaces
  28. #
  29. CONFIG_DRIVES=y
  30. # CONFIG_CDROM_BOOT is not set
  31. # CONFIG_PCIBIOS is not set
  32. # CONFIG_APMBIOS is not set
  33. # CONFIG_PNPBIOS is not set
  34. # CONFIG_OPTIONROMS is not set
  35. CONFIG_BOOT=y
  36. # CONFIG_KEYBOARD is not set
  37. # CONFIG_MOUSE is not set
  38. # CONFIG_S3_RESUME is not set
  39. # CONFIG_VGAHOOKS is not set
  40. # CONFIG_DISABLE_A20 is not set
  41. #
  42. # VGA ROM
  43. #
  44. CONFIG_NO_VGABIOS=y
  45. # CONFIG_VGA_GEODEGX2 is not set
  46. # CONFIG_VGA_GEODELX is not set
  47. # CONFIG_BUILD_VGABIOS is not set
  48. #
  49. # Debugging
  50. #
  51. CONFIG_DEBUG_LEVEL=3
  52. CONFIG_DEBUG_SERIAL=y
  53. CONFIG_DEBUG_SERIAL_PORT=0x3f8
复制代码


3. 编译,使用“make”命令

编译完成后,生成的文件在out/目录下,作为payload的文件是bios.bin.elf,而bios.bin是普通意义上的bios文件。

4. 把bios.bin.elf做为payload编译到coreboot中。

注意:在coreboot运行“make menuconfig”,payload中选择An ELF Executable payload(非seabios),然后指定bios.bin.elf的路径与文件名。

外部链接:

coreboot & seabios,
http://www.coreboot.org/SeaBIOS

seabios的wiki:
http://en.wikipedia.org/wiki/SeaBIOS

seabios:
http://www.seabios.org/SeaBIOS

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有