科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件如何构建一个solaris10的jumpstart WAN服务器(附带排错)

如何构建一个solaris10的jumpstart WAN服务器(附带排错)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

近期我整理了一篇安装jumpstart server的文档,想与大家分享,本文档尽量用简单明了的语言来描述jumpstart服务器配置过程。

作者:blog.chinaunix.net 来源:blog.chinaunix.net 2007年9月8日

关键字: 系统 服务器 Sun Solaris

  • 评论
  • 分享微博
  • 分享邮件

 

  配置目的

  客户端可以通过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领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章