Macとかの雑記帳

USB起動できない上に、CDやDVDといった光学ディスクが壊れ、インストールメディアから直接OSをインストールできない古いPCにubuntuを入れる方法です。MacとUbuntuでPXEサーバーを構築して入れる方法と、私が実施している「ネットブートもできない」PCに入れる方法を紹介します。

PXE(Preboot eXecution Environment)とは、サーバーにあるインストーラー等のOSイメージを、ネットワーク越しにクライアントPC上で起動する方法で、ネットに繋がっていれば内蔵HDDが無くてもPCを使うことができます。



このPXEサーバーをVMwareやVirutualBoxといった仮想マシン上に一つ構築しておけば、必要なときだけ起動して再インストールやリカバリをするツールとして使えるので便利ではないかと思います。

  1. NetBootイメージを使ってPXEサーバーを構築
  2. Macで構築する場合

    Ubuntuで構築する場合

  3. LiveCDを使ってPXEサーバーを構築
  4. ネットブートもできない場合

1はネットブート用のイメージを使う方法です。Macとubuntuのどちらでも構築できますが、サーバー版と同様のキャラクタベースのインストーラーです。


2は通常のインストールに使うLiveCDを使うので、GUIベースのインストーラーになります。インストールだけでなくLive起動もできるので、内蔵HDDが無いPCをチェックする場合に使えるかもしれません。

これら2つの方法ではDHCPサーバーを導入するので、ルーター等のDHCP機能を使用している場合は既存のDHCPをOFFにしてください。OFFにせずにサーバーを構築してしまうと、LAN内でDHCPによる自動割当てを設定している全てのネット接続機器が通信できなくなる場合があります。

仮想マシン上に構築する場合は、ネットワーク設定を「ブリッジ接続」にしてください。

サーバーとして使うPCはIPアドレスを固定にしてあることが前提です。


3はネット越しのインストールもできない場合にインストールする方法です。内蔵HDDを外し、別PCのVirtualBoxを使って無理矢理入れます。



検証環境

iMac mid 2007:OSX 10.6.7

Mebius PC-CL1-5CD:ubuntu 10.04 Desktop

VirtualBox4.0.8



NetBootイメージを使ってPXEサーバーを構築する方法


Mac、ubuntu共に、下記サイトのNetBoot用のイメージと「tftp」「dhcp」を導入し構築します。

Ubuntu Netboot Images


NetBoot用のイメージを入手するには、バージョン → i386と進み、「netboot.tar.gz」をダウンロードします。

clam.png




MacでPXEサーバーを構築する

