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 キーを押す」だったはずだが、一度も成功した例しがないため、
- Windows 10 の「設定」→「更新とセキュリティ」→「回復」タブ→「PC の起動をカスタマイズする」にある「今すぐ再起動」をクリック
- 「オプションの選択」画面で「トラブルシューティング」をクリック
- 「トラブルシューティング」画面で「詳細オプション」をクリック
- 「詳細オプション」画面で「UEFI ファームウェアの設定」をクリック
- 「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 に戻すと件のエラーが再現するようになる。