全球主机交流论坛

标题: [Linux Shell]【修复已知问题】Debian网络安装一键脚本 [打印本页]

作者: Vicer    时间: 2017-3-25 00:55
提示: 作者被禁止或删除 内容自动屏蔽
作者: Gh0st    时间: 2017-3-25 00:55
前排顶大佬。
作者: cirno    时间: 2017-3-25 00:57
虽然看不懂不过帮顶
作者: xfspace    时间: 2017-3-25 01:01
顶up up up楼主牛逼带我
作者: 尘封之泪    时间: 2017-3-25 01:02
假如在 RHEL 系列上重装 DEB/UBT 系列就好了。可惜不好实现。
作者: Vicer    时间: 2017-3-25 01:05
提示: 作者被禁止或删除 内容自动屏蔽
作者: 尘封之泪    时间: 2017-3-25 01:05
Vicer 发表于 2017-3-25 01:05
理论上安装了grub sed awk grep都可以使用此脚本,KVM/VMware 和 VNC是硬性要求。

那我开一台小鸡试试看。
作者: 跳帧    时间: 2017-3-25 01:53
提示: 作者被禁止或删除 内容自动屏蔽
作者: Vicer    时间: 2017-3-25 01:55
提示: 作者被禁止或删除 内容自动屏蔽
作者: 尘封之泪    时间: 2017-3-25 02:33
CFG0="$(awk '/menuentry/{print NR}' /boot/grub/grub.cfg|tail -n 1)"
CFG1="$(awk '/}/{print NR}' /boot/grub/grub.cfg|tail -n 1)"
sed -n "$CFG0,$CFG1"p /boot/grub/grub.cfg >/tmp/grub.new

这个好像是错的。导致后面判断失败。

[ -f /tmp/grub.new ] && [ "$(grep '}' /tmp/grub.new |wc -l)" -eq '1' ] || {
echo "Error! configure grub.cfg "
exit 1
}

这个是不是将 recovery 的条目写到 grub.new 中?
作者: Vicer    时间: 2017-3-25 02:38
提示: 作者被禁止或删除 内容自动屏蔽
作者: 尘封之泪    时间: 2017-3-25 02:47
Vicer 发表于 2017-3-25 02:38
你看你机子里,是不是没有awk?
Debian 上是这样安装的

有 awk,但是读的位置不一样。

