账号:
密码:
最新动态
产业快讯
CTIMES / 文章 /
好用的Debian自动安装系统 - FAI
 

【作者: 葉信佑】2004年12月01日 星期三

浏览人次:【3333】

什么是FAI?

FAI 究竟是什么呢?看到他的全名︰Fully Automatic Installation 就不难了解是一个完全自动化的安装系统,透过FAI 我们可以大量建构许多Debian 的计算机却完全不用人工去建立,管理者只需要将计算机教室的电源打开,然后就可以开始泡茶看报纸,然后等所有计算机都装好就可以打卡下班了,是不是很恐怖呢?


如果您还在烦恼重新安装系统该选择Stable 光盘片安装并设定每个选项或是使用debootstrap 的方法,请您全部都丢掉,给FAI 一个机会,相信会让您对安装Debian 有完全不同的印象喔,因为. . . “我连enter 都不用按就装好Debian 了!”


什么是FAI Boot-CD?

FAI Boot-CD1 是提供FAI 建立安装光盘的软件,由于FAI 本身无法制作出脱机式的安装光盘,所以才有这个Project 产生。因为是脱机式安装,所以舍去了网络安装,把一个完整的系统压缩在光盘片上,只要将计算机设定好光驱开机,就能自动进行安装了。


目前已知的问题是该版本已经过时,无法搭配目前的Debian Testing/Unstable 的版本产生安装光盘,所以需要额外修改程序代码才能正常工作,但请读者们不用担心,笔者已经修正了FAI Boot-CD 的原始码,后续的章节会说明如何安装与建立安装光盘。


FAI 的原理

FAI 的架构是采用Client/Server 的方式来实作,所以要实现FAI 必须要分别设定好Server与Client 的安装流程。


Server 部份请先设定一台提供安装套件的主机(以下简称FAI Server)。在FAI Server 上先使用debootstrap来建构一个Debian Base System,并命名成NFSROOT 提供给Client 端下载并解压安装。如果想要额外安装不同的软件,例如︰KDE, GNOME, QT. . . 等套件,FAI 会自动使用apt-get 来安装软件。读者们可以先使用\debmirror" 这个程序来镜射Debian 套件汇集库(以下称为pkg pool),以加快安装速度。请参考附录的镜射pkg pool。笔者已事先镜射好pkg pool 到/home/ftp 的目录下。


Client 部份请设定\Default Task" 的每一个工作任务,例如分割硬盘,安装软件,甚至设定网络等。还能针对不同需求的机器新增Task 来建立工作站或服务器等。详细的部份会在陆续的章节说明(FAI Client 的安装设定是在FAI Server 上完成的)。建立好NFSROOT 之后,接下来选择Client 的开机媒体装置,比如磁盘片、光盘、或是网络开机。Client 端只要使用这些媒体来开机,管理者剩下的工作就真的只要泡泡咖啡就可以了。


硬设备

从FAI 的原理这一节的说明中,至少要有一台FAI Server 提供安装的服务,至于Client端的数量就看网络负载的能力了。


FAI Server x1 (IP:192.168.0.1) FAI Clients xN

架设FAI Server

您需要安装下述的软件才能建构一台完整的FAI Server :


  • ● dhcp-server


  • ● nfs-kernel-server


  • ● debootstrap


  • ● fai


  • ● fai-kernel



DHCP Server

DHCP Server 是为了让FAI Client 在开机时能够自动取得IP、网络屏蔽与通讯闸等信息。


其中最重要的是Client 端的\Hostname"。FAI 能针对不同的Hostname 进行不一样的安装程序,这样的好处在于如果要安装Web、Mail、Proxy. . . 等服务的机器,依然可以使用FAI 来进行安装。当然,您必须熟悉DHCP 中的\¯xed-ip" 的机制。


NFS Server

NFS Server 是为了让FAI Client 能够取得debootstrap 所制作出来的Debian Base System。读者们不用担心不熟悉debootstrap 或是NFS 的操作方式,只要交给FAI 来产生即可。


档案结构

这一节要说明FAI 配置文件中的主要参数,请依照您的周边环境更改FAI 的配置文件。需要更改的配置文件如下︰


/etc/fai/fai.conf