Macはデフォルトでtftpが入っているので、dhcpのみインストールします。インストールにはMacPortsを使うので、XcodeとMacPortsをあらかじめ入れておいてください。

  • dhcpd.conf編集
  • # dhcpをインストール
    $ sudo port install dhcp


    # dhcpの設定ファイルを作成、編集
    $ sudo nano /opt/local/etc/dhcp/dhcpd.conf

    # 開いたファイルに以下を記入
    default-lease-time 600;
    max-lease-time 7200;
    log-facility local7;
    ddns-update-style none;

    subnet 192.168.1.0 netmask 255.255.255.0 {
    option routers 192.168.1.1;
    option subnet-mask 255.255.255.0;
    option domain-name-servers 192.168.1.1, 8.8.8.8;
    range dynamic-bootp 192.168.1.30 192.168.1.40;
    filename "/pxelinux.0";
    }
    ################################################################
    #subnet:192.168.1~で始まるネットワークにアドレスを割り当てる場合の設定。
    #option routers:ルーターのアドレス。
    #option domain-name-servers:DNSサーバー。ルーターとgoogleのDNSを設定してます。
    #range dynamic-bootp:クライアントに割り当てるIPアドレス。上の場合、
    # 192.168.1.30~40のどれかが割り当てられます。
    ################################################################



    # tftpとdhcpを起動
    $ sudo launchctl load -w /System/Library/LaunchDaemons/tftp.plist
    $ sudo launchctl load -w /Library/LaunchDaemons/org.macports.dhcpd.plist

    # 止める場合は、下記を実行
    $ sudo launchctl unload /System/Library/LaunchDaemons/tftp.plist
    $ sudo launchctl unload /Library/LaunchDaemons/org.macports.dhcpd.plist

    設定が終了したら、netboot.tar.gz/private/tftpbootフォルダ内に展開します。

    clam.png


    これで設定は終了です。


    終わったら、クライアントPCの起動順序を変更して起動します。




    UbuntuでPXEサーバーを構築する

    Macの場合と違いtftpはデフォルトでは入っていないので、「tftpd-hpa」と「dhcp3-server」の2つを導入します。

  • tftpd-hpaとdhcp3-serverの導入
  • #「tftpd-hpa」「dhcp3-server」の2つをインストール
    $ sudo aptitude install tftpd-hpa dhcp3-server


    #dhcp3の設定
    $ sudo nano /etc/dhcp3/dhcpd.conf

    # 開いたファイルの一番下に下記を追加
    subnet 192.168.1.0 netmask 255.255.255.0 {
    option routers 192.168.1.1;
    option subnet-mask 255.255.255.0;
    option domain-name-servers 192.168.1.1, 8.8.8.8;
    range dynamic-bootp 192.168.1.30 192.168.1.40;
    filename "/pxelinux.0";
    }
    ################################################################
    #subnet:192.168.1~で始まるネットワークにアドレスを割り当てる場合の設定。
    #option routers:ルーターのアドレス。
    #option domain-name-servers:DNSサーバー。ルーターとgoogleのDNSを設定してます。
    #range dynamic-bootp:クライアントに割り当てるIPアドレス。上の場合、
    # 192.168.1.30~40のどれかが割り当てられます。
    ################################################################



    # 設定を反映させる
    $ sudo service tftpd-hpa restart
    $ sudo /etc/init.d/dhcp3-server restart


    設定が終了したら、netboot.tar.gz/var/lib/tftpboot/ubuntuの中に展開します。

    clam.png


    これでサーバーの設定は終了です。




    クライアントPCを起動

    PXEサーバーの設定が終わったら、クライアントPCのBIOSで起動順序を変更し、ネットワーク起動を有効にしてから起動します。


    ネットワーク起動を有効すると下の様な画面で起動します。

    clam.png



    ネットブートに成功するとインストーラーのメニューが表示されます。

    clam.png

    ▲旧バージョンの様な外観ですが10.04です。



    NetBootイメージでインストールする場合は、サーバー版と同様のキャラクタベースのインストーラーになります。

    clam.png

    途中でどのパッケージを導入するか選びます。この時に「印刷サーバー」と「Ubuntu desktop」にチェックを入れればデスクトップ版がインストールされます。




    LiveCDを使ってPXEサーバーを構築


    通常のインストールに使うLiveCDのイメージを使用してネット越しにインストールする方法です。The Linux Kernel Archivesのsyslinuxと「dnsmasq」「nfs-kernel-server」を導入して構築します。

    Index of /pub/linux/utils/boot/syslinux


    まず、以下の様にネットブート用のPXEディレクトリを作成します。
    /pxe
    /pxe/images
    /pxe/images/ubuntu
    /pxe/pxelinux.cfg
  • /pxe
  • $ sudo -s
    $ mkdir -p /pxe/images/ubuntu /pxe/pxelinux.cfg

    次に、ダウンロードしたsyslinuxの中にある下記2つのファイルを、作成した「/pxe」ディレクトリにコピーします。
    syslinux/core/pxelinux.0
    syslinux/com32/menu/menu.c32

    clam.png



    作成した/pxe/pxelinux.cfg/フォルダ内に「default」というファイルを作成します。
  • /pxe/pxelinux.cfg/default
  • # defaultファイル作成
    $ sudo nano /pxe/pxelinux.cfg/default

    # 下記を記入
    DEFAULT menu.c32
    PROMPT 0
    NOESCAPE 0
    ALLOWOPTIONS 0
    TIMEOUT 600
    MENU TITLE PXE Boot Menu

    LABEL Ubuntu Lucid Live Desktop
    kernel images/ubuntu/casper/vmlinuz
    append boot=casper netboot=nfs nfsroot=192.168.1.12:/pxe/images/ubuntu initrd=images/ubuntu/casper/initrd.lz -- splashd

    LABEL Ubuntu Lucid Live Install
    kernel images/ubuntu/casper/vmlinuz
    append boot=casper netboot=nfs nfsroot=192.168.1.12:/pxe/images/ubuntu initrd=images/ubuntu/casper/initrd.lz -- splash only-ubiquity

    192.168.1.12の部分はPXEサーバーのIPアドレスを入れます。

    10.04~11.04ではinitrdファイルの拡張子はlzですが、9.04だとgzだったりと、バージョンによって拡張子が違うようなので確認が必要です。



    続いて、Ubuntu Desktop 日本語 Remix CDのダウンロードよりubuntuのLiveCDをダウンロードし、一度マウントして中身を/pxe/images/ubuntuフォルダ内に全てコピーします。

    ※初めて試す場合は、ubuntu9.04等の旧バージョンをお勧めします。最近のバージョンだと起動時にブートスプラッシュしか表示されず、起動に失敗している場合にどこでつまずいているか分かりづらいからです。



    コピーしたら、「dnsmasq」と「nfs-kernel-server」 をインストールし、設定ファイルを編集します。
  • 「dnsmasq」「nfs-kernel-server」
  • # 「dnsmasq」「nfs-kernel-server」をインストール
    $ sudo aptitude install dnsmasq nfs-kernel-server


    # dnsmasq.confを編集
    $ sudo nano /etc/dnsmasq.conf

    # 開いたファイルの一番下に下記を記入
    no-hosts
    server=/localnet/192.168.1.1
    dhcp-range=192.168.1.20,192.168.1.30,2h
    dhcp-boot=pxelinux.0
    enable-tftp
    tftp-root=/pxe
    dhcp-option=3,192.168.1.1
    ################################
    #1行目:hostsファイルを参照しない設定。
    #2行目:DNSサーバーのIPアドレスを指定。
    #3行目:クライアントに割り当てるIPアドレスを指定。
    #上の場合は192.168.1.20~30のどれかが割り当てられる。
    #7行目:ルーターのIPアドレスを指定。

    ################################


    # /etc/exportsファイルを編集
    $ sudo nano /etc/exports

    # 開いたファイルの一番下に下記を追加
    /pxe/images/ubuntu *(ro,all_squash,no_subtree_check,crossmnt)


    # 「dnsmasq」と「nfs-kernel-server」を再起動して設定を反映させる
    $ sudo /etc/init.d/dnsmasq restart
    $ sudo /etc/init.d/nfs-kernel-server reload

    これで設定は終了です。



    設定終了後にクライアントPCをネットブートすると、下の様な画面が表示され、ubuntuをLive起動するかインストールするかを選びます。

    clam.png



    下は9.04を起動しているところです。起動時にサーバー(IPアドレス:192.168.1.11)のファイルをマウントしています。

    clam.png




    ネットブートもできない場合


    CD、USBだけでなく、ネットブートすらも出来ないPCに入れる方法です。

    これまでの様にソフトでどうにかするのではなく、内蔵HDDを外して以下の様な流れで強引に入れます。
    OSをインストールしたいPCの内蔵HDDを外し、
    USB接続のケースに入れる
              
    VirtualBoxが入っている別のPCに接続(私の場合はMac)
              
    VirtualBoxでインストール
    最終手段としてこんな方法もあるといった内容です。


    インストール用の仮想マシン作成

    1から手順を説明すると長くなるので、ポイントだけ紹介します。仮想マシン作成に関して詳しく知りたい方は過去記事を参考にしてください。


    新規仮想マシンを適当な名前で(ubuntu-installとか)作成し、仮想ハードディスクを作成する際に下の様に「起動ディスク」のチェックを外し、「続ける」をクリックします。

    clam.png

    すると下の様な警告が表示されますが、構わず「続ける」をクリックして進み、仮想ハードディスク無しで仮想マシンを作成します。

    clam.png



    仮想マシン作成が終了したら、「設定 → ストレージ」と進み、IDEコントローラーにインストールに使うISOイメージを指定します。

    clam.png



    次に、インストール先となるケースに入れたUSB接続のHDDをMacに接続し、「ポート」の「USB」で、接続したHDDを指定します。

    clam.png

    ※:撮影用にUSBメモリを使ってます。


    これで設定は終了です。


    インストール

    設定終了後、仮想マシンを起動するとインストーラーが立ち上がるので、VirtualBoxにUSB接続のHDDを認識させるため下記のどちらかを実施します。


    • インストール先のHDDのフォーマットが「hfs」や「FAT」といったMacで認識できる形式の場合は、HDDをアンマウントします。

    • HDDのフォーマットが「ext」等の、Macで認識できない形式の場合は、USB接続のHDDをMacから一度取り外し、再度接続します。


    これでUSB接続のHDDがVirtualBoxにマウントされ、インストールできるようになります。

    clam.png



    仮想マシン作成時に仮想ハードディスクを作成しなかったので、インストール先が1つ(USB接続のHDD)しか表示されません。

    clam.png


    インストールが完了したらHDDを元に戻し、起動できるかチェックして終了です。

    HDDを取外す事を除けば、3つの方法の中では一番簡単だと思います。



    参考Link:
    古いノートPCで Ubuntu 9.04 LiveCD のネットワークブート:Kawaji's Weblog
    Ubuntu 10.10 Desktop 日本語版 を ネットワークインストール
    ライブUbuntuをネットワークブートする ディスクレスサーバー構築 - adsaria mood
    MacをPXEサーバーとしてUbuntuをネットワークインストールしてみる


    スポンサード リンク