无忧启动论坛

标题: 随 grub4dos 发布的 menu.lst 样本应该怎样改进? [打印本页]

作者: 不点    时间: 2012-9-21 21:44
标题: 随 grub4dos 发布的 menu.lst 样本应该怎样改进?
比如说,添加 grub2 的启动项。添加自动搜索 Linux 的启动项。

请提供建议。
作者: jianliulin    时间: 2012-9-22 10:54
自动寻找linux 启动

title [05] 启动ubuntu中文版\n
find --set-root --devices=h ls /boot/vmlinuz > (md)0x200+1
cat --locate=\x20 (md)0x200+1 > nul
cat --length=%?% (md)0x200+1 | set vmlinuz=
find --set-root --devices=h ls /boot/initrd  > (md)0x200+1
cat --locate=\x20 (md)0x200+1 > nul
cat --length=%?% (md)0x200+1 | set initrd=
uuid () > nul
kernel /boot/%vmlinuz% root=UUID=%?% ro quiet splash
initrd /boot/%initrd%
作者: 不点    时间: 2012-9-23 00:47

  1. title  Chainload into GRUB2
  2. find  --set-root  --ignore-floppies  --ignore-cd  /boot/grub/i386-pc/core.img
  3. kernel  /boot/grub/i386-pc/core.img
  4. boot
复制代码

作者: 不点    时间: 2012-9-26 08:33
标题: 回复 #2 jianliulin 的帖子
这个启动代码是不是太复杂了?有没有更简单的?

看第一条是 find 命令,无非是找到 /boot/vmlinuz* 文件而已。这不只是 ubuntu 才有,其它发行版大多都是这样。所以,接下来的启动未必成功,碰到不是 Ubuntu 的情况,有可能失败。

有没有一个统一启动 Linux 的方案,适应于大多数发行版?
作者: jianliulin    时间: 2012-9-26 08:37
vmlinuz 文件名一般带版本号,如果不找就不知道具体叫什么名字。要是find 命令支持模糊查找那就方便好多了

[ 本帖最后由 jianliulin 于 2012-9-26 08:40 编辑 ]
作者: 不点    时间: 2012-9-26 11:30
你没看清我的意思。

别的发行版也叫 vmlinuz...... 这个名字。你后续的命令对于 ubuntu 能成功,但不能保证对于别的发行版也成功。

别的发行版在执行完你的 initrd 以及默认的 boot 命令以后死机了(kernel panic),那怎么办?

