1. 概述
设备开启后通过网络加载操作系统启动。
需网络服务器一台,网络服务器安装syslinux、dhcp、tftp、ftp、nfs等等服务。
syslinux实现网络启动功能
dhcp为设备分配ip地址
tftp通过网络传输启动所需文件,基于udp协议
ftp通过网络传输文件,基于tcp协议
nfs网络文件系统,提供设备启动所需文件系统
2. 服务安装
以fedora14为例:
2.1 安装syslinux工具包
下载syslinux-4.02-3.fc14.i686.rpm安装之
2.1.1 使用/usr/share/syslinux/pxelinux.0作为生产引导文件
2.1.2 配置pxelinux服务
使用default,内容为:
default linux
prompt 1
timeout 600
display boot.msg
menu title Welcome to Fedora 14!
label linux
将生产内核和文件系统(vmlinuz initrd.img)复制到/tftpboot/下
将系统服务 防火墙和selinux关闭(修改/etc/selinux/config)
2.2 配置DHCP服务
2.2.1 下载dhcp安装包
dhcp-4.2.0-21.P2.fc14.i686.rpm
命令rpm -ivh --force dhcp-4.2.0-21.P2.fc14.i686.rpm 安装之
2.2.2 配置DHCP
设置网口ip地址:192.168.10.254
cp -f /usr/share/doc/dhcp-4.2.0/dhcpd.conf.sample /etc/dhcp/dhcpd.conf
编辑dhcpd.conf
subnet 192.168.10.0 netmask 255.255.255.0 {
}
2.2.3 启动DHCP
service dhcpd start
2.3 配置TFTP服务
2.3.1 下载tftp-server-0.49-7.fc14.i686.rpm安装
2.3.2 下载xinetd-2.3.14-32.fc14.i686.rpm安装
修改文件vim
server_args =-s
2.3.3 下载tftp-0.49-7.fc14.i686.rpm安装
2.4 配置FTP服务
2.4.1 安装ftp工具包
安装vsftpd工具包,一般fedora自带
2.4.2 配置/etc/vsftpd/vsftpd.conf
打开
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
这两行即可
2.4.3 添加ftp用户
groupadd ftpusers
useradd -G ftpusers -d /tftpboot/username/ -M username
添加了1个用户,名称是username,对应到目录是/tftpboot/username/
用命令passwd username设置用户密码
2.4.4 配置/etc/vsftpd/chroot_list
添加用户名进去,锁定浏览目录
2.4.5 开启ftp服务
service vsftpd restart
2.5 配置nfs服务
2.5.1 安装工具包
安装nfs-kernel-server和nfs-common软件包
2.5.2 配置/etc/exports
添加语句
/tftpboot/targetfs *(rw,nohide,insecure,no_subtree_check,async,no_root_squash)
将/tftpboot/targetfs设为nfs目录
2.5.3 开启nfs服务
启动portmap服务:
service portmap start
启动NFS服务:
service nfs start
3. 环境搭建
将网络服务器和设备通过交换机置于同一子网内,设置设备BIOS,选择从网络启动。
4. 启动流程
4.1 开启设备
4.2 设备网卡通过服务器dhcp服务获取ip地址
4.3 服务器传送pxelinux.0文件到设备
4.4 设备运行pxelinux.0,通过tftp读取pxelinux.cfg下配置文件default
4.5 解析default文件,获取内核文件和内核启动参数
4.6 设备通过tftp从服务器下载kernel
4.7 如果内核启动参数中有initrd=xxx,设备会下载xxx作为文件系统
4.8 设备启动内核
4.9 如果已下载文件系统,那么就挂载文件系统,系统启动
4.10 使用nfs文件系统,需修改pxelinux.cfg/default文件
append noinitrd init=/linuxrc root=/dev/nfs rw console=ttyS0,115200 nfsroot=192.168.10.254:/tftpboot/targetfs ip=192.168.10.100:192.168.10.254:192.168.10.1:255.255.255.0:96.12:eth0:off
内核编译时需要选择:
--- Networking support
Networking options
[*]
[*]
[*]
[*]
Device Drivers
Block devices
<*>
File systems
Network File Systems
<*>
[*]
[*]
[*]
[*]
[*]
以支持nfs作为根文件系统
5. 总结
syslinux作用像是一种网络bootloader
网络启动在系统启动时可以抛开ROM,可实现产品生产、调试、系统安装、功能测试等等功能。
产品生产:
通过网络启动,使用简单版本的linux内核和文件系统,编写脚本,将软件烧写到存储器上。
产品调试:
通过网络启动,推荐选择nfs方式挂在根文件系统,可从串口或者网络输出查看信息,可方便的调试内核和文件系统。
系统安装:
将光盘上所有文件复制到服务器ftp目录下,参照光盘启动的cfg文件修改pxelinux.cfg/default文件,启动光盘上系统,然后选择通过FTP安装,配置好服务器地址和路径即可。
功能测试:
通过网络启动,启动测试版本的 linux 系统,检测系统硬件。