FAI 的主配置文件,主宰着Client 端抓取FAI Server 的信息。该档案要修改的项目不多,笔者会解释重要参数,读者们可以视情况修改︰


  • ● installserver=192.168.0.1::: 指定FAI Server 的ip 地址


  • ● mirrorhost=$installserver::: pkg pool 的服务器ip 地址,笔者已经事先下载好


  • pkg pool 了,所以直接命名成FAI Server


  • ● SERVERINTERFACE=eth0::: FAI Server 与Client 端沟通的网络装置,默认是


  • eth0


  • ● FAI CONFIGDIR=/usr/local/share/fai::: CONFIGDIR 是存放class、hooks、install


  • package. . . 等配置文件的目录,这些配置文件控制着Client 端安装的前置与后续作业。



以上这些参数是必须依照主机环境作更改,其余的参数并不需要变动,请参考\fai.conf" 的说明便能了解其意义,笔者在此也不详述了。请继续往下看第二个配置文件的说明。


/etc/fai/make-fai-nfsroot.conf

FAI Server 会执行debootstrap 来建立一个Debian Base System 当作NFSROOT 提供给Client 端安装。所以这个档案是调整debootstrap 的配置文件。


  • ● NFSROOT ETC HOSTS="192.168.0.1 $mirrorhost"::: 如果FAI Server 没有DNS 服务,此选项可以设定Client 端的/etc/hosts


  • ● FAI DEBOOTSTRAP="sarge ftp://$mirrorhost/debian"::: 设定debootstrap安装Debian 版本与来源。笔者已经事先下载好pkg pool 了,所以将来源设定成FAI Server


  • ● FAI LOCAL REPOSITORY="deb ¯le:/fai/¯les packages/"::: 制作本地端的pkg pool,建立NFSROOT 时会下载deb 套件档案,设定此参数会建立本地端的pkg pool 让FAI Client 安装套件


  • ● KERNELPACKAGE=/usr/lib/fai/kernel/kernel-image-2.4.27-fai 1 i386.deb:::此kernel-image 是用来制作开机媒体的核心,这个deb 档案是FAI 套件内附的



etc/fai/sources.list

这是用来设定套件来源。如果FAI Server 没有提供DNS 服务的化,请将来源的Domain Name 改成IP 位置。读者们可以指定速度快的文件服务器。


由于笔者先前已经镜射所有的pkg pool 到FAI Server 了,所以来源便设定成FAI


Server:


1 ## FAI Server
2 deb ftp://192.168.0.1/debian/ sarge main non-free contrib

设定FAI Client

以上这些动作是针对FAI Server 的架设,底下才是针对Client 端的设定与调整。这时候读者们应该会想说FAI 怎么会这么麻烦呢,笔者很同意,但FAI 在设计时并非针对单一台计算机安装,回想一下笔者在什么是FAI这一节说明的,FAI 的特色之一是能同时针对不同的计算机进行不同的安装模式,一般的自动安装光盘顶多安装好系统之后,管理者还是必须设定或安装软件来架设服务器,如果计算机一多,可是会累坏管理者的。


听到这样也请别灰心,因为FAI 也是可以很简单,底下笔者示范的最基本的安装,重点在于说明\FAI CONFIGDIR" 中的配置文件,读者们可以从example.tgz 中找到这些范例,如果想制作Debian Base System 的话,可以直接拷贝这些档案并放到fai.conf 中定义的FAI CONFIGDIR 的目录下,完成\建立FAI 映像档" 这一节的内容就可以了。


Default Tasks

FAI 定义了一些Task 来进行安装的步骤,比如解压缩base.tgz、格式化硬盘、侦测硬件. . . 大致的流程如下︰


1. hardware detection and load kernel module
2. de¯ne classes/variables
3. partition local disks
4. create and mount the local ¯lesystems
5. install software packages
6. call speci¯c con¯guration script
7. save log ¯les
8. reboot the new machine

从上面的步骤可以了解Client 的安装流程,其中有一些classes、variables 等陌生名词会在稍后介绍,我们可以针对上述的Task 编写不同的init script 进行更进阶的调整。


Classes

Class 用来定义Client 端在进行安装的Task 中所读取的配置文件名,如果没有额外定义的话,默认就是\Default"。


Variables

