こんにちは、山田ハヤオです。Arch Linux大好き人間です。
皆さんはArch Linux使ってますか?使ってる方も多いでしょう。てか使ってください。
今回はタイトルの通り、Arch LinuxからManjaroに移行します。
Arch Linux
Arch Linuxの特性の1つに「常にパッケージが最新」という特徴が有ります。
そのおかげで最新機能をUbuntuより圧倒的早く享受できるのですが、当然問題もあります。
「たまに不具合の有るバージョンに更新してしまう」という重大な問題です。
特にNVIDIAのドライバやLinuxカーネルは下手に更新すると起動しなくなることが有ります。
Manjaro
しかし、Manjaroは違います。
ほとんどの仕組みは共通ながらも、パッケージの安定性をしっかりと調べた上で公開されるので、不具合に遭遇する可能性はかなり下がります。
パッケージの安定性のためにArch LinuxではなくManjaroを利用するユーザーも多いと思います。
ここまで読んでArch LinuxのユーザーはManjaroに移行したいと思ったことでしょう。
しかしユーザーのカスタマイズを前提としているArch Linuxですから、自分の環境というのはかなりカスタマイズされていて再構築するのは面倒というか不可能に近いと思います。
そこで、全てのファイルとパッケージを維持したままArch LinuxからManjaroに移行します。
注意点
前置きが長くなりましたが、ここで注意点です。
この方法はかなり強引かつ海外のコミュニティでも見つけられなかった方法です。
ハヤオが自分で考え出した(というより思いつきでやってたまたまできた)方法なので予期せぬ不具合に遭遇する可能性もあります。
データはしっかりとバックアップをとった上で作業を行ってください。
また、緊急復旧用の起動OSとして、Arch LinuxかAlter LinuxのイメージファイルをUSBに焼いて起動できるようにしておきましょう。
ハヤオはこの実験を仮想環境上でしかテストしていません。十分注意してください。
Alter LinuxなどのPlymouthなどの特殊なパッケージが入っている環境では予期せぬ問題が発生する可能性が有ります。
何かあってもハヤオは一切の責任を負えませんので。
移行の仕組み
ここで移行の仕組みを説明します。
pacmanのリポジトリサーバをManjaroのものに変更し、無理やりパッケージを更新します。
その後全てのパッケージを再インストールして完了です。
ね?簡単でしょ?(恐ろしく危険)
0.下準備
必要なものを用意しましょう。
- 既に構築されたArch Linux
- ネット接続環境
- 十分な時間
- 緊急復旧用のUSB
- 何か起きても大丈夫な不屈の精神
CLIアレルギーの方は…頑張ってください…
reflectorをインストールしてる方は必ずアンインストールし、pacmanのフックやsystemdのサービスを削除してから実行してください。reflectorはManjaroと競合します。
今回は以下のようなArch LinuxをManjaroに移行させます。
(壁紙はAlter LinuxですがディストリはAlter Linuxじゃないです。壁紙だけです。)
1.リポジトリをManjaroのものに変える
普通のArch環境ならリポジトリミラーを/etc/pacman.d/mirrorlist
に入れてると思うのでそれを編集します。
sudo mv /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist-arch
sudo bash -c "echo 'Server = https://osmirror.org/manjaro/stable/$repo/$arch' > /etc/pacman.d/mirrorlist"
これでリポジトリがManjaroのものに変更されました。
2.キャッシュを削除する
pacmanのキャッシュは移行の邪魔になるので全て削除します。
yes | sudo pacman -Scc
sudo pacman -Syy
スクショではyayを使ってますが一緒です。
alter-stableリポジトリは邪魔なので無効化しておきました。(普通のArch環境なら存在しない)
3.Keyringを追加する
ここはちょっと工夫が必要です。
リポジトリを置き換えただけではパッケージをインストールできません。
Manjaroの開発者たちのGPG鍵をpacmanにインポートさせる必要があります。
ここも少々強引な手段を使います。
パッケージファイルを取得する
まずは以下のコマンドを実行してください。
sudo pacman -Sw manjaro-keyring
するとエラーが出るので「n」キーを押して終了してください。これが大事です。
パッケージをインストールする
エラーは出ましたがパッケージファイルは残っているのでそれをインストールします。
cd /var/cache/pacman/pkg
sudo pacman -U manjaro-keyring-*.pkg.tar.*
4.システムを更新する
システムのパッケージを更新しましょう。
ここからは絶対に再起動しないでください。再起動するとシステムが起動不可能になります。
yay -Syu
yay -S pacman-mirrors filesystem
5.全てのパッケージをダウングレードする
Manjaroの安定したバージョンへダウングレードを行います。
sudo pacman -Qnq | sudo pacman -S - --needed
6.カーネル設定を更新する
ManjaroとArch Linuxのパッケージの大きな違いの一つにLinuxカーネルがあります。
先程のシステム更新でカーネルのファイルパスが変更されていますので、対応作業を行います。
Initramfsの再作成
sudo mkinictcpio -P
Grubの設定反映
Grubじゃない人は各自でブートローダの対応作業を行ってください。
sudo grub-mkconfig -o /boot/grub/grub.cfg
7.設定ファイルの置き換え
設定ファイルをManjaroのものに置き換えます。
cd /usr/lib
sudo mv ./os-release-arch
sudo mv ./os-release.pacnew ./os-release
8.再起動
やっとここで再起動できるようになります。再起動しましょう。
9.ブートローダのラベルを書き換える
先程のブートローダの設定更新では単純にカーネルへのファイルパスを書き換えたに過ぎません。
ディストリビューション名がArchのままになっているのでManjaroに書き換えます。
(理論上は全パッケージ再インストールの段階で変わるはずが変わっていませんでした)
sudo sed -i s/Arch/Manjaro/g v/etc/default/grub
sudo grub-mkconfig -o /boot/grub/grub.cfg
10.確認
neofetchを実行してみましょう。
sudo pacman -S neofetch
neofetch
ロゴやKernelがManjaroのものに置き換わっていれば成功です。
最後に
何か困ったことがあったらコメント欄までお願いします。
コメント