Anaconda 及 Kickstart 的提示与技巧
欲取得所有文档,请参阅 https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/5/html/Installation_Guide/ch-kickstart2.html (CentOS 5),https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Installation_Guide/ch-kickstart2.html (CentOS 6)或 https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Installation_Guide/chap-kickstart-installations.html (CentOS 7)
1. 对准 %packages 部份
当使用 %packages 来定义哪些组件需要安装时,有一些比较少记载的选项可供使用:
- --resolvedeps
- 自动排除组件之间的依赖。这个选项在 Centos 5 已经被降级。组件之间的依赖现在每次都会自动被排除。
- --excludedocs
安装时省略那些被标签为文档的文件(就是那些在执行 rpm -qld <packagename> 时列出来的文件)
- --nobase
- 安装时省略 @Base。除非你知道自己在做什么,否则这样做行不通,因为可能会遗漏某些组件是安装后执行脚本时所需的
- --ignoremissing
- 忽视不存在的组件及群组,而不要询问处理方法。这个选项在 Centos 5 已经被降级。组件之间的依赖现在每次都会自动被排除。
为 CentOS 4 选择最少组件的样例:
%packages --resolvedeps --excludedocs --nobase kudzu
请留意这样做会遗漏一些基本的组件。rpm、yum、vim、dhcp-client 及键盘布局都不会存在。Kudzu 是必须的,因为没有它,安装程序将不能执行。
为 CentOS 5 选择最少组件的样例:
%packages --excludedocs --nobase @Core
同样,这样做只会产生一个非常基本的系统,而大部份你遇期有的功能都不会存在。
CentOS 4 上所指定的 --resolvedeps 已不必在 CentOS 5 或以上的发行版本中采用,因为较新的安装程序经常会解决依赖关系。
2. 分割磁盘
若果你以一个未分割的磁盘、或虚拟机器上未分割的映像作为初始化点,请使用 --initlabel 或 clearpart 参数来确定磁盘标签会被初始化,否则 Anaconda 会交互地要求你确定创建磁盘标签。假设你需要清除 xvda 上的所有分区,并为未存在的磁盘标签进行初始化,请执行:
clearpart --all --initlabel --drives=xvda
3. 在直正的文字模式执行 anaconda
你很可能已经知道在你的 kickstart 档内加入 "text" 这一行会令 anaconda 采用 ncurses 界面,而不是 X11 界面。但其实还有另一个可能选择:就是在真正的文字模式中进行安装。只要将 kickstart 档内 "text" 这行以 "cmdline" 取代,anaconda 便会将整个安装过程在文字模式中进行。尤其是当采用 %packages --nobase 或执行复杂的 %post 脚本时,这样做会省下很多小时的侦错时间,因为你可以亲眼看见所有在安装时执行的脚本的输出。
4. 启用/停用 firstboot
你们都认识 firstboot,那个在安装后帮助你设置系统的向导。你可以在 kickstart 档内的指命部份加入 "firstboot --enable" 或 "firstboot --disable" 来启用或停用它。
5. 各个终端機所显示的内容
- Alt-F1
- 使用 text 或 cmdline 模式安装时的对话框
- Alt-F2
- 指命壳的提示符号
- Alt-F3
- 安装程序所输出的安装日志
- Alt-F4
- 内核及其它程序所输出的系统日志
- Alt-F5
- 其它信息
- Alt-F7
- 使用图像界面安装时的对话框
6. 记录 %pre 及 %post
当使用 %pre 或 %post 脚本时,你可以轻易地用 --log=/path/to/file 将输出记录在一个文件内
%post --log=/root/my-post-log echo 'Hello, World!'
下面是另一个同时记录输出并将它显示在划面上的方法:
%post exec < /dev/tty3 > /dev/tty3 chvt 3 echo echo "################################" echo "# Running Post Configuration #" echo "################################" ( echo 'Hello, World!' ) 2>&1 | /usr/bin/tee /var/log/post_install.log chvt 1
7. 为防火墙设置多个信任的界面
你可以在防火墙的选项中多次加入 --trust 选项来信任多个界面:
# 启用 firewall,打开 ssh 端口,并信任 eth1 及 eth2 firewall --enable --ssh --trust=eth1 --trust=eth2
8. 令 kickstart 使用指定的网络界面
当你的系统拥有多过一个的网络界面时,anaconda 会询问你要 kickstart 使用哪一个。这个决定可以在开机通过加入 ksdevice 参数来设置。要以 eth0 来进行 kickstart,你只须在内核指命行内加入 ksdevice=eth0。
第二个方法是指定 ksdevice=link。这样,anaconda 就会采用第一个获得有效连接的界面。
第三个方法在 PXE 模式的安装下生效。你须要在 PXE 配置文件内加入 IPAPPEND 2 及指定 ksdevice=bootif。这样,anaconda 就会采用 PXE 引导时使用的界面(这未必等同第一个获得有效连接的界面)。
在 kickstart 配置文件内,你亦需要用 network 语句来定义网络界面。假若你采用第二个或第三个方法,你便不能预知哪个界面会被使用。若果你在 network 语句中没有指定一个界面,anaconda 将会按照 network 语句内的定义来设置 kickstart 所使用的仪器。
9. 强迫 kickstart 询问网络设置
由 CentOS 5 起,有一个未被记载的选项可以在安装过程启用网络设置的提示。在 network 语句内,为 --bootproto= 这个选项放入 query 关键字,如下:
network --device=eth0 --bootproto=query
这样一个对话框便会出现,询问有关 IP 地址及主机名称的设置。
10. 有用的现成 kickstart 档
你可以在 https://github.com/CentOS/Community-Kickstarts 找到一堆现成的 kickstart 档。它们的首要目的是为社群提供一些针对不同部署类型的 kickstart 样例。
Translation of revision 29