Linux

WSL の Ubuntu 16.04 LTS を 18.04 LTS にアップグレードする

投稿日:2019年2月8日 更新日:

WSL の Ubuntu 16.04 LTS を 18.04 LTS にアップグレードしたときの手順を記録します。

1. 公式な情報

マイクロソフト 及び Ubuntu からの情報は以下のページになります。

といってもあまり細かくは説明されていません。

1つ目のマイクロソフトのサイトでは、「sudo do-release-upgrade コマンドを使え」というくらいしか書いてありません。

2つ目の Ubuntu のサイトではもう少し詳しくて、以下のような説明がされています。以下は、コマンドラインから行う場合の手順を翻訳したものです。

  1. update-manager-core をインストールします(まだインストールしていないのなら)。
  2. /etc/update-manager/release-upgrades ファイル内の Prompt に “normal” をセットします(LTSではないバージョンにアップグレードする場合)。LTS バージョンにアップグレードする場合は、”lts” をセットします。
  3. sudo do-release-upgrade コマンドでアップグレードツールを開始します。
  4. スクリーンに表示される指示に従います。

2. 現状確認

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 16.04.5 LTS
Release:        16.04
Codename:       xenial

3. アップグレード作業

(1) パッケージを最新の状態にする

現在インストールしているパッケージをアップグレードします。

$ sudo apt update
$ sudo apt upgrade

(2) update-manager-core をインストール

update-manager-core をインストールする。

$ sudo apt install update-manager-core

しかしこれは既にインストールされていました。

そして、/etc/update-manager/release-upgrades ファイル内の Prompt には “lts” がセットされていました。

[DEFAULT]
Prompt=lts

(3) アップグレードを開始する

do-release-upgrade コマンドでアップグレードを開始します。

まず、このコマンドのオプションをここにも記載しておきます。

$ do-release-upgrade -h
Usage: do-release-upgrade [options]
Options:
  -h, --help            show this help message and exit
  -V, --version         Show version and exit
  -d, --devel-release   If using the latest supported release, upgrade to the
                        development release
  --data-dir=DATA_DIR   Directory that contains the data files
  -p, --proposed        Try upgrading to the latest release using the upgrader
                        from $distro-proposed
  -m MODE, --mode=MODE  Run in a special upgrade mode. Currently 'desktop' for
                        regular upgrades of a desktop system and 'server' for
                        server systems are supported.
  -f FRONTEND, --frontend=FRONTEND
                        Run the specified frontend
  -s, --sandbox         Test upgrade with a sandbox aufs overlay
  -c, --check-dist-upgrade-only
                        Check only if a new distribution release is available
                        and report the result via the exit code
  -q, --quiet

では実行します。

$ sudo do-release-upgrade

これ以降、表示された指示に従います。

途中、sshd の設定について聞かれました(表示が乱れています)。

sshd の設定について聞かれました
sshd の設定について聞かれました

sshd というのは、ssh のサーバーとしてのアプリケーション(接続を受け付ける側)を指しますが、特に何か設定していたつもりもなかったため「パッケージメンテナのバージョンをインストール] を選択しました。上の画像では、「現在インストールされているローカルバージョンを保持」が選択されていますが、正直 WSL で使っている Ubuntu においてはどちらでもあまり変わらないと思います。

更に指示に従い進めていきます。

最後に以下のメッセージが表示されました。

(省略)

システムのアップグレードが完了しました。

再起動が必要です

アップグレードを完了するには再起動が必要です。
'Y' を選択すると再起動します。

続行する[yN]

ここで y を押したのですが、以下のように表示されました。WSL の Linux は reboot コマンドが使えませんが、ここでも再起動できないようです。

System has not been booted with systemd as init system (PID 1). Can't operate.
Failed to talk to init daemon.

更に以下の指示が現れましたので、x を押して通常のターミナルに戻りました。

press x to destroy or r to resurrect

※ 実は最初 r も押したのですが、結局元の画面に戻るだけでした。

そして、この時点で Ubuntu 18.04 になっていました。

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 18.04.1 LTS
Release:        18.04
Codename:       bionic

(4) souces.list の更新

たまに、/etc/apt/sources.list ファイル内の “xenial” となっている部分が “bionic ” に書き換えられていないことがあるようです。その場合は手動で書き換えます。

※ Ubuntu 16.04 LTS のコードネームが「xenial」、Ubuntu 18.04 LTS のコードネームが 「bionic」です。

念の為、現状の sources.list ファイルをバックアップします。

$ sudo cp -p /etc/apt/sources.list ~/tmp/sources.list.backup

sources.list ファイルを書き換えます。

$ sudo sed -i 's/xenial/bionic/g' /etc/apt/sources.list

パッケージを更新します。

$ sudo apt update
$ sudo apt upgrade

4. おわりに

特に操作で困るようなことはありませんでしたが、結構な時間が掛かりますので、時間に余裕がある時にアップグレードすることをお勧めします。(2時間以上掛かりました)

WSL

WSL の Ubuntu 18.04 で ssh-agent がおかしくなったので対応しました

2019.02.13

📂-Linux

執筆者:labo


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

Linux

【Ubuntu】pip install –upgrade pip コマンドを実行すると、その後、ImportError: cannot import name main というエラーが発生する場合の対応方法

「pip install –upgrade pip」コマンドを実行した後、pip コマンドを実行すると「ImportError: cannot import name main」というエラーが発生す …

Linux

シェルスクリプト (Bash) では組み込みコマンド set を活用しましょう

Linux や MacOS、Windows の WSL でシェルスクリプト(Bash)を書く場合は、組み込みコマンド set を活用しましょう。より完成度の高い処理を書くことができます。 スポンサード …

Linux

ラベル行のある複数ファイルを1ファイルにマージするコマンド

ラベル行のある複数ファイルをマージするコマンドを紹介します。

docker

docker run コマンドのパターン覚書

docker run コマンドのパターン覚書です。

CentOS

CentOS 8 で Snap から certbot パッケージをインストールする

CentOS 8 で Snap から certbot パッケージをインストールする方法について説明します。