- 論壇徽章:
- 1
|
樓主為什么不試試別的版本的Solaris?
還有樓主確認你的網(wǎng)卡支持Solaris10的PXE安裝嗎?
附一個網(wǎng)上找來的自己加網(wǎng)卡驅(qū)動的PXE安裝方法:
利用DHCP(ISC)和JumpStart實現(xiàn)solaris(X86)自動化安裝
一、需求:
因公司新上一個項目,需要用到很多臺機器(X86的),而操作系統(tǒng)統(tǒng)一是Solaris10 U5(X86),如果一臺一臺的手工安裝,工作量可想而知。雖然我沒那金剛鉆,但還得攬這個瓷器活(其它對solaris比較熟悉的同事都有其它項目)。而solaris提供了一套自定義安裝程序JumpStart(類似于redhat的KickStart),所以小弟就針對目前公司狀況稍微研究了一下。
此項目上的一個主程序在solaris10U5版本上經(jīng)過認證.但U6版本(新加上perc6i的驅(qū)動了)上有問題,而U5版本本身不帶PERC6i的驅(qū)動,所以工作之一就需要手工塞驅(qū)動(后面會提到).
Clientell PE2950,RAID卡為PERC 6i,bdcrom 5706/5708的集成網(wǎng)卡(認出的模塊為bnx,支持PXE)
Client要求被安裝的OS版本:solaris10 U5(05/0:fd: X86
其它要求:雙網(wǎng)卡做冗余(active-standby)
二、概要:
因為管理成本原因,我們把JumpStart文件服務器、引導服務器、配置文件服務器和NFS服務器都放在一臺Dell PE2950的solaris 10 U5(X86)服務器上,而公司已經(jīng)有了DHCP服務器,為了避免沖突,所以就把dhcp功能給布署到原有的一臺dhcp服務器上了(后面會提到向dhcpd.conf里面添加的內(nèi)容)。
JumpStart服務器OS:Solaris10 U5(X86)
IP:172.16.134.83
Hostname:jserver
整個過程大概如下:
通過讓client從網(wǎng)絡引導,系統(tǒng)會啟動pxe功能,Bootprom發(fā)出BOOTP/DHCP請求得到IP,GateWay,及開機引導初始化文件。因為在三層交換機上讓這個vlan的dhcp請求relay到指定的dhcp server.于是dhcp server響應請求給出了相關的網(wǎng)絡參數(shù)也指明引導服務器為jserver和引導初始文件為pxegrub.I86PC.Solaris_10-1,然后client從jserver上通過tftp找到pxegrub并執(zhí)行,然后根據(jù)menu.lst里的相關參數(shù),執(zhí)行x86.miniroot(同linux下的initrd)及multiboot(同linux下的image文件),根據(jù)sysidcfg里設置的參數(shù)來執(zhí)行非交互式安裝,在postinstall的時候,會根據(jù)post的腳本(end),把perc6i的驅(qū)動灌到安裝好的系統(tǒng)里。
三、配置JumpStart文件服務器
PERC 6i的驅(qū)動是dell網(wǎng)站有下載,solaris10 u5在sun上有下載.我們把他download到一臺已裝好的solaris10上的/opt目錄
mega_sas-v00.00.01.25-2_001.tgz sol-10-u5-ga-x86-dvd.iso to /opt
jserver# cd /opt;mkdir temp
jserver# mv mega_sas-v00.00.01.25-2_001.tgz temp/
jserver# lofiadm -a /opt/sol-10-u5-ga-x86-dvd.iso
/dev/lofi/1
jserver# mount -F hsfs /dev/lofi/1 /mnt
jserver# mkdir -p /jumpstart/{x86,config}
jserver# /mnt/Solaris_10/Tools/setup_install_server /jumpstart/x86
解開miniroot(Solaris 安裝介質(zhì)中所包含的最小可引導根 (/) 文件系統(tǒng)。miniroot 包含安裝和升級系統(tǒng)所需的 Solaris 軟件。在基于 x86 的系統(tǒng)上,miniroot 被復制到系統(tǒng)中,用作故障安全引導歸檔文件,類似于kickstart里的pxelinux.0)
jserver# /boot/solaris/bin/root_archive unpack /jumpstart/x86/boot/x86.miniroot /opt/u5_minirootunpack
以下是把dell提供solaris10(X86)的驅(qū)動塞到miniroot引導系統(tǒng)里,否則在系統(tǒng)安裝時找不到硬盤(不認perc 6i的raid卡),而系統(tǒng)裝完后,還需要再安裝一下驅(qū)動(安裝方法請看一下end腳本),否則系統(tǒng)在引導自己安裝好的時候還是不認識硬盤。
jserver# cd /opt/temp
jserver# gunzip mega_sas-v00.00.01.25-2_001.tgz
jserver# tar -xf mega_sas-v00.00.01.25-2_001.tar
jserver# uncompress mega_sas.Z
jserver# unzip mega_sas
jserver# cp /opt/temp/megasas/reloc/kernel/drv/{mega_sas,mega_sas.conf} /opt/u5_minirootunpack/kernel/drv/
jserver# mkdir /opt/u5_minirootunpack/kernel/drv/amd64
jserver# cp /opt/temp/megasas/reloc/kernel/drv/amd64/mega_sas /opt/u5_minirootunpack/kernel/drv/amd64/
把驅(qū)動以下add_drv參數(shù)可從/opt/temp/megasas/install/postinstall和add_drv的man手冊中得到.下列中的-i參數(shù)后面接的是perc 6i的pci id號
jserver# add_drv -b /opt/u5_minirootunpack -n -v -m '* 0600 root sys' -i '"pci1028,15.1028.1f01" "pci1028,15.1028.1f02" "pci1028,15.1028.1f03" "pci1000,60.1028.1f0a" "pci1000,60.1028.1f0b" "pci1000,60.1028.1f0c" "pci1000,60.1028.1f0d" "pci1000,60.1028.1f11" "pci1000,411.1000.1001" "pci1000,411.1000.1002" "pci1000,411.1000.1003" "pci1000,411.1000.1004" "pci1000,411.1000.2004" "pci1000,411.1000.2005" "pci1000,411.1000.100c" "pci1000,411.1000.100d" "pci1000,411.1000.1008" "pci1000,413.1000.1005" "pci1000,409.1000.1009" "pci1000,60.1000.1006" "pci1000,60.1000.100a" "pci1000,60.1000.100e" "pci1000,60.1000.100f" "pci1000,60.1000.1010" "pci1000,60.1000.1011" "pci1000,60.1000.1012" "pci1000,60.1000.1013" "pci1000,60.1000.1014" "pci1000,60.1000.1015" "pci1000,60.1000.1016" "pci1000,60.1000.1017" "pci1000,60.1000.1018" "pci1000,60.1000.1019" "pci1000,60.1000.101a" "pci1000,60.1000.101b" "pci1000,60.1014.363" "pci1000,60.1014.364" "pci1000,60.1014.365" "pci1000,60.1014.379" "pci1000,60.1170.2f" "pci1000,60.1170.36" "pci1000,60.1043.824d" "pci1000,411.1734.1081" "pci1000,411.1734.10a3" "pci1000,411.1033.8287" "pci1000,60.1033.835a" "pci1000,60.1734.10f9" "pci1000,60.1734.1102" "pci1000,411.8086.1001" "pci1000,411.8086.1003" "pci1000,411.8086.3500" "pci1000,411.8086.3501" "pci1000,411.8086.3504" "pci1000,411.8086.3490" "pci1000,60.8086.34cc" "pci1000,60.8086.34cd" "pci1000,411.8086.3507" "pci1000,411.1054.3016" "pci1000,60.1054.3019" "pci1000,60.8086.1006" "pci1000,60.8086.100a" "pci1000,60.8086.1010" "pci1000,60.17aa.6b7c" "pci1000,60.15d9.c080" "pci1000,60.1000.1458" "pci1000,7c.1000.101c" "pci1000,7c.1014.395"' -c scsi mega_sas
jserver# cd /jumpstart/x86/boot
jserver# mv x86.miniroot x86.miniroot_orig
加載驅(qū)動后,再打開miniroot,以便系統(tǒng)在引導安裝時能認到硬盤.
jserver# /boot/solaris/bin/root_archive pack /jumpstart/x86/boot/x86.miniroot /opt/u5_minirootunpack
四、配置引導服務器:
將下列grep出來的注釋去掉(去掉#號)。
jserver# grep in.tftpd /etc/inetd.conf
# tftp dgram udp6 wait root /usr/sbin/in.tftpd in.tftpd -s /tftpboot
轉(zhuǎn)換inetd服務器為SMF
jserver# inetconv
jserver# svcs tftp/udp6
STATE STIME FMRI
online Dec_18 svc:/network/tftp/udp6:default
生成pxegrub、menu.lst及指明引導服務器
jserver# cd /jumpstart/x86/Solaris_10/Tools/
jserver# ./add_install_client -d SUNW.i86pc i86pc
五、配置NFS服務器:
以只讀權限share本服務器的/jumpstart目錄給client
jserver# echo "share -F nfs -o ro,anon=0 /jumpstart" >> /etc/dfs/dfstab
jserver# svcadm enable nfs/server
jserver# svcs nfs/server
STATE STIME FMRI online 14:52:25 svc:/network/nfs/server:default
jserver# share
- /jumpstart ro,anon=0 ""
六、配置文件服務器:
jserver# cd /jumpstart/conf
jserver# ls
begin check end rules rules.ok sysidcfg x86-class
現(xiàn)先大概介紹一下以上幾個文件的作用
rules.ok:在自定義JumpStart 安裝過程中,JumpStart 程序嘗試將要安裝的系統(tǒng)與rules.ok 文件中的規(guī)則進行匹配。JumpStart 程序從第一條規(guī)則到最后一條規(guī)則通讀這些規(guī)則。當安裝的系統(tǒng)與規(guī)則中定義的所有系統(tǒng)屬性一致時發(fā)生匹配。一旦系統(tǒng)匹配規(guī)則,JumpStart 程序即停止讀取rules.ok 文件,然后根據(jù)匹配規(guī)則的配置文件開始安裝系
統(tǒng)。必須使用 check(solaris提供:一般在ISO里的Solaris_10/Misc/jumpstart_sample目錄下)腳本。
rules:它可以根據(jù)機器的機器的網(wǎng)段,系統(tǒng)架構類型(sparc,i86pc)來定義preinstall,postinstall和class等腳本。文件內(nèi)容里的begin,x86-class以及end等文件名都無固定語法,但這些文件內(nèi)容里有很多語法。
x86-class:是rules里定義系統(tǒng)的安裝參數(shù)(分區(qū),安裝語言等等)
begin:是我在rules里指定的安裝前做的一些工作,相當于kickstart里的preinstall.
end:是我在rules里指定的安裝后(軟件安裝完及還沒reboot這段時間)做的一些工作,相當于kickstart里的preinstall.
下面將把我的配置文件發(fā)出來
jserver# cat rules
any - begin x86-class end
jserver# cat begin
#!/bin/sh
sleep 1
echo "\n\033[0;32;40mWelcome To JumpStart\033[0m\n"
echo
sleep 1
echo "lease enter your server IP ADDRESS:"
read IP
echo "lease enter your server HOSTNAME:"
read HOSTNAME
echo "$IP" >/tmp/IP
echo "$HOSTNAME">/tmp/HOSTNAME
jserver# cat x86-class
install_type initial_install
system_type standalone
partitioning explicit
filesys c0t0d0s0 20000 /
filesys c0t0d0s1 16000 swap
filesys c0t0d0s7 free /export/home
cluster SUNWCXall
geo Asia
locale en_US
locale zh_CN
end腳本需說明一下,因Solaris在系統(tǒng)安裝過程中,把/目錄指定到/a目錄下。所以腳本里涉及到的系統(tǒng)文件操作,都需要在文件或文件夾的path前加上/a
jserver# cat end
#!/bin/sh
# Author: Jackylau <squidipt@yahoo.com.cn>
# WebSite: www.opensolution.org.cn
# Desc: Postinstall
# Date: 2008.12.13
# permit root ssh
echo "wq"|ex -c "%s/PermitRootLogin no/PermitRootLogin yes/" /a/etc/ssh/sshd_config
touch /a/.NFS4inst_state.domain
# Add driver for PERC 6i
touch /a/kernel/drv/mega_sas.conf
cp /kernel/drv/mega_sas /a/kernel/drv/mega_sas
cp /kernel/drv/amd64/mega_sas /a/kernel/drv/amd64/mega_sas
add_drv -b /a -n -v -m '* 0600 root sys' -i '"pci1028,15.1028.1f01" "pci1028,15.1028.1f02" "pci1028,15.1028.1f03" "pci1000,60.1028.1f0a" "pci1000,60.1028.1f0b" "pci1000,60.1028.1f0c" "pci1000,60.1028.1f0d" "pci1000,60.1028.1f11" "pci1000,411.1000.1001" "pci1000,411.1000.1002" "pci1000,411.1000.1003" "pci1000,411.1000.1004" "pci1000,411.1000.2004" "pci1000,411.1000.2005" "pci1000,411.1000.100c" "pci1000,411.1000.100d" "pci1000,411.1000.1008" "pci1000,413.1000.1005" "pci1000,409.1000.1009" "pci1000,60.1000.1006" "pci1000,60.1000.100a" "pci1000,60.1000.100e" "pci1000,60.1000.100f" "pci1000,60.1000.1010" "pci1000,60.1000.1011" "pci1000,60.1000.1012" "pci1000,60.1000.1013" "pci1000,60.1000.1014" "pci1000,60.1000.1015" "pci1000,60.1000.1016" "pci1000,60.1000.1017" "pci1000,60.1000.1018" "pci1000,60.1000.1019" "pci1000,60.1000.101a" "pci1000,60.1000.101b" "pci1000,60.1014.363" "pci1000,60.1014.364" "pci1000,60.1014.365" "pci1000,60.1014.379" "pci1000,60.1170.2f" "pci1000,60.1170.36" "pci1000,60.1043.824d" "pci1000,411.1734.1081" "pci1000,411.1734.10a3" "pci1000,411.1033.8287" "pci1000,60.1033.835a" "pci1000,60.1734.10f9" "pci1000,60.1734.1102" "pci1000,411.8086.1001" "pci1000,411.8086.1003" "pci1000,411.8086.3500" "pci1000,411.8086.3501" "pci1000,411.8086.3504" "pci1000,411.8086.3490" "pci1000,60.8086.34cc" "pci1000,60.8086.34cd" "pci1000,411.8086.3507" "pci1000,411.1054.3016" "pci1000,60.1054.3019" "pci1000,60.8086.1006" "pci1000,60.8086.100a" "pci1000,60.8086.1010" "pci1000,60.17aa.6b7c" "pci1000,60.15d9.c080" "pci1000,60.1000.1458" "pci1000,7c.1000.101c" "pci1000,7c.1014.395"' -c scsi mega_sas
# Modify network spec
IP=`cat /tmp/IP`
HOSTNAME=`cat /tmp/HOSTNAME `
GATEWAY=`cat /tmp/IP|awk -F. '{print $1"."$2"."$3".254"}'`
echo "::1 localhost" >/a/etc/inet/hosts
echo "$IP $HOSTNAME loghost" >>/a/etc/inet/hosts
echo "$HOSTNAME" >/a/etc/nodename
echo "$HOSTNAME netmask + broadcast + group bond0 up">/a/etc/hostname.bnx0
echo "group bond0 up" >/a/etc/hostname.bnx1
echo "$GATEWAY">/etc/defaultrouter
# modify bonding
cat << EOF > /a/etc/default/mpathd
FAILURE_DETECTION_TIME=100
FAILBACK=no
TRACK_INTERFACES_ONLY_WITH_GROUPS=yes
EOF
cat << EOF > /a/etc/resolv.conf
nameserver 10.0.1.218
EOF
cat /a/etc/nsswitch.conf |sed 's/hosts: files/hosts: files dns/g'>/tmp/nsswitch.conf_$$
cat /tmp/nsswitch.conf_$$ >/a/etc/nsswitch.conf
rm -f /tmp/nsswitch.conf_$$
# modify system spec
cat << EOF >> /a/etc/system
set rlim_fd_max=262144
set rlim_fd_cur=65536
set shmsys:shminfo_shmmax=0x2000000
set semsys:seminfo_semmni=1024
EOF
cat << EOF >/a/etc/rc2.d/S12gpdb_ndd
/usr/sbin/ndd -set /dev/tcp tcp_conn_req_max_q 4096
/usr/sbin/ndd -set /dev/tcp tcp_conn_req_max_q0 4096
/usr/sbin/ndd -set /dev/tcp tcp_largest_anon_port 65535
/usr/sbin/ndd -set /dev/tcp tcp_smallest_anon_port 4096
/usr/sbin/ndd -set /dev/tcp tcp_time_wait_interval 1000
sh /opt/dw_post_install.sh
EOF
chmod 755 /a/etc/rc2.d/S12gpdb_ndd
# modify root shell to bash
echo "wq"|ex -c "%s#/sbin/sh#/usr/bin/bash#" /a/etc/passwd
# setting ENV
cat << EOF >>/a/etc/profile
EOFTH=$PATH:/usr/sfw/bin:/opt/SUNWspro/bin:/opt/csw/bin:/usr/local/bin
export PATH
alias ll="ls -al"
export PS1='[\u@\h $PWD]#'
EOF
# disable service
cat << EOF >>/a/opt/dw_post_install.sh
#!/bin/sh
svcadm disable telnet
svcadm disable cde-login
svcadm disable cde-printinfo
svcadm disable webconsole
svcadm disable finger
svcadm disable ftp
svcadm disable rlogin
echo "wq"|ex -c "/dw_post_install.sh/d" /etc/rc2.d/S12gpdb_ndd
EOF
jserver# cat sysidcfg
network_interface=PRIMARY
{protocol_ipv6=no
hostname=localhost
netmask=255.255.255.0
default_route=172.22.18.254}
security_policy=NONE
name_service=NONE
timezone=Asia/Shanghai
system_locale=en_US
terminal=vt100
pointer=MS-S
timeserver=localhost
nfs4_domain=dynamic
root_password=67jCNlUfrldoI2
jserver# cat /tftpboot/boot/grub/menu.lst
default=0
timeout=3
title Solaris_10 JumpStart
#下面一行是聲明系統(tǒng)在引導時的參數(shù)。請注意- install dhcp要加上的,
kernel /I86PC.Solaris_10-1/multiboot kernel/unix - nowin - install dhcp -B install_config=172.16.134.83:/jumpstart/config,sysid_config=172.16.134.83:/jumpstart/config,install_media=172.16.134.83:/jumpstart/x86,install_boot=172.16.134.83:/jumpstart/x86/boot
module /I86PC.Solaris_10-1/x86.miniroot
七、配置DHCP服務器:
在dhcpd.conf最后面添加了一條
allow booting;
allow bootp;
include "/opt/chroot/etc/jumpstart_dhcpd.conf";
jserver# cat /opt/chroot/etc/jumpstart_dhcpd.conf
group {
next-server 172.16.134.83; #聲明客戶端引導初始化文件的服務器IP(因為我的引導服務器為jserver)
filename "/pxegrub.I86PC.Solaris_10-1"; #聲明客戶端加載的引導初始化文件(其值類似于kickstart里的pxelinux.0)
use-host-decl-names on;
option vendor-encapsulated-options 09:0f:80:00:0c:4e:65:74:77:6f:72:6b:20:62:6f:6f:74:0a:07:00:50:72:6f:6d:70:74:06:01:02:08:03:80:00:00:47:04:80:00:00:00:ff; #如果不加這個,可能會出現(xiàn)tftp miniroot出錯。
subnet 172.22.18.0 netmask 255.255.255.0{
range 172.22.18.220 172.22.18.239;
option routers 172.22.18.254;
option broadcast-address 172.22.18.255;
option domain-name-servers 172.16.20.220;
}
}
八、Tips:
為了實現(xiàn)操作系統(tǒng)安裝完畢后不自動重啟,可以在postinstall腳本里加上
touch /a/noautoshutdown(僅適合sparc平臺) |
|