WSL2でMIRACLE LINUXを使えるようにしよう。まずはCentOS 8.4をインストールしてから移行ツールで移行します。
注意: この手順では公式に用意されていない手順で行っているためきちんと動く保証はありません。人柱だと思ってください。もちろん無保証です。少なくともsystemdはWSLの都合で使えません。
手順
- PowerShellを開く
- WSL2の確認と準備(不必要な事もある)
- CentOSの導入
- 移行ツールを使ってのMLへの移行
- SLを走らせる
PowerShellを開く
スタートメニューの検索窓に、powershell
と入力してPowerShellを起動します。下から続くコマンドはすべてPowerShellのウィンドウに打ち込むかコピペしてください。また、行頭の>
はプロンプトを表すので、入力しないでください。PowerShellの画面上、行頭にはPS C:\XXXXXX\XXXX>
と表示されていると思いますが、その部分を表す為に>
と表示しています。
WSL2の確認と準備(環境によっては必要が無い場合があります)
> wsl --set-default-version 2
Windows の仮想マシン プラットフォーム機能を有効にして、BIOS で仮想化が有効になっていることを確認してください。
詳細については、https://aka.ms/wsl2-install を参照してください
Windowsの機能の有効化または無効化
で仮想マシンプラットフォームのチェックが外れていたのでチェックをして再起動しました。
もう一度実行すると切り替えができました。
> wsl --set-default-version 2
WSL 2 との主な違いについては、https://aka.ms/wsl2 を参照してください
この操作を正しく終了しました。
CentOSの導入
WSL公式にはCentOSが用意されていません。またCentOSの公開されているWSL向けイメージも古いものが多い状況です。その為CentOS 8.4を用意したので使ってみてください。(無保証・β)
まずはCentOS 8.4のイメージをダウンロードして解凍します。
> Invoke-WebRequest https://github.com/tmya/WSL-CentOS8/releases/download/v0.0.1-8.4.2105/centos8.zip -OutFile ((Convert-Path .) + "\\centos8.zip")
> Expand-Archive -Path ((Convert-Path .) + "\\centos8.zip") -DestinationPath (Convert-Path .)
CentOSを導入する為のフォルダを作成します。今回はC:\wsl\ML以下にインストールします。後程MIRACLE LINUXに移行するのでMLという名前にしています。好きな場所でも良いと思いますが、その場合は後に続くコマンドのパスを直してください。
> New-Item -ItemType Directory -Force -Path C:\wsl\ML
NOTE: インポートせずに通常通りWSLでインストールする場合は%homepath%\AppData\Local\Packages\以下になる模様です。
そしてWSLにインポートします。以下の様なメッセージが表示された場合はリンクに従ってパッケージをインストールしてください。表示されなければもう一度このコマンドを実行する必要はありません。
> wsl --import ML c:\wsl\ML .\centos8.tar
WSL 2 を実行するには、カーネル コンポーネントの更新が必要です。詳細については https://aka.ms/wsl2kernel を参照してください
手順4 - Linux カーネル更新プログラム パッケージをダウンロードする
もう一度実行するとエラーは表示されません。
> wsl --import ML c:\wsl\ML .\centos8.tar
ディストリビューション一覧を表示してみます。インポートできているようです。
> wsl -l
Linux 用 Windows サブシステム ディストリビューション:
ML (既定)
wslコマンドに-d
オプションと名前を与えると、そのディストリビューションで起動します。
> wsl -d ML
[root@PC user]#
LINUXらしいプロンプトに切り替わりましたので、LINUXコマンドで確認してみましょう。
# cat /etc/redhat-release
CentOS Linux release 8.4.2105
# pwd
/mnt/c/Users/user
どうやらCentOSになっているようです。カレントディレクトリはWindowsユーザのホームフォルダになっています。作業するのに分かりやすくするためLinuxのホームディレクトリに移動しておきましょう。
# cd
[root@pc ~]#
# pwd
/root
CentOSとして使用する場合はここまでの手順で完了です。
移行ツールを使ってのMLへの移行
移行ツールをダウンロードします。
# curl -LO https://repo.dist.miraclelinux.net/miraclelinux/migration-tool/migrate2ml.sh
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 20833 100 20833 0 0 98734 0 --:--:-- --:--:-- --:--:-- 98734
マイグレーションツールを実行します。ブートローダーはありませんし切り替える必要がないので./migrate2ml.sh --minimalでも良いのですが、商標の入ったパッケージの切り替えを行いたいので--coreオプションにしています。そのため最後にgrub2パッケージのエラー表示がありますがおそらく大丈夫だと思います。
# bash ./migrate2ml.sh --core
~略~
Failed to upgrade grub2 packages
Exit.
確認してみましょう。商標やリポジトリが切り替わっています。localeはそのうち直しましょう。
# cat /etc/redhat-release
MIRACLE LINUX release 8.4 (Peony)
# dnf repolist
Failed to set locale, defaulting to C.UTF-8
Last metadata expiration check: 0:03:08 ago on Mon Nov 22 02:06:52 2021.
repo id repo name status
ML8-AppStream MIRACLE LINUX - AppStream 14445
ML8-BaseOS MIRACLE LINUX - BaseOS 6170
パッケージのアップデートを行います。
# dnf -y update
これでMIRACLE LINUXの導入はひと段落です。
SLを走らせる
我々はいつの時代にもlsをslと打ち間違える必要があるのです。
豊田正史とslコマンド (Masashi Toyoda and SL command)
導入しましょう。
# dnf -y install git gcc make ncurses-devel
# git clone https://github.com/mtoyoda/sl.git
# cd sl
# make
# ./sl
あとは作者の案内に従いバイナリを/usr/local/bin
に設置しましょう。
# mv ./sl /usr/local/bin
これでls
を打ち間違えるといつでもslを走らせることができます。