CSDN首页>

OpenPOWER PXE无盘工作站环境搭建

发表于2016-06-16 18:26| 次阅读| 来源CSDN| 0 条评论| 作者中太

摘要:无盘工作站是X86服务器世界的常规需求之一,在OpenPOWER上实现此需求和X86并没有本质差异,做为国内第一家OpenPOWER服务器生产厂商,我们在RedPOWER服务器上面亦提供此服务,以下为搭建过程,希望对各位有帮助!

无盘工作站是X86服务器世界的常规需求之一,在OpenPOWER上实现此需求和X86并没有本质差异,做为国内第一家OpenPOWER服务器生产厂商,我们在RedPOWER服务器上面亦提供此服务,以下为搭建过程,希望对各位有帮助!

先上一张整体流程图。

 

第一部分: 搭建NFS,DHCP,TFTP服务  (用X86搭建服务器也可以) ,我是在X86_centos7.2上测试通过的。

注: 搭建服务器时,先把selinuxiptables关闭,比如执行 setenforce 0 iptable -F 

一、配置NFS

NFS 安装:

yum install nfs-utils portmap

systemctl restart nfs-server

systemctl enable nfs-server

systemctl status nfs-server

注意:千万不要手工启用rpcbind服务,换言之,不要执行systemctl restart rpcbind

二、服务器dhcp安装: yum install *dhcp* 

(192.168.10.229x86服务器的IP

[root@localhost tftpboot]# cat /etc/dhcp/dhcpd.conf

subnet 192.168.10.0 netmask 255.255.255.0 {

range 192.168.10.100 192.168.10.200;

option domain-name-servers 8.8.8.8;

option routers 192.168.10.229;

default-lease-time 21600;

max-lease-time 43200;

next-server 192.168.10.229;

filename "pxelinux.0";

}

启动DHCP服务:

systemctl restart dhcpd

systemctl enable dhcpd

systemctl status dhcpd

三、TFTP服务器搭建: TFTP 服务是通过xinetd 工具管理的

1) yum install tftp-server xinetd

2) mkdir /tftpboot/ //创建TFTP服务共享的目录

修改如下:

[root@localhost tftpboot]# vim /etc/xinetd.d/tftp 

# default: off

# description: The tftp server serves files using the trivial file transfer \

# protocol. The tftp protocol is often used to boot diskless \

# workstations, download configuration files to network-aware printers, \

# and to start the installation process for some operating systems.

service tftp

{

socket_type = dgram

protocol = udp

wait = yes

user = root

server = /usr/sbin/in.tftpd

server_args = -s /tftpboot -------------修改目录为/tftpboot

disable = no ----------------------------要修改为no

per_source = 11

cps = 100 2

flags = IPv4

}

重启TFTP服务

systemctl restart xinetd.service 

systemctl enable xinetd

systemctl status xinetd

至此,所有服务都已完成。最后检查下DHCPTFTPNFS3个服务是否都已启动,是否都已设置成开机自启

systemctl status dhcpd

systemctl status xinetd

systemctl status nfs

第二部分:无盘工作站的设置

1. 创建系统目录,无盘工作站就是从这里面拿文件的。

mkdir -p /client/ppc_centos72

如下是一行命令,是把自身系统的文件copy/client/ppc_centos72,换言之是用自身制作系统文件。