第一条 find 命令找到的不一定是 Ubuntu。
作者: 不点    时间: 2012-9-26 11:39
贴一个阶段性的工作,大家审视一下。依然有毛病,比如,fallback 无法适应 iftitle 带来的序号变化。


  1. # This is a sample menu.lst file. You should make some changes to it.
  2. # The old install method of booting via the stage-files has been removed.
  3. # Please install GRLDR boot strap code to MBR with the bootlace.com
  4. # utility under DOS/Win9x or Linux.

  5. color blue/green yellow/red white/magenta white/magenta
  6. timeout 30
  7. ## menu border color
  8. color border=0xEEFFEE
  9. ## set vbe mode
  10. graphicsmode -1 640:800 480:600 24:32 || graphicsmode -1 -1 -1 24:32
  11. ## loading splashimage
  12. splashimage /boot/grub/splashimage.xpm || splashimage /boot/grub/splashimage.bmp
  13. default /default
  14. ## Menu AutoNumber
  15. write 0x8274 0x2001

  16. title find and load NTLDR of Windows NT/2K/XP\n find and load NTLDR of Windows NT/2K/XP
  17. fallback 1
  18. find --set-root --ignore-floppies --ignore-cd /ntldr
  19. map () (hd0)
  20. map (hd0) ()
  21. map --rehook
  22. find --set-root --ignore-floppies --ignore-cd /ntldr
  23. chainloader /ntldr
  24. savedefault --wait=2

  25. #iftitle only show when command in [] returns true
  26. # set a variable named bootmgr where /bootmgr is found.
  27. iftitle [find --set-root --devices=h /bootmgr && call set bootmgr=%@root^%] load BOOTMGR of Windows VISTA/WIN7/WIN2008 on %bootmgr%
  28. chainloader %bootmgr%/bootmgr
  29. savedefault --wait=2

  30. title find and load CMLDR, the Recovery Console of Windows NT/2K/XP
  31. fallback 3
  32. find --set-root --ignore-floppies --ignore-cd /cmldr
  33. map () (hd0)
  34. map (hd0) ()
  35. map --rehook
  36. find --set-root --ignore-floppies --ignore-cd /cmldr
  37. chainloader /cmldr
  38. #####################################################################
  39. # write string "cmdcons" to memory 0000:7C03 in 2 steps:
  40. #####################################################################
  41. # step 1. Write 4 chars "cmdc" at 0000:7C03
  42. #write 0x7C03 0x63646D63
  43. # step 2. Write 3 chars "ons" and an ending null at 0000:7C07
  44. #write 0x7C07 0x00736E6F

  45. #        or.
  46. #write --offset=3 (md)0x3e+1 cmdcons
  47. #        or
  48. calc *0x7c03=0x00736E6F63646D63

  49. savedefault --wait=2

  50. title Chainload IO.SYS for booting MS-DOS/Windows 9x/Me
  51. fallback 4
  52. find --set-root --ignore-floppies --ignore-cd /io.sys
  53. chainloader /io.sys
  54. savedefault --wait=2
  55. #
  56. # Or in this way:
  57. #
  58. # find --set-root --ignore-floppies --ignore-cd chainloader /io.sys
  59. # boot
  60. #
  61. # The above boot command is needed in this case.
  62. # See "Delimitors or comments between titles" in grub4dos_readme.txt.

  63. title 0PE LiveISO
  64. fallback 5
  65. find --set-root --ignore-floppies --ignore-cd /0PE/0PE.ISO
  66. map /0PE/0PE.ISO (0xff)
  67. map --hook
  68. chainloader (0xff)
  69. savedefault --wait=2

  70. title MicroPE LiveISO
  71. fallback 6
  72. find --set-root --ignore-floppies --ignore-cd /boot/MicroPE.ISO
  73. map /boot/MicroPE.ISO (0xff)
  74. map --hook
  75. chainloader (0xff)
  76. savedefault --wait=2

  77. title Parted Magic LiveISO
  78. fallback 7
  79. find --set-root --ignore-floppies --ignore-cd /pmagic.iso
  80. map /pmagic.iso (0xff)
  81. map --hook
  82. chainloader (0xff)
  83. savedefault --wait=2

  84. title Ultimate Boot CD LiveISO
  85. fallback 8
  86. find --set-root --ignore-floppies --ignore-cd /ubcd.iso
  87. map /ubcd.iso (0xff)
  88. map --hook
  89. chainloader (0xff)
  90. savedefault --wait=2

  91. title SliTaz LiveISO
  92. find --set-root --ignore-floppies --ignore-cd /slitaz.iso
  93. map /slitaz.iso (0xff)
  94. map --hook
  95. chainloader (0xff)

  96. title Mageia Installation ISO
  97. find --set-root --ignore-floppies --ignore-cd /Mageia-2-x86_64-DVD.iso
  98. map /Mageia-2-x86_64-DVD.iso (0xff)
  99. map --hook
  100. chainloader (0xff)

  101. title find /boot/grub/menu.lst for booting Linux (Mageia, etc)
  102. find --set-root --ignore-floppies --ignore-cd /boot/grub/menu.lst
  103. configfile /boot/grub/menu.lst

  104. title Switch to GRUB2 core.img for booting Linux (Ubuntu, etc)
  105. find --set-root --ignore-floppies --ignore-cd /boot/grub/i386-pc/core.img
  106. kernel /boot/grub/i386-pc/core.img

  107. title commandline
  108. commandline

  109. title reboot
  110. reboot

  111. title halt
  112. halt

  113. title MAXDOS.IMG
  114. find --set-root --ignore-floppies --ignore-cd /boot/MAXDOS.IMG
  115. map --mem /boot/MAXDOS.IMG (fd0)
  116. map --hook
  117. chainloader (fd0)+1
  118. rootnoverify (fd0)

复制代码





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