f

アーカイブ

2016-06-06

How to upgrade Ubuntu 16.04 from 14.04

2016-04-28にUbuntu 16.04(コードネームはXenial Xerus)がリリースされた。2年前に自分のデスクトップPCに初めてインストールしたLinuxであるUbuntu 14.04から16.04に更新した。いくつか問題があったので手順を記しておく。 

結論からいうと,14.04から16.04へのアップグレードは2016-06-21まで待ったほうがいい。Ubuntuでは2年毎に長期サポート版(LTS:Long Term Support)がリリースされている。最初のリリースから3ヶ月後の16.04.1LTSのリリースで,14.04から16.04への移行用のアップグレードが可能となる予定となっている。このリリースがされたら,UbuntuのSynapticsからアップグレードが可能となる。それまでに,バグなどが直る可能性があるので,緊急でなければまだ待ったほうがいいだろう。

インストール手順

インストール手順は「Ubuntu 16.04 LTSをインストールする - Narrow Escape」を参考にした。以下にインストール手順を記す。

  1. 必要なデータをバックアップ。

    アップグレードで何か問題があったときのために,HDDに大事なデータをバックアップする。ただし,時間がかかるので,バックアップするファイルは絞る。例えば,オンラインストレージやgithubで管理している データは既にバックアップがとれているようなものなので,対象外とし,本当にローカルPCでしか管理していないデータをバックアップする。例えば以下のファイルをバックアップした。

    • VirttualBoxのイメージ:~/VirtubalBox VMs
    • メール:~/.thunderbird
    • 動画・音声:~/Videos
  2. Ubuntu 14.04のアップデートを完了させる。
    sudo apt-get update -y
    sudo apt-get upgrade -y
    sudo apt-get dist-upgrade -y
  3. アップグレードに必要なパッケージをインストールしアップグレード。
    sudo apt-get install update-manager-core -y
    sudo do-release-upgrade -d

    コマンドを実行すると,最初に2回ほど質問されるのでyで回答しておく。

    パッケージのダウンロードに20分ほどかかり,その後の展開・インストールで合計1-2時間ほどかかった。

不具合対応

通常であれば,この後に再起動すればうまくいくのだと思われる。しかし,この再起動で問題が起きた。「Broken Ubuntu 16.04 installation after upgrade (corrupt kernel?) - Ask Ubuntu」で質問されているように,起動時に以下のメッセージが表示されて起動できなかった

[     8.253532] Kernel panic - not synching: Attempted to kill init! exitcode=0x00007f00

おそらく,いくつか対処方法があるのだと思うが,自分が行った方法を記しておく。基本的には,「Ubuntu 14.04から16.04への更新でハマった場合の対処法 (Ubuntu) - Qiita」を参照した。

おそらく,一番確実なのはLive CDから起動することだろう。ただし,いちいちCDやUSBにOSを書き込むのは面倒くさいので,今回はこの方法は使わなかった。

PCの起動

参照:起動時にカーネルパニックする - Ubuntu 14.04から16.04への更新でハマった場合の対処法 (Ubuntu) - Qiita

上記のKernel panicが起きた状態ではどうしようもないので,電源を長押しして強制的に電断する。そして起動する。すると,GNU GRUBの画面(以下の画像の左側)が表示される。

ここで,[Advanced options for Ubuntu]>[Utuntu, with Linux 3.13.x-xx-generic (recovery mode)]にカーソルを合わせ,eキーを押下する。

起動時のコマンドの設定画面(以下の画像の左側)になるので,下から2行目のlinuxから始まる行の最後に,init=/sbin/upstartを追加する。その後,C-x(CTRL+x)で保存して終了する。すると,リカバリーモードでPCが起動する(以下の画像の右側)。

ここで,[resume]を選択すると,PCを起動しようとするが,telinitが見つからなくて失敗して固まる。

upstart-sysvのインストール

参照:telinitもしくはrunlevelが見つからなくて起動できない - Ubuntu 14.04から16.04への更新でハマった場合の対処法 (Ubuntu) - Qiita

これを防ぐために,[root]を選択し,upstart-sysvのインストールを試みる。

しかし,リカバリーモードだと以下2点の制限を受ける。

  • ファイル書き込みができない。
  • インターネットにつながらない。

まず書き込みができるように以下のコマンドで,ファイルシステムをマウントしなおした。

mount -o remount,rw /dev/sda2

今回は/dev/sda2を指定したが,別にルート/を指定しても大丈夫な気がする。

書き込みができるようになったので,今度は以下のコマンドでインターネット接続を有効にする。

dhclient eth0

eth0がダメならeth1を試す。これでインターネット接続が有効になるので,以下のコマンドでupstart-sysvパッケージをインストールする。

apt-get install upstart-sysv

なお,このインストール時に依存関係で他のパッケージをアンインストールしないと,upstart-sysvがインストールできなかった。Ubuntu 16.04が起動できたらインストールし直そう。

ここまで終わったら,exitC-dでターミナルを終了させる。その後,[resume]でPCが起動できるはずだ。

起動後に,GUIが立ち上がらなければ,upstart-sysvのインストール時に,依存関係を解消させるためアンインストールしてしまったのかもしれない。その場合,例えば以下のコマンドで必要なGUI環境をインストールすればよいだろう。

sudo apt-get install unity  # Ubuntu default desktop
sudo apt-get install gnome-desktop # GNOME desktop

まとめ

ひとまずこれでUbuntu 14.04からUbuntu 16.04にアップグレードしてPCを操作できるようになった。

しかし,この他にコンパイラーのgccの実行時に以下のエラーが出るなど,他にも問題はありそうだ。

/home/senooken/local/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/crti.o: unrecognized relocation (0x2a) in section `.init'
/home/senooken/local/bin/ld: final link failed: Bad value
collect2: error: ld returned 1 exit status

冒頭で説明したとおり,急ぐ必要がないのであれば,Ubuntu 14.04LTSから移行のためのリリースである2016-06-21のUbuntu 16.04.1LTSまで待ったほうがよいだろう。

0 件のコメント:

コメントを投稿