| | h1. SLES 10 Automated Network Install How-To, using IVM |
| | |
| | This Wiki topic specifically addresses SLES 10 network installation in a Virtual I/O server (VIOS) environment, however the steps can also apply to a non-VIO environment. The motivation behind the creation of this document was that SLES 10 network install on System p is not currently well documented or in a single place. |
| | |
| | Please note that network installation for SLES 10 has changed from SLES 9. The changes will be noted as they come up. |
| | |
| | This document was written using an OP720 and IVM (VIOS 1.3.0.0-FP-8.0). The install server was an IVM LPAR running RHEL 4.3 with a full install. It is assumed the reader has set up a basic IVM configuration that includes an external VLAN and has defined at least 2 LPARs. If further information on IVM setup is required, please refer to [http://www-128.ibm.com/developerworks/linux/library/l-pow-ivm]. |
| | |
| | The following topics will be covered |
| | |
| | * 1.0 Integrated Virtualization Manager (IVM) network installation considerations. |
| | ** 1.1 Creating an internal VLAN for install purposes. |
| | * 2.0 Setting up a network install server |
| | ** 2.1 Creating the SLES 10 install tree |
| | ** 2.2 Setting up the TFTP server |
| | ** 2.3 Using the install kernel |
| | ** 2.4 Setting up the DHCP server |
| | ** 2.5 Setting up NFS |
| | ** 2.6 Creating a working autoinstall file |
| | * 3.0 Starting a SLES 10 network install |
| | |
| | |
| | h2. 1.0 Integrated Virtualization Manager (IVM) network install considerations |
| | In this example there are 2 virtual Ethernet adapters, #1 is bridged and tied to a physical Ethernet port and . Virtual Ethernet adapter #2 will be used as an inter-LPAR VLAN and is not bridged. The network installs will be done using using adapter #2. |
| | |
| | h4. 1.1 Creating an internal VLAN for install purposes. |
| | Creating an internal VLAN using IVM is quite straightforward. From the *View/Modify Partitions* view, select an LPAR by clicking on its name, click on the |
| | *Virtual Ethernet* tab and select VLAN 2 for adapter 2. Repeat this for each desired LPAR. (see below) |
| | |
| | !image003.png! |
| | |
| | Restart the partition and it will come up with a new ethernet adapter that has to be configured. For our purposes create the file /etc/sysconfig/network-scripts/ifcfg-eth1 with the following contents.. |
| | {noformat} |
| | ONBOOT=yes |
| | GATEWAY= |
| | TYPE=Ethernet |
| | DEVICE=eth1 |
| | BOOTPROTO=none |
| | NETMASK=255.255.255.0 |
| | IPADDR=10.1.1.1 |
| | {noformat} |
| | |
| | Next, restart network services and verify the configuration. |
| | |
| | {noformat} |
| | ]# service network restart |
| | Shutting down interface eth0: [ OK ] |
| | Shutting down interface eth1: [ OK ] |
| | Shutting down loopback interface: [ OK ] |
| | Setting network parameters: [ OK ] |
| | Bringing up loopback interface: [ OK ] |
| | Bringing up interface eth0: [ OK ] |
| | Bringing up interface eth1: [ OK ] |
| | [root@localhost network-scripts]# ifconfig |
| | eth0 Link encap:Ethernet HWaddr A2:82:80:00:20:04 |
| | inet addr:192.168.1.105 Bcast:192.168.1.255 Mask:255.255.255.0 |
| | inet6 addr: fe80::a082:80ff:fe00:2004/64 Scope:Link |
| | UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 |
| | RX packets:741 errors:0 dropped:0 overruns:0 frame:0 |
| | TX packets:448 errors:0 dropped:0 overruns:0 carrier:0 |
| | collisions:0 txqueuelen:1000 |
| | RX bytes:58121 (56.7 KiB) TX bytes:54305 (53.0 KiB) |
| | Interrupt:186 |
| | |
| | geth1 Link encap:Ethernet HWaddr A2:82:80:00:20:05 |
| | inet addr:10.1.1.1 Bcast:10.1.1.255 Mask:255.255.255.0 |
| | inet6 addr: fe80::a082:80ff:fe00:2005/64 Scope:Link |
| | UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 |
| | RX packets:17057 errors:0 dropped:0 overruns:0 frame:0 |
| | TX packets:17076 errors:0 dropped:0 overruns:0 carrier:0 |
| | collisions:0 txqueuelen:1000 |
| | RX bytes:1023382 (999.3 KiB) TX bytes:9504887 (9.0 MiB) |
| | Interrupt:187 |
| | |
| | lo Link encap:Local Loopback |
| | inet addr:127.0.0.1 Mask:255.0.0.0 |
| | inet6 addr: ::1/128 Scope:Host |
| | UP LOOPBACK RUNNING MTU:16436 Metric:1 |
| | RX packets:74 errors:0 dropped:0 overruns:0 frame:0 |
| | TX packets:74 errors:0 dropped:0 overruns:0 carrier:0 |
| | collisions:0 txqueuelen:0 |
| | RX bytes:5180 (5.0 KiB) TX bytes:5180 (5.0 KiB) |
| | {noformat} |
| | |
| | |
| | |
| | h2. 2.0 Setting up the install server |
| | In this example the install server, or LPAR, has a clean full RedHat 4.4 install. As such, the Linux commands used are mostly RedHat specific. Also, eth1 is set up on the 10.1.1.0 network with IP address 10.1.1.1/255.255.255.0. |
| | |
| | h4. 2.1 Creating a SLES 10 Install Tree |
| | The install tree is a directory with the merged contents of all 4 SLES 10 CD's. Create the directory /install/sles10. Then, for each CD run the following commands, replacing duplicate files |
| | |
| | {noformat} |
| | mount /dev/cdrom /mnt |
| | cp -a /mnt/* /install/sles10 |
| | umount /mnt |
| | {noformat} |
| | |
| | {note:title=NOTE - The SLES 10 install tree differs from SLES 9} |
| | {note} |
| | |
| | The final install tree should look appear similar to below. The autoinst-yast XML file will be created in a later step and is required for automated installs |
| | |
| | {noformat} |
| | [root@localhost ~]# ls -l /install/sles10/ |
| | total 20500 |
| | -r--r--r-- 1 root root 4809910 Jul 6 01:31 ARCHIVES.gz |
| | -rwxrwxrwx 1 root root 3828 Nov 16 04:19 autoinst-yast |
| | dr-xr-xr-x 3 root root 4096 Jul 6 01:33 boot |
| | -r--r--r-- 1 root root 4718302 Jul 6 01:24 ChangeLog |
| | -r--r--r-- 1 root root 614 Jul 6 01:21 content |
| | -r--r--r-- 1 root root 189 Jul 6 01:31 content.asc |
| | -r--r--r-- 1 root root 2173 Jul 5 19:36 content.key |
| | -r--r--r-- 1 root root 33577 Jun 18 00:21 control.xml |
| | -r--r--r-- 1 root root 17992 Jul 5 19:36 COPYING |
| | -r--r--r-- 1 root root 25733 Jul 5 19:36 COPYING.de |
| | -r--r--r-- 1 root root 1455 Jul 5 19:36 COPYRIGHT |
| | -r--r--r-- 1 root root 1620 Jul 5 19:36 COPYRIGHT.de |
| | -r--r--r-- 1 root root 445 Jul 6 01:33 directory.yast |
| | dr-xr-xr-x 3 root root 4096 Jul 6 01:21 docu |
| | dr-xr-xr-x 5 root root 4096 Jul 6 01:21 dosutils |
| | -r--r--r-- 1 root root 877 Jul 5 19:36 gpg-pubkey-0dfb3188-41ed929b.asc |
| | -r--r--r-- 1 root root 613 Jul 5 19:36 gpg-pubkey-307e3d54-44201d5d.asc |
| | -r--r--r-- 1 root root 1694 Jul 5 19:36 gpg-pubkey-3d25d3d9-36e12d04.asc |
| | -r--r--r-- 1 root root 1036 Jul 5 19:36 gpg-pubkey-7e2e3b05-44748aba.asc |
| | -r--r--r-- 1 root root 2173 Jul 5 19:36 gpg-pubkey-9c800aca-40d8063e.asc |
| | -r--r--r-- 1 root root 1803 Jul 5 19:36 gpg-pubkey-a1912208-446a0899.asc |
| | -r--r--r-- 1 root root 22110 Jul 6 01:31 INDEX.gz |
| | -r--r--r-- 1 root root 10969088 Jul 5 22:46 ISERIES64 |
| | -r--r--r-- 1 root root 39374 Jul 6 01:31 ls-lR.gz |
| | dr-xr-xr-x 2 root root 4096 Jul 6 01:33 media.1 |
| | dr-xr-xr-x 2 root root 4096 Jul 6 01:25 media.2 |
| | dr-xr-xr-x 2 root root 4096 Jul 6 01:25 media.3 |
| | dr-xr-xr-x 2 root root 4096 Jul 6 01:25 media.4 |
| | -r--r--r-- 1 root root 16106 Jul 5 19:36 NEWS |
| | dr-xr-xr-x 2 root root 4096 Jul 6 01:20 ppc |
| | -r--r--r-- 1 root root 5604 Jul 5 19:36 pubring.gpg |
| | -r--r--r-- 1 root root 1699 Jul 5 16:24 README |
| | -r--r--r-- 1 root root 583 Jul 5 19:36 README.BETA.mac.txt |
| | -r--r--r-- 1 root root 1699 Jul 5 19:36 README.mac.txt |
| | dr-xr-xr-x 6 root root 4096 Jul 6 01:21 suse |
| | dr-xr-xr-x 2 root root 4096 Jul 6 01:20 suseboot |
| | -r--r--r-- 1 root root 7205 Jul 6 01:34 TRANS.TBL |
| | dr-xr-xr-x 3 root root 4096 Jul 6 01:21 unsorted |
| | {noformat} |
| | |
| | |
| | h3. 2.2 Setting up the TFTP server |
| | Install the tftp-server RPM if it was not installed by default. Create /tftpboot if it does not exist. |
| | |
| | Edit /etc/xinetd.d/tftp and change disabled = yes to "no" as follows |
| | {noformat} |
| | # 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 |
| | disable = no |
| | per_source = 11 |
| | cps = 100 2 |
| | flags = IPv4 |
| | } |
| | {noformat} |
| | |
| | |
| | Next, restart the xinetd service |
| | |
| | {noformat} |
| | [root@localhost ~]# service xinetd restart |
| | Stopping xinetd: [ OK ] |
| | Starting xinetd: [ OK ] |
| | {noformat} |
| | |
| | h3. 2.3 Using the SLES10 install kernel |
| | There are basically 2 ways to utilize the install kernel. The first is to use the default install kernel and do a manual network install. The second involves modifying the install kernel and results in an automated network install. |
| | |
| | *2.3.1 Using the default install kernel* |
| | Get the install kernel (inst64) from the /install/sles10/suseboot directory and copy it into /tftproot |
| | {noformat} |
| | cp /install/sles10/suseboot/inst64 /tftproot/install |
| | {noformat} |
| | |
| | |
| | *2.3.2 Modifying the default install kernel* |
| | Get the mkzimage_cmdline and mkzimage files. In SLES 9, these files were on the install media. For SLES 10 they are built into the *lilo* RPM. Unfortunately, the best way to get these files and work with them is to use an installed SLES 10 machine. The most straightforward way is to build a SLES 10 LPAR manually and follow the 3 instructions before automating later installs. |
| | |
| | {note:title=NOTE - The location of the mkzimage and mkzimage_cmdline commands has changed. The syntax of mkzimage_cmdline has also changed} |
| | {note} |
| | |
| | First, get the install kernel inst64 from the /install/sles10/suseboot directory. |
| | {noformat} |
| | cp /install/sles10/suseboot/inst64 /root/inst64.sles10.vio |
| | {noformat} |
| | |
| | Next, use mkzimage_cmdline to embed command line commands to the install kernel. |
| | |
| | {noformat} |
| | cd /root |
| | mkzimage_cmdline -a 1 -s "autoyast=nfs://10.1.1.1/install/sles10/autoinst-yast install=nfs://10.1.1.1/install/sles10/ netdevice=eth1" ./inst64.SLES10.vio |
| | {noformat} |
| | |
| | Finally, copy the modified inst64 to tftpboot |
| | {noformat} |
| | cp /root/inst64.SLES10.vio /tftproot/install |
| | {noformat} |
| | |
| | h3. 2.4 Creating a DHCP server. |
| | First, create a DHCP server config file to serve only the 10.1.1.0 network. Create/edit /etc/dhcpd.conf file. Use the following sample contents... |
| | |
| | {noformat} |
| | ddns-update-style none; |
| | shared-network VIOS { |
| | option routers 10.1.1.1; |
| | subnet 10.1.1.0 netmask 255.255.255.0 { |
| | range dynamic-bootp 10.1.1.2 10.1.1.100; |
| | option broadcast-address 10.1.1.255; |
| | default-lease-time -1; |
| | next-server 10.1.1.1; |
| | filename "install"; |
| | } |
| | } |
| | {noformat} |
| | |
| | Next, start dhcpd daemon and make the service permanent |
| | {noformat} |
| | [root@localhost ~]# service dhcpd start |
| | Starting dhcpd: [ OK ] |
| | [root@localhost ~]# chkconfig --level 345 dhcpd on |
| | [root@localhost ~]# chkconfig --list dhcpd |
| | dhcpd 0:off 1:off 2:off 3:on 4:on 5:on 6:off |
| | {noformat} |
| | |
| | |
| | h3. 2.5 Setting up NFS |
| | First, edit /etc/exports and add the following line |
| | {noformat} |
| | /install *(ro,async,no_root_squash) |
| | {noformat} |
| | |
| | Next, restart nfs and verify /install is shared |
| | {noformat} |
| | [root@localhost ~]# service nfs restart |
| | Shutting down NFS mountd: [ OK ] |
| | Shutting down NFS daemon: [ OK ] |
| | Shutting down NFS quotas: [ OK ] |
| | Shutting down NFS services: [ OK ] |
| | Starting NFS services: [ OK ] |
| | Starting NFS quotas: [ OK ] |
| | Starting NFS daemon: [ OK ] |
| | Starting NFS mountd: [ OK ] |
| | [root@localhost ~]# exportfs |
| | /install <world> |
| | {noformat} |
| | |
| | |
| | h3. 2.6 Creating a working autoinstall file |
| | Add a working autoinst.yast file to the install tree (/install/sles10). This file can be modified based on specific requirements. In my experiences an autoinst file that worked on SLES 9 will not work with a SLES 10 network install |
| | |
| | {note:title=NOTE - Valid and required SLES 10 auto install XML elements differ from SLES 9} |
| | {note} |
| | |
| | Below is a sample XML file that works... |
| | {noformat} |
| | <?xml version="1.0"?> |
| | <!DOCTYPE profile SYSTEM "/usr/share/autoinstall/dtd/profile.dtd"> |
| | <profile xmlns="http://www.suse.com/1.0/yast2ns" xmlns:config="http://www.suse.com/1.0/configns"> |
| | <general> |
| | <signature-handling> |
| | <accept_unsigned_file config:type="boolean">true</accept_unsigned_file> |
| | <accept_file_without_checksum config:type="boolean">true</accept_file_without_checksum> |
| | <accept_verification_failed config:type="boolean">true</accept_verification_failed> |
| | <accept_unknown_gpg_key config:type="boolean">true</accept_unknown_gpg_key> |
| | <import_gpg_key config:type="boolean">true</import_gpg_key> |
| | </signature-handling> |
| | <mode> |
| | <confirm config:type="boolean">false</confirm> |
| | </mode> |
| | </general> |
| | <mouse> |
| | <id>none</id> |
| | </mouse> |
| | <keyboard> |
| | <keymap>english-us</keymap> |
| | </keyboard> |
| | <language>en_US</language> |
| | <partitioning config:type="list"> |
| | <drive> |
| | <initialize config:type="boolean">true</initialize> |
| | <device>/dev/sda</device> |
| | <partitions config:type="list"> |
| | <partition> |
| | <format config:type="boolean">false</format> |
| | <partition_id config:type="integer">65</partition_id> |
| | <partition_nr config:type="integer">1</partition_nr> |
| | <partition_type>primary</partition_type> |
| | <size>270336</size> |
| | </partition> |
| | <partition> |
| | <filesystem config:type="symbol">swap</filesystem> |
| | <format config:type="boolean">true</format> |
| | <mount>swap</mount> |
| | <partition_id config:type="integer">130</partition_id> |
| | <partition_nr config:type="integer">2</partition_nr> |
| | <partition_type>primary</partition_type> |
| | <size>2155023360</size> |
| | </partition> |
| | <partition> |
| | <filesystem config:type="symbol">reiser</filesystem> |
| | <format config:type="boolean">true</format> |
| | <mount>/</mount> |
| | <partition_id config:type="integer">131</partition_id> |
| | <partition_nr config:type="integer">3</partition_nr> |
| | <partition_type>primary</partition_type> |
| | <size>max</size> |
| | </partition> |
| | </partitions> |
| | <use>all</use> |
| | </drive> |
| | </partitioning> |
| | <report> |
| | <errors> |
| | <log config:type="boolean">true</log> |
| | <show config:type="boolean">true</show> |
| | <timeout config:type="integer">0</timeout> |
| | </errors> |
| | <messages> |
| | <log config:type="boolean">true</log> |
| | <show config:type="boolean">true</show> |
| | <timeout config:type="integer">0</timeout> |
| | </messages> |
| | <warnings> |
| | <log config:type="boolean">true</log> |
| | <show config:type="boolean">true</show> |
| | <timeout config:type="integer">0</timeout> |
| | </warnings> |
| | <yesno_messages> |
| | <log config:type="boolean">true</log> |
| | <show config:type="boolean">true</show> |
| | <timeout config:type="integer">0</timeout> |
| | </yesno_messages> |
| | </report> |
| | <users config:type="list"> |
| | <user> |
| | <username>root</username> |
| | <user_password>passw0rd</user_password> |
| | <encrypted config:type="boolean">false</encrypted> |
| | <forename/> |
| | <surname/> |
| | </user> |
| | </users> |
| | |
| | <software> |
| | <packages config:type="list"> |
| | <package>powerpc-utils</package> |
| | <package>iprutils</package> |
| | <package>susehelp_en</package> |
| | </packages> |
| | <patterns config:type="list"> |
| | <pattern>base-64bit</pattern> |
| | <pattern>x11</pattern> |
| | <pattern>file_server</pattern> |
| | <pattern>64bit</pattern> |
| | <pattern>x11-64bit</pattern> |
| | <pattern>apparmor</pattern> |
| | <pattern>ha_sles-64bit</pattern> |
| | </patterns> |
| | </software> |
| | </profile> |
| | {noformat} |
| | |
| | h3. 3.0 Starting a SLES 10 network install |
| | To start an automated install, boot to SMS and choose to boot from the second virtual Ethernet adapter |
| | |
| | {noformat} |
| | Version SF240_219 |
| | SMS 1.6 (c) Copyright IBM Corp. 2000,2005 All rights reserved. |
| | ------------------------------------------------------------------------------- |
| | Select Device |
| | Device Current Device |
| | Number Position Name |
| | 1. 3 Virtual Ethernet |
| | ( loc=U9124.720.10031EA-V5-C4-T1 ) |
| | 2. - Virtual Ethernet |
| | ( loc=U9124.720.10031EA-V5-C5-T1 ) |
| | 3. 1 SCSI 38654 MB Harddisk, part=1 () |
| | ( loc=U9124.720.10031EA-V5-C2-T1-W8100000000000000-L |
| | 4. 2 SCSI CD-ROM |
| | ( loc=U9124.720.10031EA-V5-C2-T1-W8200000000000000-L0 ) |
| | ------------------------------------------------------------------------------- |
| | Navigation keys: |
| | M = return to Main Menu |
| | ESC key = return to previous screen X = eXit System Management Services |
| | ------------------------------------------------------------------------------- |
| | Type menu item number and press Enter or select Navigation key: |
| | {noformat} |
| | |
| | As the system boots the install kernel, it will pause for 10 second to give the user an opportunity to modify the embedded parameters that are passed, these should look familiar |
| | {noformat} |
| | BOOTP R = 1 BOOTP S = 2 |
| | FILE: install |
| | FINAL Packet Count = 17029 |
| | FINAL File Size = 8718463 bytes. |
| | load-base=0x4000 |
| | real-base=0xc00000 |
| | |
| | Elapsed time since release of system processors: 258 mins 47 secs |
| | |
| | SuSE Linux zImage starting: loaded at 0x00010000-0x0085bcbc (0x0/0x0/0x00c39a48; sp: 0x0189ffd0) |
| | uncompressing ELF header done. (0x00000100 bytes) |
| | Allocated 0x009f4178 bytes for kernel @ 0x02000000 |
| | Allocated 0x00608d85 bytes for initrd @ 0x029f5000 |
| | uncompressing kernel done. (0x00638538 bytes) |
| | edit kernel cmdline within 10 seconds and press RETURN: |
| | autoyast=nfs://10.1.1.1/install/sles10/autoinst-yast install=nfs://10.1.1.1/install/sles10/ netdevice=eth1 |
| | {noformat} |
| | |
| | |
| | The SLES 10 install should take around 15 minutes. After the install completes the LPAR will reboot and some post install configuration will take place before a login prompt appears. The root password in this case will be "passw0rd". |
| | |
| | Good Luck :D |