1. BIOS加电自检
2. 运行isolinux目录下面的isolinux.bin文件,这个isolinux.bin文件根据isolinux.cfg文件的选项来加载内核vmlinuz和initrd.img文件,
initrd.img文件会在内存中生成一个虚拟的linux操作系统,为安装过程提供一个安装环境。
3. 进行系统的安装
通过修改isolinux\isolinux.cfg文件来修改相关的启动选项和执行过程;ubuntu-14.04-server-amd64默认的isolinux.cfg文件的内容如下:
# D-I config version 2.0
include menu.cfg
default vesamenu.c32
prompt 0
timeout 0
ui gfxboot bootlogo
include menu.cfg #isolinux.cfg引用isolinux目录下的menu.cfg文件
default vesamenu.c32 # 默认加载vesamenu.c32菜单模块
prompt 0 #设定默认行为模式(交互模式和非交互模式)
timeout 0 #等待时间(30s设置为300)
ui gfxboot bootlogo #指定了启动时的图形界面
menu.cfg文件内容如下:
menu hshift 13
menu width 49
menu margin 8
menu title Installer boot menu
include stdmenu.cfg
include txt.cfg
include gtk.cfg
menu begin advanced
menu title Advanced options
include stdmenu.cfg
label mainmenu
menu label ^Back..
menu exit
include adtxt.cfg
include adgtk.cfg
menu end
label help
menu label ^Help
text help
Display help screens; type 'menu' at boot prompt to return to this menu
endtext
config prompt.cfg
其中txt.cfg文件指定系统启动时的引导选项,可以通过修改该文件来添加或修改引导选项,txt.cfg的文件内容如下:
default install_openstack_controller_node
label install_openstack_controller_node
menu label ^Install OpenStack Controller Node
kernel /install/vmlinuz
append file=/cdrom/preseed/openstack_controller_node.seed vga=788 initrd=/install/initrd.gz biosdevname=0 netcfg/choose_interface=auto boot=install debian-installer/locale=en_US console-setup/ask_detect=false keyboard-configuration/layoutcode=us automatic-ubiquity quiet --
label cloud
menu label ^Multiple server install with MAAS
kernel /install/vmlinuz
append modules=maas-enlist-udeb vga=788 initrd=/install/initrd.gz quiet --
label check
menu label ^Check disc for defects
kernel /install/vmlinuz
append MENU=/bin/cdrom-checker-menu vga=788 initrd=/install/initrd.gz quiet --
label memtest
menu label Test ^memory
kernel /install/mt86plus
label hd
menu label ^Boot from first hard disk
localboot 0x80
default install #默认的引导选项为install
label 是指Linux系统启动时的引导选项;menu label项是引导选项显示的内容;kernel项指定了启动时的内核文件路径;append项中file指定预制文件的路径,vga指定分辨率,initrd 指定 initrd 的文件路径,其余的内核参数还可能有很多,Linux内核中启动的所有参数,在这里都是可以加入的。
在这个文件中可以修改相关选项来定制ISO安装镜像的相关的安装操作,可以修改预制seed文件,也可以添加相关的内核启动参数。
seed文件格式如下所示:
# Suggest LVM by default.
d-i partman-auto/init_automatically_partition string some_device_lvm
d-i partman-auto/init_automatically_partition seen false
# Install the Ubuntu Server seed.
tasksel tasksel/force-tasks string server
# Only install basic language packs. Let tasksel ask about tasks.
d-i pkgsel/language-pack-patterns string
# No language support packages.
d-i pkgsel/install-language-support boolean false
# Only ask the UTC question if there are other operating systems installed.
d-i clock-setup/utc-auto boolean true
# Verbose output and no boot splash screen.
d-i debian-installer/quiet boolean false
d-i debian-installer/splash boolean false
# Install the debconf oem-config frontend (if in OEM mode).
d-i oem-config-udeb/frontend string debconf
# Wait for two seconds in grub
d-i grub-installer/timeout string 2
# Add the network and tasks oem-config steps by default.
oem-config oem-config/steps multiselect language, timezone, keyboard, user, network, tasks
可以在该文件中添加或修改相关内容来控制安装过程中的相关操作,实现自动安装。另外在文件末尾可以添加如下语句:
d-i preseed/late_command string 命令
其中命令是命令行下可以执行的任何命令,多条命令可以用分号隔开。
这里就可以将ISO文件中的openstack的安装包拷贝到系统中,然后编写openstack系统的安装脚本,并将脚本的执行语句写到/etc/init.d/rc.local文件中,使得在操作系统安装过程中可以自动安装和配置openstack,命令如下:
d-ipreseed/late_command string cp -R /cdrom/openstack /target/opt/;
echo "if [ !-f /opt/openstack/install.log ];
then">> /target/etc/init.d/rc.local;echo "
/bin/bash /opt/openstack/allinoneinstall-ubuntu.sh
>>/opt/openstack/install.log">>/target/etc/init.d/rc.local;
echo"fi" >>/target/etc/init.d/rc.local