🔖

Install Arch Linux on MacStudio M1 Ultra 128MB

2023/04/22に公開

結論

Redhatが圧倒的に便利。普及しているには理由がある。Debianは設定の神経質さが異常。
ではArch Linuxはどうかというと、控えめに言って糞です。かなりイライラします。

なぜArch Linux?

  1. 玄人向けっぽいから[1]
  2. Asahi Linuxが採用している
  3. 人気ディストリビューションの多くがArch派生
  4. ローリングリリースらしいから

仮想マシン選定

  1. Parallels - ライセンス料が微妙[2]
  2. VirtualBox - M1未対応
  3. VMware Fusion - Arch Linuxをインストールしてみたがブートできず…[3]
  4. UTM - 既にインストール済みのイメージがダウンロードできた ← 決定!

UTMにArch Linuxをインストールする

UTMのダウンロード

GitHubから最新版がダウンロードできます。

https://github.com/utmapp/UTM/releases/latest/download/UTM.dmg

Arch Linuxのイメージをダウンロード

UTMから仮想マシンの作成を選択すると、既に作成済みのイメージをダウンロードするリンクが表示されるので、ボタンをポチポチ押すだけ。

以下がギャラリー。Linuxだけじゃなく、MacOS9とか、Windows XPとかもダウンロードできる。
https://mac.getutm.app/gallery/

Arch Linuxはこちら
https://mac.getutm.app/gallery/archlinux-arm

Arch Linuxのイメージを起動

めでたくトラブルが発生。イメージは、起動ディスクだけではなく、UTMやQEMUの設定まで含んでいる。デフォルトでブートすると、SMP関連のエラーが出る。おそらく、コア数が多過ぎて認識できないらしい。コア数を2など明示してあげるとあっさり起動した。1勝目

Arch Linuxで一番面倒なはずのインストール作業をスキップした。なんか負けた感あり。2敗目[3:1]

今後の作業の順番

  1. パッケージを最新の状態に更新←超重要❗❗
  2. 再起動(kernelもアップデートされる。iptablesなど、カーネルが原因でエラーになる)
  3. rootでログインしているので、作業ユーザーの作成
  4. タイムゾーンをasia/tokyoに変更する
  5. 日本語に変更する
  6. sudoの設定
  7. sshの設定
  8. auditのログが、rootのターミナルにめっちゃ流れてくる
  9. iptablesの設定
  10. gitのインストール
  11. AURの導入
  12. apache, PHP, Nginx, MySQLのインストール
  13. デスクトップ環境の設定
  14. VNCの設定

パッケージを最新の状態に更新

ギャラリーからダウンロードしたイメージは古いので、パッケージをアップデートしないと不整合が発生する。特にkernelが古いので注意だ❗(1周目は古いパッケージのままOpenSSHを更新してしまったので、gitか何かが壊れた。2周目はiptablesがインストールできなくて悩んだ←つまり今は3周目)

  1. pacman -Syy リポジトリの同期
  2. pacman -Syyu パッケージのアップデート

再起動

Kernelもアップデートされるので、再起動してアップデートされたKernelでブートする。
iptablesなど、Kernelに依存しているプログラムはkernelが原因のエラーになる。

shutdown -h now

タイムゾーンの設定

sudo timedatectl set-timezone Asia/Tokyo

詳しくは以下を参照
https://qiita.com/j8takagi/items/cc63ee5e9cfcb20fd244

日本語の設定

日本語フォントのインストール

sudo pacman -S otf-ipafont
sudo pacman -S noto-fonts noto-fonts-cjk noto-fonts-emoji noto-fonts-extra

システムのロケールを変更

ロケールとは、言語や文字コードに限らず、地域固有の設定(通貨や時刻表記、姓名の順番など)を指定するための設定。

/etc/locale.gen

  1. glibcをインストール sudo pacman -S glibc
  2. locale.gen を編集 sudo vi /etc/locale.gen
  3. ja_JP.UTF-8 をコメントアウトする
  4. 生成する sudo locale-gen
  5. 設定する sudo localectl set-locale LANG=ja_JP.UTF-8

/etc/locale.conf

sudo vi /etc/locale.conf

LANG=ja_JP.UTF-8

設定の確認

localeとタイプすると、現在のロケールを確認できる。

再起動

再起動するまでシステムのlocaleは変更されません。

sudo shutdown -h now

Gitのインストール

pacman -S git

LANGUAGELC_ALLの設定をしてないと、以下のエラーが出る。

perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
	LANGUAGE = (unset),
	LC_ALL = (unset),
	LANG = "ja_JP.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").

/etc/の設定ファイルをgitで保存しておく。rootで作業する。

sudo su -
cd /etc/
git init
git add .
git commit -m "NEW: ROMANCE DAWN"

作業ユーザーの作成

  1. 新規ユーザーの作成 useradd -m user_name -m を付けないと、ホームディレクトリを作らないっぽい
  2. ログインチェックをする。仮想マシンのIPアドレスをチェック ifconfig
  3. ログインできるか確認。ssh 192.168.64.2

