WSL 1 上にインストールした Ubuntu 20.04 で w3m を実行すると Wrong __data_start/_end pair Aborted (core dumped) となる問題

Windows 10 Pro の WSL (Windows Subsystem for Linux) 上にインストールした Ubuntu 20.04 で w3m を実行すると、常に

Wrong __data_start/_end pair
Aborted (core dumped)

のエラーを吐く状態だということに気付いた。

エラーメッセージを頼りに調べてみたところ、「Error message "Wrong __data_start/_end pair" while using mpb in ubuntu 20.04 lts windows subsystem for linux – Ask Ubuntu」のスレッドで、

Upgrading WSL from version 1 to version 2 seems to have fixed it.

との記述を発見。

さっそく、手元の環境の WSL のバージョンを 1 から 2 にアップデートし、 Ubuntu 20.04 で WSL 2 を使用するように変更したところ、 w3m の実行時に件のエラーが発生することはなくなった。

解決手順

基本的には、「Error message "Wrong __data_start/_end pair" while using mpb in ubuntu 20.04 lts windows subsystem for linux – Ask Ubuntu」に記載の手順に従って作業を進めた。

CPU の仮想化技術を有効にする

WSL 2 を使用するには、 BIOS / UEFI の設定で CPU の仮想化技術 (Virtualization Technology) が有効化されている必要があるため、設定内容を確認の上、必要に応じて設定を変更する。

BIOS / UEFI の設定画面を表示する手順は、使用中の機種によって異なるため、それぞれに応じた方法で。

手元の Let’s note では、確か「電源投入後、画面に Panasonic ロゴが表示されたら F2 キーを押す」だったはずだが、一度も成功した例しがないため、

  1. Windows 10 の「設定」→「更新とセキュリティ」→「回復」タブ→「PC の起動をカスタマイズする」にある「今すぐ再起動」をクリック
  2. 「オプションの選択」画面で「トラブルシューティング」をクリック
  3. 「トラブルシューティング」画面で「詳細オプション」をクリック
  4. 「詳細オプション」画面で「UEFI ファームウェアの設定」をクリック
  5. 「UEFI ファームウェアの設定」画面で「再起動」をクリック

として、 UEFI の設定画面を表示している。

Windows の機能で「仮想マシンプラットフォーム」を有効化する

「コントロールパネル」→「プログラムと機能」→「Windows の機能の有効化または無効化」から「仮想マシンプラットフォーム」にチェックを入れ、「OK」ボタンをクリックすると、当該機能を有効化する処理が進む。

しばらくすると、システムの再起動を要求されるため、システムを再起動する。

Ubuntu 20.04 が使用する WSL のバージョンを 1 から 2 に変更する

まずは現状確認。

C:\Users\f7u>wsl -l -v
  NAME            STATE           VERSION
* Ubuntu-20.04    Stopped         1

Ubuntu 20.04 が使用する WSL のバージョンを 2 に指定する。

C:\Users\f7u>wsl --set-version Ubuntu-20.04 2
変換中です。この処理には数分かかることがあります...
WSL 2 との主な違いについては、https://aka.ms/wsl2 を参照してください
WSL 2 を実行するには、カーネル コンポーネントの更新が必要です。詳細については https://aka.ms/wsl2kernel を参照してください

手元の環境では、「カーネルコンポーネントの更新が必要」とのメッセージが表示されたため、指示に従い、 <https://aka.ms/wsl2kernel> 経由で「WSL2 Linux kernel update package for x64 machines」を入手・インストールした。

その後、改めて先のコマンドを実行。

C:\Users\f7u> wsl --set-version Ubuntu-20.04 2
変換中です。この処理には数分かかることがあります...
WSL 2 との主な違いについては、https://aka.ms/wsl2 を参照してください
変換が完了しました。
C:\Users\f7u> wsl -l -v
  NAME            STATE           VERSION
* Ubuntu-20.04    Stopped         2

なお、今後インストールするディストリビューションのデフォルトを WSL 2 に設定する場合は、

C:\Users\f7u>wsl --set-default-version 2

を実行しておくと良いらしい。

WSL 2 上の Ubuntu 20.04 で w3m を実行する

f7u@BANANA:~$ w3m -version
w3m version w3m/0.5.3+git20190105, options lang=en,m17n,image,color,ansi-color,mouse,gpm,menu,cookie,ssl,ssl-verify,external-uri-loader,w3mmailer,nntp,gopher,ipv6,alarm,mark,migemo

件のエラーを吐かなくなった!!

ちなみに、 WSL 1 に戻すと件のエラーが再現するようになる。

参考情報

タイトルとURLをコピーしました