rsync -avz --exclude='/client' --exclude='/proc' --exclude='/sys' --exclude='/tmp' --exclude='/var/tmp' --exclude='/media' --exclude='/mnt' --exclude='/lost+found' --exclude='/etc/mtab' --exclude='/run' --exclude='/opt' --exclude='/dev' --exclude='/opt'  /* /client/ppc_centos72/

 

进入此目录,创建其他的空文件夹:

cd /client/ppc_centos72/

mkdir -p proc sys tmp var/tmp media mnt opt run dev

进入/client/ppc_centos72/dev/  执行如下两条命令

[root@www dev]# mknod -m 666 console c 5 1  

[root@www dev]# mknod -m 666 null c 1 3 

 

2. 编辑fstab内容如下,(把原来的/ ,/boot等全部删除)

编辑OK的如下:

[root@localhost /]# cat /client/ppc_centos72/etc/fstab 

192.168.10.229:/client/ppc_centos72 / nfs defaults,sync,rw,nolock 0 0

tmpfs /dev/shm tmpfs defaults 1 1

devpts /dev/pts devpts gid=5,mode=620 0 0

sysfs /sys sysfs defaults 0 0

proc /proc proc defaults 0 0

【如上两步是在PPC平台上制作好文件系统,再copyx86_centos7.2上测试的。当然也可以用PPC平台搭建服务器,这就有点奢侈啦】

3. 通过NFS共享发布工作站系统

[root@pxesvr ~]# vim /etc/exports

/client/ppc_centos72    *(rw,async,no_root_squash,insecure)    //注意:insecure必须加上

更新:

exportfs -rv

验证NFS是否配置成功:showmount -a

[root@localhost /]# showmount -a //正常返回如下:

All mount points on localhost.localdomain:

可能遇到的问题:

[root@localhost ~]# showmount -a

clnt_create: RPC: Program not registered //说明nfs-server没启用

4. 准备PXE引导程序(pxelinux.0是由syslinux包提供的,如果没有就yum install syslinuxX86系统提取即可

复制pxelinux.0/tftpboot

cp /usr/share/syslinux/pxelinux.0 /tftpboot/

5. 创建文件夹和编辑default文件

mkdir -p /tftpboot/pxelinux.cfg

vim /tftpboot/pxelinux.cfg/default

[root@localhost /]# cat /tftpboot/pxelinux.cfg/default

default CENTOS72

prompt 1     //0自动选择,不等待客户机干预;              1 等待客户机操作

timeout 20

label CENTOS72

kernel vmlinuz //注意:虽然文件的真实路径是/tftpboot/vmlinuz,但这里要写vmlinuz

append initrd=initrd.img ip=dhcp rw root=nfs:192.168.10.229:/client/ppc_centos72 selinux=0   //后面的selinux=0必须加,否则系统启动会卡住。

6. 准备用于引导的两个文件 (严格按照如下步骤做)

      1Linux内核文件vmlinuz

      2initrd.img镜像文件     (注意:问题很容易出在initrd.img)

[root@pxesvr ~]# cd /client/ppc_centos72/boot/

[root@pxesvr boot]# cp vmlinuz-2.6.32-220.el6.i686 /tftpboot/vmlinuz

 

[root@pxesvr ~]# chroot /client/ppc_centos72/

[root@pxesvr ppc_centos72]# dracut initrd.img `uname -r`   //注意:先在当前系统执行yum install nfs-utils portmap,确保nfs都装了,再生成initrd文件。(前提:确保已装dracut-network,再使用dracut工具制作. centos7默认已安装)

[root@pxesvr ppc_centos72]# exit

[root@pxesvr ~]# mv /client/ppc_centos72/initrd.img   /tftpboot/

7. 提高权限:

chmod -R 777 /tftpboot/

至此,所有操作完毕,客户端目前通过PXE启动,应该就能进入系统啦!


其他说明,一般实验不成功都是因为initrd.img没有包含nfs模块,或包含不全面,导致系统启动时无法远程挂载文件系统。所以制作initrd.img要多注意。

附,实验成功的initrd.img包含的nfs情况:

[root@localhost tftpboot]# lsinitrd initrd.img|grep nfs

nfs

-rw-r--r--   1 root     root           15 Jun 15 15:07 etc/modprobe.d/nfs.conf

drwxr-xr-x   2 root     root            0 Jun 15 15:07 usr/lib64/libnfsidmap

-rwxr-xr-x   1 root     root        68656 Jun 15 15:07 usr/lib64/libnfsidmap/nsswitch.so

-rwxr-xr-x   1 root     root        69240 Jun 15 15:07 usr/lib64/libnfsidmap.so.0.3.0

lrwxrwxrwx   1 root     root           20 Jun 15 15:07 usr/lib64/libnfsidmap.so.0 -> libnfsidmap.so.0.3.0

-rwxr-xr-x   1 root     root        68640 Jun 15 15:07 usr/lib64/libnfsidmap/static.so

-rwxr-xr-x   1 root     root        68952 Jun 15 15:07 usr/lib64/libnfsidmap/umich_ldap.so

-rwxr-xr-x   1 root     root          955 Sep 12  2013 usr/lib/dracut/hooks/cleanup/99-nfsroot-cleanup.sh

-rwxr-xr-x   1 root     root         3358 Oct 20  2015 usr/lib/dracut/hooks/cmdline/90-parse-nfsroot.sh

-rwxr-xr-x   1 root     root          929 Sep 12  2013 usr/lib/dracut/hooks/pre-udev/99-nfs-start-rpc.sh

drwxr-xr-x   5 root     root            0 Jun 15 15:07 usr/lib/modules/3.10.0-229.ael7b.ppc64le/kernel/fs/nfs

drwxr-xr-x   2 root     root            0 Jun 15 15:07 usr/lib/modules/3.10.0-229.ael7b.ppc64le/kernel/fs/nfs/blocklayout

-rw-r--r--   1 root     root        92289 Jan 31  2015 usr/lib/modules/3.10.0-229.ael7b.ppc64le/kernel/fs/nfs/blocklayout/blocklayoutdriver.ko

drwxr-xr-x   2 root     root            0 Jun 15 15:07 usr/lib/modules/3.10.0-229.ael7b.ppc64le/kernel/fs/nfs_common

-rw-r--r--   1 root     root         9697 Jan 31  2015 usr/lib/modules/3.10.0-229.ael7b.ppc64le/kernel/fs/nfs_common/nfs_acl.ko

drwxr-xr-x   2 root     root            0 Jun 15 15:07 usr/lib/modules/3.10.0-229.ael7b.ppc64le/kernel/fs/nfsd

-rw-r--r--   1 root     root       674489 Jan 31  2015 usr/lib/modules/3.10.0-229.ael7b.ppc64le/kernel/fs/nfsd/nfsd.ko

drwxr-xr-x   2 root     root            0 Jun 15 15:07 usr/lib/modules/3.10.0-229.ael7b.ppc64le/kernel/fs/nfs/filelayout

-rw-r--r--   1 root     root        69417 Jan 31  2015 usr/lib/modules/3.10.0-229.ael7b.ppc64le/kernel/fs/nfs/filelayout/nfs_layout_nfsv41_files.ko

-rw-r--r--   1 root     root       534513 Jan 31  2015 usr/lib/modules/3.10.0-229.ael7b.ppc64le/kernel/fs/nfs/nfs.ko

-rw-r--r--   1 root     root       102105 Jan 31  2015 usr/lib/modules/3.10.0-229.ael7b.ppc64le/kernel/fs/nfs/nfsv3.ko

-rw-r--r--   1 root     root       991329 Jan 31  2015 usr/lib/modules/3.10.0-229.ael7b.ppc64le/kernel/fs/nfs/nfsv4.ko

drwxr-xr-x   2 root     root            0 Jun 15 15:07 usr/lib/modules/3.10.0-229.ael7b.ppc64le/kernel/fs/nfs/objlayout

-rw-r--r--   1 root     root        51913 Jan 31  2015 usr/lib/modules/3.10.0-229.ael7b.ppc64le/kernel/fs/nfs/objlayout/objlayoutdriver.ko

-rwxr-xr-x   1 root     root         4757 Oct 20  2015 usr/lib/nfs-lib.sh

-rwsr-xr-x   1 root     root       199296 Jun 15 15:07 usr/sbin/mount.nfs

lrwxrwxrwx   1 root     root            9 Jun 15 15:07 usr/sbin/mount.nfs4 -> mount.nfs

-rwxr-xr-x   1 root     root          825 Oct 20  2015 usr/sbin/nfsroot

drwxr-xr-x   4 root     root            0 Jun 15 15:07 var/lib/nfs

drwxr-xr-x   2 root     root            0 Jun 15 15:07 var/lib/nfs/rpc_pipefs

drwxr-xr-x   3 root     root            0 Jun 15 15:07 var/lib/nfs/statd

drwxr-xr-x   2 root     root            0 Jun 15 15:07 var/lib/nfs/statd/sm

[root@localhost tftpboot]# 

0
0