EVE-NG制作自定义Linux系统(CentOS 7)

参考EVE-NG官方网站 http://www.eve-ng.net/documentation/howto-s/106-howto-create-own-linux-image

新建目录,目录名称以“linux-”开头,这样就能在EVE web界面添加节点时找到Linux

mkdir /opt/unetlab/addons/qemu/linux-centos

将Linux安装镜像(ISO)上传到刚才新建的目录,可以用XFTP、winscp等工具上传

将iso文件的名称修改为cdrom.iso,这样可以让EVE将iso文件加载到系统中,相当于挂上一个光驱,新建的系统会以这个ISO进行启动并安装系统

mv CentOS-7-x86_64-DVD-1810.iso cdrom.iso

新建一个虚拟机

/opt/qemu/bin/qemu-img create -f qcow2 virtioa.qcow2 80G
-f 指定虚拟磁盘格式
qcow2 虚拟磁盘格式
virtioa.qcow2 虚拟磁盘文件名
80G 虚拟磁盘容量(这个是虚拟磁盘的最大容量,新建时有多少数据就占用主机的多少空间

在EVE web页面新建一个实验,添加Linux节点。选择Linux后,在具体版本中会显示刚才新建的目录名称。可以添加一个clound0网络,这是EVE连接到主机所在的网络(可以上网),以便对新装的Linux系统进行更新、安装软件等。接下来按常规安装好Linux系统即可。最后将虚拟机关机,将cdrom.iso文件删除,或者修改成其它名称,这样系统重启时就不会加载iso

找到这个实验所在的目录,将Linux临时磁盘文件做个转换,并放在一个临时目录中。

qemu-img convert -c -O qcow2 /opt/unetlab/tmp/10/-25f8-46e1-b697-ccb4fc4088a2/1/hda.qcow2  /tmp/hda.qcow2

将/tmp/hda.qcow2复制或移动到/opt/unetlab/addons/qemu/linux-centos/,删除/opt/unetlab/addons/qemu/linux-centos/virtioa.qcow2。

此时的hda.qcow2就相当于一个虚拟机模板,新建不同的实验时,都是以这个模板创建新的虚拟机。

另一种方法

cd /opt/unetlab/tmp/0/3491e0a7-25f8-46e1-b697-ccb4fc4088a2/8/
/opt/qemu/bin/qemu-img commit virtioa.qcow2

配置grub,使Linux虚拟机可以登录telnet登录系统(实际是console),而不仅仅是通过VNC

配置操作系统Console的作用是,可以在EVE-NG中使用Telnet登录系统(不是SSH),否则只能通过VNC登录。
使用Telnet登录虚拟机,类似于使用Terminal从物理服务器的COM口登录系统

EVE-NG官方网站中使用Ubuntu制作,console的配置步骤与CentOS 7不同(文中第11点更新grub的方法不同)
最后可能要在EVE-NG系统中做修复权限的操作 /opt/unetlab/wrappers/unl_wrapper -a fixpermissions

CentOS 7中配置console

[[email protected] ~]# sed -i 's/GRUB_CMDLINE_LINUX=.*/GRUB_CMDLINE_LINUX="console=ttyS0,115200 console=tty0"/' /etc/default/grub
[[email protected] ~]# grub2-mkconfig -o /boot/grub2/grub.cfg

刚安装完系统时,各个文件的配置如下

/etc/default/grub

[[email protected] ~]# cat /etc/default/grub
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="console=ttyS0,115200 console=tty0"
GRUB_DISABLE_RECOVERY="true"

/etc/sysconfig/grub

[[email protected] ~]# cat /etc/sysconfig/grub
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="console=ttyS0,115200 console=tty0"
GRUB_DISABLE_RECOVERY="true"

/boot/grub2/grub.cfg

[[email protected] ~]# cat /boot/grub2/grub.cfg
#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by grub2-mkconfig using templates
# from /etc/grub.d and settings from /etc/default/grub
#
### BEGIN /etc/grub.d/00_header ###
set pager=1
if [ -s $prefix/grubenv ]; then
  load_env
fi
if [ "${next_entry}" ] ; then
   set default="${next_entry}"
   set next_entry=
   save_env next_entry
   set boot_once=true
else
   set default="${saved_entry}"
fi
if [ x"${feature_menuentry_id}" = xy ]; then
  menuentry_id_option="--id"
else
  menuentry_id_option=""
fi
export menuentry_id_option
if [ "${prev_saved_entry}" ]; then
  set saved_entry="${prev_saved_entry}"
  save_env saved_entry
  set prev_saved_entry=
  save_env prev_saved_entry
  set boot_once=true
fi
function savedefault {
  if [ -z "${boot_once}" ]; then
    saved_entry="${chosen}"
    save_env saved_entry
  fi
}
function load_video {
  if [ x$feature_all_video_module = xy ]; then
    insmod all_video
  else
    insmod efi_gop
    insmod efi_uga
    insmod ieee1275_fb
    insmod vbe
    insmod vga
    insmod video_bochs
    insmod video_cirrus
  fi
}
terminal_output console
if [ x$feature_timeout_style = xy ] ; then
  set timeout_style=menu
  set timeout=5
# Fallback normal timeout code in case the timeout_style feature is
# unavailable.
else
  set timeout=5
fi
### END /etc/grub.d/00_header ###
### BEGIN /etc/grub.d/00_tuned ###
set tuned_params=""
set tuned_initrd=""
### END /etc/grub.d/00_tuned ###
### BEGIN /etc/grub.d/01_users ###
if [ -f ${prefix}/user.cfg ]; then
  source ${prefix}/user.cfg
  if [ -n "${GRUB2_PASSWORD}" ]; then
    set superusers="root"
    export superusers
    password_pbkdf2 root ${GRUB2_PASSWORD}
  fi
fi
### END /etc/grub.d/01_users ###
### BEGIN /etc/grub.d/10_linux ###
menuentry 'CentOS Linux (3.10.0-862.el7.x86_64) 7 (Core)' --class centos --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-3.10.0-862.el7.x86_64-advanced-2375382b-d36b-49e0-ac8e-8eaaf58ddc46' {
        load_video
        set gfxpayload=keep
        insmod gzio
        insmod part_msdos
        insmod xfs
        set root='hd0,msdos1'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint='hd0,msdos1'  40732138-dc05-4aaf-b447-e128f9551112
        else
          search --no-floppy --fs-uuid --set=root 40732138-dc05-4aaf-b447-e128f9551112
        fi
        linux16 /vmlinuz-3.10.0-862.el7.x86_64 root=/dev/mapper/centos_centos-root ro console=ttyS0,115200 console=tty0
        initrd16 /initramfs-3.10.0-862.el7.x86_64.img
}
menuentry 'CentOS Linux (0-rescue-4a32f46ddbd54808ae34cb48b09f16ab) 7 (Core)' --class centos --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-0-rescue-4a32f46ddbd54808ae34cb48b09f16ab-advanced-2375382b-d36b-49e0-ac8e-8eaaf58ddc46' {
        load_video
        insmod gzio
        insmod part_msdos
        insmod xfs
        set root='hd0,msdos1'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint='hd0,msdos1'  40732138-dc05-4aaf-b447-e128f9551112
        else
          search --no-floppy --fs-uuid --set=root 40732138-dc05-4aaf-b447-e128f9551112
        fi
        linux16 /vmlinuz-0-rescue-4a32f46ddbd54808ae34cb48b09f16ab root=/dev/mapper/centos_centos-root ro console=ttyS0,115200 console=tty0
        initrd16 /initramfs-0-rescue-4a32f46ddbd54808ae34cb48b09f16ab.img
}
if [ "x$default" = 'CentOS Linux (3.10.0-862.el7.x86_64) 7 (Core)' ]; then default='Advanced options for CentOS Linux>CentOS Linux (3.10.0-862.el7.x86_64) 7 (Core)'; fi;
### END /etc/grub.d/10_linux ###
### BEGIN /etc/grub.d/20_linux_xen ###
### END /etc/grub.d/20_linux_xen ###
### BEGIN /etc/grub.d/20_ppc_terminfo ###
### END /etc/grub.d/20_ppc_terminfo ###
### BEGIN /etc/grub.d/30_os-prober ###
### END /etc/grub.d/30_os-prober ###
### BEGIN /etc/grub.d/40_custom ###
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.
### END /etc/grub.d/40_custom ###
### BEGIN /etc/grub.d/41_custom ###
if [ -f  ${config_directory}/custom.cfg ]; then
  source ${config_directory}/custom.cfg
elif [ -z "${config_directory}" -a -f  $prefix/custom.cfg ]; then
  source $prefix/custom.cfg;
fi
### END /etc/grub.d/41_custom ###
[[email protected] ~]#

0 Comments

发表评论

电子邮件地址不会被公开。 必填项已用*标注