扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
配置目的
客户端可以通过boot net - install 一条命令来实现OS安装和基本配置。
(注意:本文档采用的安装方式是WAN,不是LAN,安装介质是flash image安装),考虑到篇幅和个人精力的问题,相关安全方面的配置都忽略掉。如果以后有时间的话,我会考虑给大家补上来。
当然本贴的重要目的是分享整个配置过程中遇到的许多问题,以及该如何判断处理,让大家少走弯路。这可能是我的原动力。
安装流程
把solaris 10u2的操作系统作为jumpstart server系统,flash image文件是在solaris 10u3上制作的,同样miniroot文件也是在solaris 10u3上制作)
我为什么要这么折腾呢?其目的很简单,尽量做到整个安装过程相对苛刻,让所有可能出现的问题都暴露出来。
硬件环境准备
sparc 服务器或者工作站(唯一特殊的要求OBP为4.x版本,支持network-boot-arguments参数,在OS中运行eeprom network-boot-arguments,确认是否有该参数。UltraSPARCIII或者更新的主机应该都支持城域网的安装,如果偏低,考虑先升级OBP。
软件环境准备:
solaris 10第三版06/06
solaris 10第二版06/11
apache 2.2.4或者最新版本以及相关软件(expat, libiconv, zlib, openssl-0.9.8e, libgcc-3.4.6, gdbm, zlib, db-4.2.52.NC, apr-1.2.2-sol10-sparc-local, aprutil-1.2.2-sol10-sparc-local)一个都不能少,否则启动apache时系统会报错,导致Httpd启动失败
###########################################################################
jumpstart软件简单介绍
服务器端:
当然在WAN方式安装的从头到尾,起到主导作用的是webserver,所有的介质安装、引导和安全策略都离不开它。因此首先我们需要选择一个合适的webserver
说到这里,我再提一下。我们可以选择的webserver品种不多,常见的有apache 1.x或者2.0(OS自带),apache官方网站的2.2.4,SUNONE webserver(又称Java Enterprise System) 6.1sp7和7.0当然版本稍微低的也可以。具体会有什么样的问题,随后我会简单阐述。
客户端:
客户端比较的简单,boot net - install运行之后,OBP马上会根据network-boot-arguments中指定的参数来配置IP,掩码,网关3个重要的网络参数,然后在根据network-boot-arguments中指定的files去访问CGI程序wanboot-cgi,CGI程序会根据clientID来决定该client使用哪套配置文件安装。
如果这时候出现connecttion time out类似字样,那么需要检查网络配置是否互通;
如果出现connection refused, 那么需要检查webserver是否正常启动,80端口是否可以正常访问;
如果出现类似500类似的错误,那么需要检查/etc/netboot目录下面的clientID目录已经下面的文件是否正确或者遗漏,clientID目录是否为大写,wanboot.conf文件定义的boot-file是否无法从web browser访问;
如果出现403类似字样,那么需要检查cgi程序的文件执行权限。
wanboot的CGI(通用网关接口程序)和asp, pell,php等动态网页程序类似,可以实现http动态交互的功能,有别于简单的html。
那么CGI开始引导的下一步的动作会是什么呢?是根据client端提供过来的MAC地址,和IP/掩码,算出一个14位16进制的clientID,然后在/etc/netboot下面找匹配的clientID目录,并把该目录的配置文件调用出来给该client使用,从而实现了配置文件和client端的对应关系。
那么clientID是怎么算出来的呢?是01加上12位MAC地址的大写。假设mac为00:22:44:88:aa:dd,那么clientID就为0100224488AADD(注意是大写字母!!),既然和MAC扯上钩了,那么local-mac-address?这个参数就会敏感起来。这个参数同样要预先设置为true,当然对于单网口主机就无所谓啦,否则可能导致网络引导到一定程度后失败。
如果在多网口中的非默认网口上安装jumpstart客户端,那么我要特别提醒需要在OBP的OK提示符下额外设置几个参数:
[code]
show-nets 确认哪个网口是你要用来安装OS的网口 (单网口主机忽略此步)
nvalias rootdisk /pci/???????????????????????
nvalias mirrdisk /pic@9/60000000?????????????
nvalias net /pci?????????/network@2,0
nvstore 保存nvram
setenv use-nvramrc? true
setenv network-boot-arguments
[/code]
到此client端的配置就讲完了。
###########################################################################
本文的重点是服务器端的安装配置,我们开始吧。
jumpstart server的OS安装模式是end-user,然后仅仅补装一个软件SUNWmkcd,该软件在solaris 10的安装光盘上有。
webserver经过我长时间的折腾,我们发现真正适合我们用的webserver就是apache 2.2.4(官方声明中可以支持2GB的文件下载,这对于超过2GB的flash文件安装非常重要!)
solaris 10自带的apache是1.x还有一个是2.0(如果是2.2以上,那么就无须安装第三方的了)?这两个版本都可以使用,问题就在于如果采用http方式安装flash文件,那么问题就来了,当下载flash文件到2GB的时候出现问题,或者分析flash文件时jumpstart就异常退出,无法继续安装,所以不推荐使用。
JES webserver 6.1sp7和7.0(64位运行模式)同样存在不支持2GB文件下载的问题。如果采用nfs,或者ftp方式安装flash文件,那么上述提到的几个webserver就无所谓使用谁啦,反正都可以提供CGI程序支持,miniroot,wanboot等文件下载,安全策略。
紧接着到sunfreeware.com上面下载那一堆第三方软件吧。expat, libiconv, zlib, openssl-0.9.8e, libgcc-3.4.6, gdbm, zlib, db-4.2.52.NC, apr-1.2.2-sol10-sparc-local, aprutil-1.2.2-sol10-sparc-local,具体网址见附录。
安装方法当然也是相当的简单,我可就具一个例子咯。
我从网上下载了一个apache-2.2.4-sol10-sparc-local.gz,然后放到了/tmp下
# cd /tmp; gunzip apache-2.2.4-sol10-sparc-local.gz
# pkgadd -d apache-2.2.4-sol10-sparc-local 然后一路y下去。注意-d后面没有标点符号哦。
剩下的那些包子都是同样的安装方法。
默认安装完成之后apache的home目录是/usr/local/apache2
copy一个默认的配置文件吧。
# cd /usr/local/apache2/conf;
# cp httpd-std.conf httpd.conf
或者直接到www.apache.org上面下载源码自己编译一个。如果主机性能不太好就直接用二进制安装吧。编译的过程得几十分钟。
可以尝试启动一下apache看看是否可以正常启动?
# cd /usr/local/apache2/bin; ./apachectl start
# telnet 0 80 看看80端口是否已经打开,或者直接用web browser测试一把。
需要指明的几点:apache默认的documentroot为/usr/local/apache2/htdocs,我们没有必要作更改,把我们需要的几个目录连接到htdocs下面即可。
apache很简单,无需要任何额外的配置。到此安装完成。更为详尽的测试随后和jumpstart配置文件一块描述吧。
###########################################################################
jumpstart 目录的创建和相关配置文件的生成。
目录结构主要分为2个
1, /etc/netboot (提供基本的配置文件指向,知道webserver返回哪个配置文件给客户端使用)
结构如下:
/etc/netboot/网络号/clientID/
假设client ip为192.168.1.22,掩码为255.255.0.0,那么这里提到的网络号即为192.168.0.0,clientID在本文前部分提到。您大可不必担心,如果jumpstart的client足够多,那么如何jumpstart server才能找到属于他们自己的system.conf和wanboot.conf文件。我这里把wanboot.conf文件的内容列出来,并简单解释一下吧。
[code]
boot_file=/wanboot/wanboot
root_server=http://192.168.1.1/cgi-bin/wanboot-cgi
root_file=/wanboot/miniroot
signature_type=
encryption_type=
server_authentication=no
client_authentication=no
resolve_hosts=
boot_logger=http://192.168.1.1/cgi-bin/bootlog-cgi
system_conf=system.conf
[/code]
boot_file的作用安装我的理解是创建一个引导环境,为miniroot程序的加载作铺垫。测试wanboot文件是否可以正常访问的方法是用web browser下载http://192.168.1.1/wanboot/wanroot是否成功。
root_file变量就是指定minroot文件的地方。测试miniroot文件是否可以正常访问的方法是用web browser下载http://192.168.1.1/wanboot/miniroot是否成功。
boot_logger的注意目的是记录实时的安装进度,记录文件为文件文件在/tmp/bootlog.$hostname,使用tail -f /tmp/bootlog.$hostname即可查看。
root_server是指定client引导用的cgi程序。
还有system.conf文件
[code]
SsysidCF=http://192.168.1.1/config/lab-x1
SjumpsCF=http://192.168.1.1/config/lab-x1
[/code]
上述两行的主要目的让webserver返回目录config/lab-x1的2个文件sysidcfg和profile给client端,这个两个传统的配置文件主要目的是为了定义主机名,ip,域名解析,系统硬盘分区划分,镜像,flash文件的下载地址等信息,尤为重要。手册中有较为详尽的叙述。
2 /jumpstart目录。
我们可以把每个client的configuration放在/jumpstart/config下面
把wanboot相关文件wanboot,miniroot放在/jumpstart/wanboot下面
把flash文件放在/jumpstart/flash下面
这里我举例说明如何创建一个这样的client端,信息如下:
[code]
client name: lab-x1
client ip: 192.168.1.22
client netmas: 255.255.255.224
client gateway: 192.168.1.1
nam_server none
password: root
disk VTOC: 交换分区10g,metadb 8兆,剩下的给root分区
MAC地址:00:22:44:88:aa:dd
安装方式:http方式的flash
[/code]
步骤如下:首先创建3个关键的目录
# mkdir /jumpstart/config
# mkdir /jumpstart/flash
# mkdir /jumpstart/wanboot
# cp /usr/lib/inet/wanboot /jumpstart/wanboot
# miniroot文件需要手工制作,方法稍显复杂,主要原因是大部分工作是在解决miniroot的bug问题,当然miniroot文件最后也要放到/jumpstart/flash下面。
Flash文件的制作方式比较简单
# flarcreate -n solaris10u3 -L pax solaris10.flar
我这里的flash文件是在另一个os上创建的,注意归档器可以用cpio,也可以用pax,为什么我要用pax呢,因为当flash文件大于4gb,那么cpio方式压缩可能会有点问题!!因此pax压缩方式是推荐的。整个压缩过程额外的时间开销还好,不是太多。
Copy cgi程序
# cd /usr/lib/inet/wanboot/
# cp bootlog-cgi wanboot-cgi /usr/local/apache2/cgi-bin/
# chmod +x /usr/local/apache2/cgi-bin/*
由于/usr/local/apache2/cgi-bin 下面的用ln连接到其他地方是不被允许的,因此bootlog-cgi、wanboot-cgi必须copy到/usr/local/apache2/cgi-bin下面,而不能作连接。不过可以作虚目录,这样是没有问题的。
注意如果是sunone webserver,那么cgi-bin目录, /jumpstart下面的config目录都必须改变属主、权限和webserver的安装用户组完全一致,否则可能产生权限问题。尤其是CGI程序。
下面我们转到/jumpstart/config目录下面
# cd /jumpstart/config
# mkdir lab-x1; cd lab-x1
复制check脚本
# cp /cdrom/cdrom0/s0/Solaris_10/Misc/jumpstart_sample/check .
# vi sysidcfg
[code]
network_interface=hme0 { primary hostname=lab-x1
ip_address=192.168.1.22
netmask=255.255.255.224
protocol_ipv6=no
default_route=192.168.1.1 }
timezone=PRC
system_locale=C
terminal=vt100
timeserver=localhost
name_service=none
security_policy=none
root_password=i./CJA3PfKjNk
[/code]
写到哪儿就说到哪儿吧,timeserver是指定ntp server,现在按照官方文档指定的方法是有问题的,所以就不要在这里费心了,如果有兴趣的话,可以把它加到postinstall.sh当中去。system_locale这里也只能选择比较基本的C,其他的比如en_US,系统识别不了,按照我的个人感觉来判断这一切都是由于miniroot太小,仅仅是一个迷你的内核和一些常用的命令,此时很多东东都没有加载的原因,miniroot这个小内核就200多兆,我们可以理解。赫赫。
编辑规则文件
# vi rules
hostname lab-x1 – profile postinstall.sh
# touch postinstall.sh
# chmod +x postinstall.sh
其实postinstall.sh这个文件是在系统所有package安装完成之后,可以运行的一个脚本,这个脚本里面可以加很多东西,比如自己额外安装个包子,下载个其他软件,配置个ipmp,生成一些配置文件,创建mpxio的配置文件,清理系统日志。有精力的网友,我建议在这里可以多作文章!!这里做好了之后,那么你的OS重启以后就可以正式上线使用了!!!我也把很多精力放在这上面了。
编辑profile文件
# vi profile
[code]
install_type flash_install
archive_location http://192.168.1.1/flash/sol10.flar
partitioning explicit
metadb c1t0d0s7 size 8192 count 3
metadb c1t1d0s7 size 8192 count 3
filesys mirror:d10 c0t0d0s0 c0t1d0s0 free /
filesys mirror:d20 c0t0d0s1 c0t1d0s1 2048 swap
[/code]
在安装的过程中metadevice ID 不能超过127,即使是solaris 10u3,我尝试改过system,以及定义metadevice数量的2个文件都失败,不过一般情况下我们都是不会超过127的。
然后转到/etc/netboot下面创建目录
# mkdir /etc/netboot/192.168.1.0
# mkdir /etc/netboot/192.168.1.0/0100224488AADD
# vi system.conf
[code]
SsysidCF=http://192.168.1.1/config/lab-x1
SjumpsCF=http://192.168.1.1/config/lab-x1
# vi wanboot.conf
[code]
boot_file=/wanboot/wanboot
encryption_type=
signature_type=
server_authentication=no
client_authentication=no
resolve_hosts=
root_server=http://192.168.1.1/cgi-bin/wanboot-cgi
root_file=/wanboot/miniroot
boot_logger=http://192.168.1.1/cgi-bin/bootlog-cgi
system_conf=system.conf
[/code]
# cd /usr/local/apache2/htdocs
# ln -s /jumpstart/config
# ln -s /jumpstart/flash
# ln -s /jumpstart/wanboot
好了,在当前目录下运行./check,生成rules.ok文件吧,如果一切正常,那么配置到此就结束了。
然后就在客户端运行boot net – install开始安装吧。
注意- install之间是有空格的!否则系统会认为你安装时使用-i参数,后面带有nstall文件,那么这个nstall的未知文件是不会被系统找到的,所以jumpstart运行到一半就停下来了。
关于jumpstart的整个client安装过程中,我建议检查2个apache的log access.log, error.log,这2个文件对掌控整个安装过程和排错是相当有用的。/usr/local/apache2/logs下面
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者