在安装的过程中,会定义一些外部变量,比如keymap,这些变量档放置在 FAI CONFIGDIR/class 下,请将档名更名成[Task].var(可以有不同的Task,默认为Default),默认的档案是\DEFAULT.var",在 de¯ne classes/variables 这个步骤中,就会读取这个定义档,至于读者们针对自己定义的Task 所设定的定义档也是会一并读取喔。


底下是example.tgz 中所附的DEFAULT.var﹕


1 # default values for installation. You can override them in your *.var files
2
3 FAI_CONSOLEFONT=
4 FAI_KEYMAP=us-latin1
5
6 # Set UTC=yes if your system clock is set to UTC (GMT), and UTC=no if not.
7 UTC=yes
8 time_zone=Asia/Taipei
9
10 # root password for the new installed linux system; pw is "fai"
11 rootpw="56hNVqht51tzc"
12
13 # packages in /fai/files/packages/ that are installed to the new system
14 # used in scripts/DEFAULT/S01. This directory should be a simple repository.
15 # you can also include your specific kernel-image package
16 kernelversion=2.4.27 # for the packages kernel-doc and kernel-source
17 addpackages="kernel-image-2.4.27-1-386"
18
19 # modules that will be loaded by the new system, not during installation
20 # these modules will be written to /etc/modules
21 moduleslist="e100 3c59x usbkbd usb-uhci keybdev mousedev hid 8139too pcnet32"

Hard Disk Con¯g

这是硬盘分割的配置文件,FAI 会读取该档进行分割以及格式化的动作。笔者进行测试的计算机只有安装一颗硬盘,且接在主板的Primary IDE 插槽上,所以对应的device node 为hda,底下针对配置文件内容说明各字段的意义。


<type> <mountpoint> <size in mb> [mount options] [;extra options]

  • ● type:指定分割的扇区是\primary" 或是\logical",请记得将/boot 或是/ 挂载到primary 扇区,这样才能开机喔。


  • ● mountpoint:指定挂载该扇区的目录,可以是\/home"、\/boot"、\/var". . . 等等。


  • ● size in mb:该分割区的大小,以MegaBytes 为单位。


  • ● mount option:挂载该扇区的设定,如\ro"(read-only)、\noatime"。


  • ●;extra options:格式化该扇区的设定,比如格式化ext2/3 文件系统时,加入\-i" 指定inode 的大小,请注意\;" 不可以省略喔。



建立FAI 映像档

最后,请执行『fai-setup』来建构一个FAI 和NFSROOT。


上述的fai-setup 如果顺利完成的话,如(图一),您就可以开始制作Client 端的开机媒体了。


《图一 fai-setup.txt:建立NFSROOT》
《图一 fai-setup.txt:建立NFSROOT》

开机媒体

由于Client 端没有任何数据,要如何在开机之后能够自动进行系统安装就必须仰赖FAI Server 制作出来的启动盘或光盘。


FAI 支持的底下这几种开机方式︰


● Booting from Network

● Boot Floppy


● Boot CD:http://holbytla.org/fai/


笔者的网络卡不支持WOL,所以改用磁盘片开机的方式,读者们可以参考\/usr/share/doc/fai/faguide.pdf" 来实现网络开机的安装方式。在此请执行『make-fai-°oppy -f』︰


asho@vmware:~$ sudo make-fai-bootfloppy -f fai-boot.img
1440+0 records in
1440+0 records out
1474560 bytes transferred in 0.023451 seconds (62878483 bytes/sec)
Creating an ext2 filesystem on floppy device fai-boot.img.
Creating the boot floppy with grub.
Using IP address 192.168.0.196 of eth0 for the fixed boot menu.
Writing boot data to floppy. The default boot label is:
The kernel configuration is /usr/lib/fai/nfsroot/boot/config-2.4.27-fai.
Additional kernel parameters:

执行『dd if=fai-boot.img of=/dev/fd0』将印象档写到磁盘片上,这就完成了Client 的开机片了。


目前FAI 不支持制作开机光盘片,请另外到http://holbytla.org/fai/ 下载fai-bootcd 来制作开机光盘片。


FAI Boot-CD

以上介绍的是FAI 的设定部份,如果读者们都设定好且能正确执行fai-setup 没有问题的话,那接下来建立FAI Boot-CD 就不会遇到问题了。