完整的 grub.cfg 如下


  1. #
  2. # DO NOT EDIT THIS FILE
  3. #
  4. # It is automatically generated by grub-mkconfig using templates
  5. # from /etc/grub.d and settings from /etc/default/grub
  6. #

  7. ### BEGIN /etc/grub.d/00_header ###
  8. if [ -s $prefix/grubenv ]; then
  9.   set have_grubenv=true
  10.   load_env
  11. fi
  12. if [ "${next_entry}" ] ; then
  13.    set default="${next_entry}"
  14.    set next_entry=
  15.    save_env next_entry
  16.    set boot_once=true
  17. else
  18.    set default="0"
  19. fi

  20. if [ x"${feature_menuentry_id}" = xy ]; then
  21.   menuentry_id_option="--id"
  22. else
  23.   menuentry_id_option=""
  24. fi

  25. export menuentry_id_option

  26. if [ "${prev_saved_entry}" ]; then
  27.   set saved_entry="${prev_saved_entry}"
  28.   save_env saved_entry
  29.   set prev_saved_entry=
  30.   save_env prev_saved_entry
  31.   set boot_once=true
  32. fi

  33. function savedefault {
  34.   if [ -z "${boot_once}" ]; then
  35.     saved_entry="${chosen}"
  36.     save_env saved_entry
  37.   fi
  38. }
  39. function load_video {
  40.   if [ x$feature_all_video_module = xy ]; then
  41.     insmod all_video
  42.   else
  43.     insmod efi_gop
  44.     insmod efi_uga
  45.     insmod ieee1275_fb
  46.     insmod vbe
  47.     insmod vga
  48.     insmod video_bochs
  49.     insmod video_cirrus
  50.   fi
  51. }

  52. if [ x$feature_default_font_path = xy ] ; then
  53.    font=unicode
  54. else
  55. insmod part_msdos
  56. insmod ext2
  57. if [ x$feature_platform_search_hint = xy ]; then
  58.   search --no-floppy --fs-uuid --set=root  8e7a31a0-dcaf-4581-a84f-33f08d289e43
  59. else
  60.   search --no-floppy --fs-uuid --set=root 8e7a31a0-dcaf-4581-a84f-33f08d289e43
  61. fi
  62.     font="/usr/share/grub/unicode.pf2"
  63. fi

  64. if loadfont $font ; then
  65.   set gfxmode=auto
  66.   load_video
  67.   insmod gfxterm
  68. fi
  69. terminal_output gfxterm
  70. if [ "${recordfail}" = 1 ] ; then
  71.   set timeout=-1
  72. else
  73.   if [ x$feature_timeout_style = xy ] ; then
  74.     set timeout_style=menu
  75.     set timeout=5
  76.   # Fallback normal timeout code in case the timeout_style feature is
  77.   # unavailable.
  78.   else
  79.     set timeout=5
  80.   fi
  81. fi
  82. ### END /etc/grub.d/00_header ###

  83. ### BEGIN /etc/grub.d/05_debian_theme ###
  84. set menu_color_normal=cyan/blue
  85. set menu_color_highlight=white/blue
  86. ### END /etc/grub.d/05_debian_theme ###

  87. ### BEGIN /etc/grub.d/10_linux ###
  88. function gfxmode {
  89.         set gfxpayload="${1}"
  90. }
  91. set linux_gfx_mode=
  92. export linux_gfx_mode
  93. menuentry 'Debian GNU/Linux' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-8e7a31a0-dcaf-4581-a84f-33f08d289e43' {
  94.         load_video
  95.         insmod gzio
  96.         if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
  97.         insmod part_msdos
  98.         insmod ext2
  99.         if [ x$feature_platform_search_hint = xy ]; then
  100.           search --no-floppy --fs-uuid --set=root  8e7a31a0-dcaf-4581-a84f-33f08d289e43
  101.         else
  102.           search --no-floppy --fs-uuid --set=root 8e7a31a0-dcaf-4581-a84f-33f08d289e43
  103.         fi
  104.         echo        'Loading Linux 3.16.0-4-amd64 ...'
  105.         linux        /boot/vmlinuz-3.16.0-4-amd64 root=UUID=8e7a31a0-dcaf-4581-a84f-33f08d289e43 ro consoleblank=0 quiet
  106.         echo        'Loading initial ramdisk ...'
  107.         initrd        /boot/initrd.img-3.16.0-4-amd64
  108. }
  109. submenu 'Advanced options for Debian GNU/Linux' $menuentry_id_option 'gnulinux-advanced-8e7a31a0-dcaf-4581-a84f-33f08d289e43' {
  110.         menuentry 'Debian GNU/Linux, with Linux 3.16.0-4-amd64' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-3.16.0-4-amd64-advanced-8e7a31a0-dcaf-4581-a84f-33f08d289e43' {
  111.                 load_video
  112.                 insmod gzio
  113.                 if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
  114.                 insmod part_msdos
  115.                 insmod ext2
  116.                 if [ x$feature_platform_search_hint = xy ]; then
  117.                   search --no-floppy --fs-uuid --set=root  8e7a31a0-dcaf-4581-a84f-33f08d289e43
  118.                 else
  119.                   search --no-floppy --fs-uuid --set=root 8e7a31a0-dcaf-4581-a84f-33f08d289e43
  120.                 fi
  121.                 echo        'Loading Linux 3.16.0-4-amd64 ...'
  122.                 linux        /boot/vmlinuz-3.16.0-4-amd64 root=UUID=8e7a31a0-dcaf-4581-a84f-33f08d289e43 ro consoleblank=0 quiet
  123.                 echo        'Loading initial ramdisk ...'
  124.                 initrd        /boot/initrd.img-3.16.0-4-amd64
  125.         }
  126.         menuentry 'Debian GNU/Linux, with Linux 3.16.0-4-amd64 (recovery mode)' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-3.16.0-4-amd64-recovery-8e7a31a0-dcaf-4581-a84f-33f08d289e43' {
  127.                 load_video
  128.                 insmod gzio
  129.                 if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
  130.                 insmod part_msdos
  131.                 insmod ext2
  132.                 if [ x$feature_platform_search_hint = xy ]; then
  133.                   search --no-floppy --fs-uuid --set=root  8e7a31a0-dcaf-4581-a84f-33f08d289e43
  134.                 else
  135.                   search --no-floppy --fs-uuid --set=root 8e7a31a0-dcaf-4581-a84f-33f08d289e43
  136.                 fi
  137.                 echo        'Loading Linux 3.16.0-4-amd64 ...'
  138.                 linux        /boot/vmlinuz-3.16.0-4-amd64 root=UUID=8e7a31a0-dcaf-4581-a84f-33f08d289e43 ro single consoleblank=0
  139.                 echo        'Loading initial ramdisk ...'
  140.                 initrd        /boot/initrd.img-3.16.0-4-amd64
  141.         }
  142. }

  143. ### END /etc/grub.d/10_linux ###

  144. ### BEGIN /etc/grub.d/20_linux_xen ###

  145. ### END /etc/grub.d/20_linux_xen ###

  146. ### BEGIN /etc/grub.d/30_os-prober ###
  147. ### END /etc/grub.d/30_os-prober ###

  148. ### BEGIN /etc/grub.d/30_uefi-firmware ###
  149. ### END /etc/grub.d/30_uefi-firmware ###

  150. ### BEGIN /etc/grub.d/40_custom ###
  151. # This file provides an easy way to add custom menu entries.  Simply type the
  152. # menu entries you want to add after this comment.  Be careful not to change
  153. # the 'exec tail' line above.
  154. ### END /etc/grub.d/40_custom ###

  155. ### BEGIN /etc/grub.d/41_custom ###
  156. if [ -f  ${config_directory}/custom.cfg ]; then
  157.   source ${config_directory}/custom.cfg
  158. elif [ -z "${config_directory}" -a -f  $prefix/custom.cfg ]; then
  159.   source $prefix/custom.cfg;
  160. fi
  161. ### END /etc/grub.d/41_custom ###