sudoの設定

  1. sudoのインストール pacman -S sudo
  2. インストール項目をよくチェックすること。もし"sudo"だけでなく、"OpenSSL"が含まれているなら、まだパッケージのアップデートをしていない。先にパッケージ全体を最新にアップデートすること。
  3. yを押してインストールしたら、OpenSSLが上書きされて、sshdが起動できなくなる。OpenSSLを再インストールしようにも、pacmanが起動しない。詰んだ。これがArchか…

sshdの設定

/etc/sshd/sshd_configの末尾に以下の設定を追加

PermitRootLogin no
PasswordAuthentication no
PermitEmptyPasswords no
ChallengeResponseAuthentication no

各項目の詳しい意味は下記を参照
https://zenn.dev/tomoakinagahara/articles/ec44d1f0704a95

sshdの設定が安全か確認する

  1. telnetでログインできない(macOSの場合はgtelnet 192.168.64.2
  2. rootでログインできない ssh root@192.168.64.2
  3. パスワードが空だとログインできない
  4. パスワードのみでログインできない

AUR: Arch User Repository ヘルパーのインストール

公式リポジトリにあるパッケージは、pacman を使ってインストールするが、非公式のコミュニティによるリポジトリ (AUR: Arch User Repository) にあるパッケージは、 pacman でインストールできない。
そこで、 AUR のパッケージを入れられるようにするため AUR ヘルパーを導入する。yay が一番高機能らしいのでこれを使うことにする。
※pacmanでインストールできるPHPは最新バージョンのみである。異なるバージョンのPHPを導入したい場合は、AURからインストールする。

開発ツールのインストール

  1. sudo pacman -S base-devel
  2. sudo pacman -S git go
  3. cd
  4. mkdir work
  5. cd work
  6. git clone https://aur.archlinux.org/yay.git
  7. cd yay
  8. makepkg -si

これで yay のインストールは完了。動作するかチェック。(yayはsudoを使ってはいけない)

yay -S ttf-ricty

AUR パッケージの圧縮に使う xz はデフォルトでシングルスレッドであるため、 CPU をフルに活用するよう設定を変更する。 /etc/makepkg.conf の COMPRESSXZ の行を変更。

/etc/makepkg.conf
#COMPRESSXZ=(xz -c -z -)
COMPRESSXZ=(xz -T 0 -c -z -)

iptablesの設定

iptablesのインストール

sudo pacman -Syy
sudo pacman -S iptables

iptablesを起動させる

sudo systemctl start iptables

システム起動時に、iptablesを自動的に起動させる

sudo systemctl enable iptables

現在のiptablesのルールを保存する

sudo /sbin/iptables-save > /etc/iptables/iptables.rules

/etc/iptables/iptables.rulesに保存した設定が、/sbin/iptables-restoreされる。
https://wiki.archlinux.jp/index.php/Iptables
https://mako-note.com/ja/iptables/
https://wiki.archlinux.jp/index.php/Iptables

デスクトップ環境のインストール

ディスプレイマネージャのインストール

ディスプレイマネージャー(以下、DM)は、GNOME や  KDE は、DM を経由して画面に描画している。LightDM が良いらしい。

  1. sudo pacman -Syy まず最初にリポジトリの同期を行う。
  2. sudo pacman -S lightdm lightdm-gtk-greeter インストール
  3. ls /usr/share/xgreeters ファイルができていれば、インストール成功
  4. sudo systemctl enable lightdm LightDM の有効化 (スタートアップに登録)

ディスプレイ・サーバーのインストール

ログイン画面の表示やデスクトップ環境などの起動 (startx) を行うソフトウェア。

  1. sudo pacman -S xorg-server xorg-apps 依存関係は全部インストールする

Xfceのインストール

Xfce は、軽いと評判のデスクトップ環境。

  1. sudo pacman -S xfce4 xfce4-goodies インストール
  2. sudo localectl set-x11-keymap jp 日本語配列のキーボードを使用している場合
  3. cat /etc/locale.conf ロケールが日本語かチェック→"LANG=ja_JP.UTF-8"
  4. sudo reboot 再起動

動かない

ギャラリーからダウンロードした、ビルド済イメージでは、デスクトップ環境が起動できない。
多分、-vga virtioを起動オプションで指定しなければならないのだと思うが、変更方法がまだ分からない。

脚注
  1. Redhat系って素人向けって印象になってきた。Linuxが苦手な人でも使えるイメージ。それは決して悪い事ではない。個人的にもっと苦労したい。玄人というより苦労徒? ↩︎

  2. ちなみに、Parallelsのライセンスは14〜16まで持ってます。 ↩︎

  3. 2〜3日悩んだがブートできず。aarch64の問題なのか切り分けできずに諦めた。1敗目 ↩︎ ↩︎

Discussion