2017-09-09

SL7をPXEなど使ってネットワークインストールする

あるPCにSL7をインストールしたいが, USBメモリやCDRがなかったので, 別のマシンをネットワークブートのサーバに設定してインストールを行った. そのときの手順をメモ.

今回のサーバは, SL6.7.

TFTPとDHCPの設定

まずは,tftp, dhcpd, iptablesの設定をする. なお, dhcpd自体は既に設定済みで, PXEの設定を追加するだけ.

  1. tftp-serverをインストールする.
    sudo yum install tftp-server xinetd
  2. tftpの設定を行う.
    sudoedit /etc/xinetd.d/tftp
    以下のように太字の2箇所を設定する. Disableをyesからnoに変更する. ログを見やすくするため, server_argsに-vを追加する.
    service tftp
    {
            socket_type             = dgram
            protocol                = udp
            wait                    = yes
            user                    = root
            server                  = /usr/sbin/in.tftpd
            server_args             = -v -s /var/lib/tftpboot
            disable                 = no
            per_source              = 11
            cps                     = 100 2
            flags                   = IPv4
    }
  3. Xinetdの再起動.
    sudo service xinetd restart
  4. Firewallの設定.
    sudoedit /etc/sysconfig/iptables
    以下の1行を追加する. PXEではUDPでリクエストが来るので, TCPは開放せず, UDPを開放する.
    -A INPUT -p udp -m udp --dport tftp -j ACCEPT
    設定が済んだら, iptablesを再起動して設定を読み込む.
    sudo service iptables restart
  5. DHCPDに設定を追加する.
    sudoedit /etc/dhcp/dhcpd.conf
    2個の設定 (next-serverとfilename) を追加する. Next-serverで指定するのがTFTPが動いているサーバのアドレス. Filenameで指定するのがPXEで最初に読み込むファイル. (後で取得方法を説明)
    authoritative;
    default-lease-time 3600;
    max-lease-time 14400;
    log-facility local7;
    subnet 192.168.xx.0 netmask 255.255.255.0 {
            range 192.168.xx.y1 192.168.xx.y2;
            option domain-name-servers 8.8.4.4,8.8.8.8;
            option routers 192.168.xx.1;
    
            # for PXE boot
            next-server 192.168.xx.yy;
            filename "pxelinux/pxelinux.0";
    }
    設定が済んだら, dhcpdを再起動する.
    sudo service dhcpd restart

PXELinuxの準備

SL7のSyslinuxというパッケージに含まれているので, ここから必要なファイルを取り出す. その後, 設定ファイルを記載する.
  1. 適当なミラーサーバから syslinux-4.05-13.el7.x86_64.rpm をダウンロードする.
    cd /tmp
    wget .../syslinux-4.05-13.el7.x86_64.rpm
  2. RPM仲のファイルを展開する.
    mkdir /tmp/syslinux
    rpm2cpio syslinux-4.05-13.el7.x86_64.rpm | cpio -dimv
    
  3. 必要なファイルをtftpbootの下にコピーする. なお, *.c32すべて必要なわけではなく, vesamenu.c32 だけあれば良い.
    mkdir /var/lib/tftpboot/pxelinux
    cp /tmp/syslinux/usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/pxelinux/
    cp /tmp/syslinux/usr/share/syslinux/*.c32 /var/lib/tftpboot/pxelinux/
    
  4. Pxelinuxの設定ファイルを用意する.
    mkdir /var/lib/tftpboot/pxelinux/pxelinux.cfg/
    vim /var/lib/tftpboot/pxelinux/pxelinux.cfg/default
    以下のように記載する.
    default vesamenu.c32
    prompt 1
    timeout 600
    display boot.msg
    
    label Scientific Linux 7.3 nouveau=0
            menu label Install SL 7.3 without ^Nouveau
            menu default
            kernel ../sl73/images/pxeboot/vmlinuz
            append initrd=../sl73/images/pxeboot/initrd.img nouveau.modeset=0 inst.repo=ftp://.../scientific/7.3/x86_64/os
    label local
            menu label Boot from ^local drive
            localboot 0xffff
    label memtest86
            menu label ^Memory test
            kernel memtest
            append -
    Kernelとinitrdは次の手順で準備する.
    inst.repoの設定には, 適当な ftp://ftp.scientificlinux.org/linux/scientific/7.3/x86_64/os/ のミラーを指定すればよい.

Kernelとinitrdの準備

  1. まずは展開先のディレクトリを作成する.
    mkdir -p /var/lib/tftpboot/sl73/images/pxeboot
  2. 2個のファイルをダウンロードする.
    cd /var/lib/tftpboot/sl73/images/pxeboot
    wget ftp://.../scientific/7.3/x86_64/os/images/pxeboot/vmlinuz
    wget ftp://.../scientific/7.3/x86_64/os/images/pxeboot/initrd.img
    

インストールを開始する

インストール先のPCの電源をいれ, ネットワークから起動する.

以下のサイトを参考にした.

  • BIOS ベースのクライアント向けに PXE サーバーを設定する

    SL 7 Rollingの追加設定

    SL 7 RollingのインストーラーをPXEで起動するため, 設定を追加した.

    pxelinux/pxelinux.cfg/default に以下のエントリーを追記

    label Scientific Linux Rolling nouveau=0
            menu label Install SL ^Rolling without Nouveau
            menu default
            kernel ../sl7-rolling/images/pxeboot/vmlinuz
            append initrd=../sl7-rolling/images/pxeboot/initrd.img nouveau.modeset=0 inst.repo=ftp://ftp.jaist.ac.jp/pub/Linux/scientific/7rolling/x86_64/os/
    
    Kernelとinitrdを準備
    $ mkdir sl7-rolling/
    $ cd sl7-rolling/
    $ wget -r -l 1 ftp://ftp.jaist.ac.jp/pub/Linux/scientific/7rolling/x86_64/os/images/ 
    $ wget -r -l 1 ftp://ftp.jaist.ac.jp/pub/Linux/scientific/7rolling/x86_64/os/images/pxeboot/  
    $ mv ./ftp.jaist.ac.jp/pub/Linux/scientific/7rolling/x86_64/os/images/* ./ 
    
  • 0 件のコメント:

    コメントを投稿