复制代码


实际读到的位置却是:


  1.         menuentry 'Debian GNU/Linux, with Linux 3.16.0-4-amd64 (recovery mode)' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-3.16.0-4-amd64-recovery-8e7a31a0-dcaf-4581-a84f-33f08d289e43' {
  2.                 load_video
  3.                 insmod gzio
  4.                 if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
  5.                 insmod part_msdos
  6.                 insmod ext2
  7.                 if [ x$feature_platform_search_hint = xy ]; then
  8.                   search --no-floppy --fs-uuid --set=root  8e7a31a0-dcaf-4581-a84f-33f08d289e43
  9.                 else
  10.                   search --no-floppy --fs-uuid --set=root 8e7a31a0-dcaf-4581-a84f-33f08d289e43
  11.                 fi
  12.                 echo        'Loading Linux 3.16.0-4-amd64 ...'
  13.                 linux        /boot/vmlinuz-3.16.0-4-amd64 root=UUID=8e7a31a0-dcaf-4581-a84f-33f08d289e43 ro single consoleblank=0
  14.                 echo        'Loading initial ramdisk ...'
  15.                 initrd        /boot/initrd.img-3.16.0-4-amd64
  16.         }
  17. }

  18. ### END /etc/grub.d/10_linux ###

  19. ### BEGIN /etc/grub.d/20_linux_xen ###

  20. ### END /etc/grub.d/20_linux_xen ###

  21. ### BEGIN /etc/grub.d/30_os-prober ###
  22. ### END /etc/grub.d/30_os-prober ###

  23. ### BEGIN /etc/grub.d/30_uefi-firmware ###
  24. ### END /etc/grub.d/30_uefi-firmware ###

  25. ### BEGIN /etc/grub.d/40_custom ###
  26. # This file provides an easy way to add custom menu entries.  Simply type the
  27. # menu entries you want to add after this comment.  Be careful not to change
  28. # the 'exec tail' line above.
  29. ### END /etc/grub.d/40_custom ###

  30. ### BEGIN /etc/grub.d/41_custom ###
  31. if [ -f  ${config_directory}/custom.cfg ]; then
  32.   source ${config_directory}/custom.cfg
  33. elif [ -z "${config_directory}" -a -f  $prefix/custom.cfg ]; then
复制代码



作者: Vicer    时间: 2017-3-25 02:52
提示: 作者被禁止或删除 内容自动屏蔽
作者: 尘封之泪    时间: 2017-3-25 02:55
Vicer 发表于 2017-3-25 02:52
谢谢提供反馈

今天有些晚了,明天起来解决这个问题

好呀好呀,另外这个好像不支持 RHEL 系列,因为 RHEL 用的是 Grub2,且分区为 XFS,开机读不到 linux 内核与 initrd.gz 闪存盘。
作者: Vicer    时间: 2017-3-25 02:57
提示: 作者被禁止或删除 内容自动屏蔽
作者: 尘封之泪    时间: 2017-3-25 02:58
Vicer 发表于 2017-3-25 02:57
你这个是Debian 还是Ubuntu?

