Ubuntu 18.04 LTS Server インストール障害

CentOS7からUbuntu 18.04へ移行を進めている。本来はServer用途として使うつもりだったのに、どうしてもインストールが出来ず、やむなくDesktop Editionを評価している。きっと、それほど中身は違わないだろうし。そのUbuntuもQSVを試したり、Desktopを使ってみたりでじわじわと慣れてきた。それなりにOSへの理解が深まると、やはり最初のインストール失敗を掘り下げたくなってきたりする。OS上に構築した資産が大きくならないうちに、もう1度トライしてみよう。出力されたエラーは前回の記事にも載せたが、以下のような感じ。

curtin command install
  preparing for installation
  configuring storage
    running 'curtin block-meta simple'
      curtin command block-meta
        removing previous storage devices

メッセージからすると、何となくストレージの問題のような気がする。この検証に使っているPCがDesk mini 110というミニPCで、NVMeのM.2 SSDしか使えない。厳密に言えば、2.5インチHDDも接続できるんだけど、そんなものはうちにないのであった。という訳で、何となくNVMeが怪しいなあと思いつつも、そこの切り分けができない状態で、他の選択肢を消していくしかない。このエラーでぐぐると、まずは既存のパーティションを壊せ、という回答をよく見かける。エラーが出た状態でALT+カーソルを使ってコンソールを呼び出し、パーティションを削除する。

fdsik /dev/nvme0n1
d
1
d
1
:
w

こんな感じで全パーティションを削除してから、リトライしてみたが全然変わらず。他のメッセージを読むと、リリース版にはバグが残っているからdaily buildを使えみたいなメッセージも。早速、ダウンロードし直してUSBメモリでインストールメディアを作って、わくわくしながらリトライするが、やっぱり失敗。うーん、どうしよう。と、そこでM.2 SSDのUSBアダプタを持っていることを思い出した。これはSATA接続になるはず。これをDesk miniに刺してインストールしてみると・・・成功した!どうやら18.04から採用されたCurtin installがNVMeでは失敗してしまうようだ。

SATAに入れたUbuntuをNVMeにddでコピーして、NVMe側にgrubを入れてパーティションを切り直して、一応使えるようにはなった。回避方法は見つかったものの、この手順だと何かとOSを壊す自分にとっては再構築が面倒過ぎる。やはりNVMeのデバイスに直接インストール出来る方法を探りたい。そういえばPXE Bootによるネットワークインストールなら昔ながらのインストーラが動くような気がするな。Ubuntuのkickstart installはまったくの無知なので、とりあえず手動でネットワークインストールしてみよう。

我が家のPXE boot環境はCentOS向けに作られてしまっているので、CentOS上のtftpbootを一旦退避して、Ubuntu用に作り直す。とはいってもnetboot.tar.gzをダウンロードして展開するだけ。dhcp側のnext-serverへの誘導は既存の設定をそのまま使ったので割愛。これでPXE bootをすると、No such file or directoryが出てしまう。一瞬しか表示されないエラーメッセージを何とか読んで、ubuntu-installer/amd64/linuxというファイルに権限がないことに気が付く。このファイルの権限を変更するとネットワークインストーラが起動した。

cd /var/lib
mv tftpboot _tftpboot
mkdir tftpboot
cd /usr/local/src
wget http://archive.ubuntu.com/ubuntu/dists/bionic/main/installer-amd64/current/images/netboot/netboot.tar.gz
cd /var/lib/tftpboot
tar xf /usr/local/src/netboot.tar.gz
chmod 644 /var/lib/tftpboot/ubuntu-installer/amd64/linux

懐かしのCUIなインストーラで作業を進めるものの、パッケージインストーラの辺りで永久ループっぽいハマり方をしてしまう。インジゲータがいつまでも進まないので手動インストールも諦める。なかなか険しい。ここまで来たら腹をくくって全自動でインストールしてしまおう。kickstartファイルに相当するpreseedファイルを見よう見まねで作り始める。いちいちラベル入れるのも面倒なので、pxelinux.cfgの下にmacアドレスファイルを作って、http経由でpreseedファイルを読み出すように設定した。この辺りも既存インフラの流用です。

vi /var/lib/tftpboot/pxelinux.cfg/01-11-22-33-44-55-AA
    :
default ubuntu
label ubuntu
  kernel ubuntu-installer/amd64/linux
  append auto=true priority=critical vga=788 initrd=ubuntu-installer/amd64/initrd.gz preseed/url=http://192.168.1.1/ubuntu.cfg preseed/interactive=false

そして、対応するWebサーバに以下のpreseedファイルを置く。preseedファイルの内容についてはネットで漁ったものを修正しただけなので、また機会があれば。このような形でpreseedファイルを使って、全自動でネットワークインストールをしてみたところ、やっとNVMeのDesk miniにUbuntuをインストールすることが出来た。うーん、長かった。一応これで手順は確立したし、自動化も果たしたんだけど、インフラ刷新するのにまたkickstartというのも面白みがないので、せっかくUbuntuなんだから、今度はMAASでも使ってみようかな。

コメントを残す

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)