FAI Boot-CD 的设定与FAI 完全一样,同样是FAI Server/Client 的架构,所以能直接拷贝FAI 的设定给FAI Boot-CD。最大的不同点在于NFSROOT 被压缩在一个光盘片上,完全不用仰赖网络,对于一般单机用户来说是再方便不过了,唯一的缺点是对于不同性质的计算机必须特别制作不同的FAI Boot-CD。所以请读者依照自己的需求取舍FAI 或者FAI Boot-CD,事不移迟,马上来了解FAI Boot-CD 的使用流程吧。


首先加入笔者修改好的FAI Boot-CD 的来源,请编辑\/etc/apt/sources.list" 并加入以下一行的叙述:


deb http://people.debian.org.tw/~asho fai-bootcd/

请更新apt 的数据库并安装FAI Boot-CD:


apt-get update
apt-get install fai-bootcd

跟着底下的步骤产生FAI Boot-CD 的安装光盘:


1. cp -a /etc/fai/* /etc/fai-bootcd/ 拷贝先前的FAI 配置文件到\/etc/fai-bootcd 目录下",您也许需要额外的修改


2. 修改/etc/fai-bootcd/dist.conf 设定要安装那一个Debian 版本,跟\make-fai-nfsroot.conf" 中的Debootstrap 安装的版本一致


3. FAI CONFIGDIR 的配置文件如果您要额外修改FAI Client 的流程,请编辑FAI CONFIGDIR底下的配置文件


4. make-fai-bootcd -r -n 执行该指令产生FAI Boot-CD 的光盘映像档最后会出现如(图二)的讯息表示映像档已经完成,将产生的\fai-bootcd.iso" 刻录到光盘片上,一张热腾腾的Debian Auto-Install Disk 就产生了。


《图二 make-fai-bootcd.txt:产生fai-bootcd.iso 的讯息》
《图二 make-fai-bootcd.txt:产生fai-bootcd.iso 的讯息》

参考数据与下载


FAI 官方文件:/usr/share


FAI Boot-CD 的主网站:http://holbytla.org/fai/


FAI Boot-CD 修正下载点:http://people.debian.org.tw/~asho/fai/main.html


example.tgz:http://people.debian.org.tw/~asho/fai/example.tgz


autoinstall:另一套自动安装光盘


镜射pkg pool


debmirror 就是用来镜射pkg pool。Client 端在上个步骤中只会安装好一个Debian Base System,如果想要额外安装不同的软件,例如︰KDE, GNOME, QT. . . 等套件,FAI 会自动使用apt-get 来安装软件。读者们可以在example.tgz(配置文件范例,读者可以在参考数据与下载取得)中找到mirror debian.sh 这个script 来映像pkg pool ,这个script 搭配debmirror 就能方便下载pkg tool 到本地端的FAI Server。该script 只有抓取testing的档案(目前为Sarge),读者们可以仿照下列的说明修改\DISTS" 参数来增加Stable 或Unstable 的档案:


1 DISTS="stable,testing,unstable"
2 DISTS_NONUS="stable/non-US,testing/non-US,unstable/non-US"

			
相关文章
出囗管制风险下的石墨替代技术新视野
用Arduino 打造机器人:循迹、弹钢琴、下棋都行!
树莓派推出AI摄影机、新款显示器
智慧充电桩百花齐放
充电站布局多元商业模式
comments powered by Disqus
相关讨论
  相关新闻
» 台达推出5G ORAN小型基地台 实现智慧工厂整合AI应用
» 欧洲航太技术展在德国盛大展开,全球吸睛 镭洋推出卫星通讯整合方案,目标抢占庞大的欧洲卫星商机
» 经济部促成3GPP大会来台争话语权 国内外大厂共商5G/6G新一代技术标准
» 经济部支持跨国研发有成 台欧双方分享B5G~6G规划
» 达梭系统收购IQMS扩展3DEXPERIENCE平台


刊登廣告 新聞信箱 读者信箱 著作權聲明 隱私權聲明 本站介紹

Copyright ©1999-2024 远播信息股份有限公司版权所有 Powered by O3  v3.20.1.HK85H4HLIDWSTACUK4
地址:台北数位产业园区(digiBlock Taipei) 103台北市大同区承德路三段287-2号A栋204室
电话 (02)2585-5526 #0 转接至总机 /  E-Mail: webmaster@ctimes.com.tw