Debian 8 amd64
作者: Vicer    时间: 2017-3-25 02:59
提示: 作者被禁止或删除 内容自动屏蔽
作者: 尘封之泪    时间: 2017-3-25 03:27
本帖最后由 尘封之泪 于 2017-3-25 03:37 编辑
Vicer 发表于 2017-3-25 02:59
OK !

我用Debian 8 做过测试的。。。。


恩,刚刚试了一下 CentOS 7 LVM 也可以用,只不过要手动改一下条目。



  1. menuentry 'Install OS [jessie amd64]' --class debian --class gnu-linux --class gnu --class os {
  2.         load_video
  3.         insmod gzio
  4.         insmod part_msdos
  5.         insmod xfs
  6.         set root='hd0,msdos1'
  7.         if [ x$feature_platform_search_hint = xy ]; then
  8.           search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 --hint='hd0,msdos1'  dc21f120-4b43-442b-b8d7-431a82630c08
  9.         else
  10.           search --no-floppy --fs-uuid --set=root dc21f120-4b43-442b-b8d7-431a82630c08
  11.         fi
  12.         linux16        /linux root=/dev/mapper/cl-root ro rd.lvm.lv=cl/root rd.lvm.lv=cl/swap rhgb quiet
  13.         initrd16        /initrd.gz
  14. }
复制代码

作者: weilai丶    时间: 2017-3-25 08:20
不明觉厉
作者: Vicer    时间: 2017-3-25 11:32
提示: 作者被禁止或删除 内容自动屏蔽
作者: leeger    时间: 2017-3-25 11:55
这个代码怎么用啊???刚好拿cac练练·~~~
作者: Vicer    时间: 2017-3-25 11:56
提示: 作者被禁止或删除 内容自动屏蔽
作者: xianba    时间: 2017-3-25 12:39
感谢大神
作者: leeger    时间: 2017-3-25 13:53
[jessie] [amd64] Downloading...
Error! configure grub.cfg

CAC debian 8
作者: Vicer    时间: 2017-3-25 14:13
提示: 作者被禁止或删除 内容自动屏蔽
作者: leeger    时间: 2017-3-25 14:15
Vicer 发表于 2017-3-25 14:13
马上修复,昨晚知道了这个

dalao 回复很及时啊,等你哦~~~~
作者: Vicer    时间: 2017-3-25 14:31
提示: 作者被禁止或删除 内容自动屏蔽
作者: Vicer    时间: 2017-3-25 15:38
提示: 作者被禁止或删除 内容自动屏蔽
作者: Vicer    时间: 2017-3-25 15:39
提示: 作者被禁止或删除 内容自动屏蔽
作者: 尘封之泪    时间: 2017-3-25 16:46
Vicer 发表于 2017-3-25 15:39
此问题已解决。
目前已支持CentOS7系统。
没玩过CentOS6,CentOS6玩不懂,不适配了。 ...

我放 GitHub 注明一下作者好不好(MIT 协议可行?),(centos 6 假如说有问题,没问题就算了,还没试, 我来接盘修复。)
作者: Vicer    时间: 2017-3-25 16:54
提示: 作者被禁止或删除 内容自动屏蔽
作者: 尘封之泪    时间: 2017-3-25 17:02
Vicer 发表于 2017-3-25 16:54
写得烂,还是算了吧。
论坛里用用就行了


作者: leeger    时间: 2017-3-25 19:49
本帖最后由 leeger 于 2017-3-25 19:50 编辑

我到 格式化硬盘 (write to partition )这部,vnc 就断开了···

大神,何解?

--------------------

重新连接vnc 又能连接上了~~~~

免回!!!
作者: inlife    时间: 2017-3-26 19:18
今天用给楼主的这个脚本重做了CAC的系统
作者: mix    时间: 2017-3-26 20:00
后排支持大佬



------------------
moeclub.org 网页无**常运作

moeclub.org 目前无法处理此请求。
HTTP ERROR 500
作者: Vicer    时间: 2017-3-26 20:24
提示: 作者被禁止或删除 内容自动屏蔽
作者: Vicer    时间: 2017-3-26 20:25
提示: 作者被禁止或删除 内容自动屏蔽
作者: inlife    时间: 2017-3-26 21:15
Vicer 发表于 2017-3-26 20:25
使用过程中没什么问题吧

没问题的,可以正常使用。多谢你的脚本,辛苦了。




欢迎光临 全球主机交流论坛 (https://loc.imgfree.eu.org/) Powered by Discuz! X3.4