あづみのメモ帳

SONY VAIO Pro 13にArch Linuxをインストールしてみた

(最終更新: )

以前SONY VAIO Pro 13にWindows 11をインストールしたが、このWindowsはいにしえのUSBオシロの動作確認のために32bitのWindows 10に上書きされた。その後、USBオシロが32bit環境でなくても動かせるようになったのでこの32bit環境は不要になった。今回は、32bitのWindowsを吹き飛ばすついでに、以前からやるやる詐欺を連発していた𝐴𝑟𝑐ℎ 𝐿𝑖𝑛𝑢𝑥 𝐼𝑛𝑠𝑡𝑎𝑙𝑙 𝐵𝑎𝑡𝑡𝑙𝑒を決行することにした。

インストールメディアの準備

公式ミラーからISOイメージをダウンロードし、すでに外付けSSDに用意してあったVentoyのフォルダにぶちこんだ。

ちなみにこのISOの項目選択画面はなぜかクソほど重いので、余計なキーは押さず画面が出たらEnterを押すだけに留めるとよい。

また、ISOが古いとPGP署名のエラーでパッケージがインストールできないことがあるので、最新のISOを使うことをおすすめする。

インストール

基本的に公式wikiのインストールガイドに従うだけなのだが、日本語版は若干情報が古い部分があるので英語版を参照したほうがいいかもしれない。他の記事を参考にする場合も公式ドキュメントを合わせて読むとよい。

以下は自分用のメモ。とりあえず動けばいいという構成。たぶんどこかしらにガバがある。

ライブ環境の設定

キーボードレイアウトをJISにする。

loadkeys jp106

Wi-Fiに接続する。

iwctl --passphrase (パスワード) station wlan0 connect (SSID)

一応pingでインターネットに接続できることを確認しておく。

ファイルシステムの準備

パーティションを切る。推奨の容量はESPが1 GiB、ルートが32 GiBらしい(日本語版だと残り全部とかいう何の役にも立たない表現だった)。スワップ領域も4 GiB求められているが無視した。もし必要になってもスワップファイルのほうが柔軟でよいと思われる。ルートは末尾に作った。

fdisk -l # 対象のドライブを確認
gdisk /dev/sda
# o     新規パーティションテーブル
# y     確認
# n     新規パーティション
# Enter パーティション番号: デフォルト
# Enter 開始セクタ: デフォルト(2048)
# +1G   終了セクタ: 開始セクタから1 GiB
# ef00  パーティションタイプ: ESP
# n     新規パーティション
# Enter パーティション番号: デフォルト
# -32G  開始セクタ: 末尾から32 GiB
# Enter 終了セクタ: デフォルト(末尾)
# Enter パーティションタイプ: デフォルト(8300)
# w     書き込み
# y     確認

フォーマットしてマウントする。ラベルをつけておくと後で幸せになれるかもしれない。

fdisk -l # 切ったパーティションを確認
mkfs.fat -F 32 -n SVP132ESP /dev/sda1 # いい感じのラベルをつけておくとrEFIndとかで判別しやすくなるかも?
mkfs.ext4 -L ArchRoot /dev/sda2
mount /dev/sda2 /mnt
mount -m /dev/sda1 /mnt/boot # -mはmkdir

本体のインストール

パッケージをインストールする。ミラーはインストール後の環境に引き継がれるが、どうせ自動更新するようにするので適当でいいかも。

reflector --save /etc/pacman.d/mirrorlist -p https -c JP -l 5 --sort age # ミラー設定
pacstrap -K /mnt base linux linux-firmware intel-ucode networkmanager msedit sudo # お好きなように

もしここでPGP署名のエラーが出た場合は、以下のように更新した後、もう一度pacstrapを実行する。

pacman -Sy archlinux-keyring

なお、この操作は禁じられている「部分的なアップグレード」で、本来はすべてのパッケージを更新するpacman -Suを続けて実行しなければならないが、archlinux-keyringだけバージョンが異なっていても不整合は起きないし、ライブ環境は壊しても問題ないし、そもそもRAMディスクの容量が足りず-Suはできないので、ここでは問題ない。

設定

基本設定

fstabを生成する。-L-Uか何も指定しないかはお好みで。

genfstab -L /mnt > /mnt/etc/fstab

インストールした環境に入る。

arch-chroot /mnt

タイムゾーン設定、ハードウェアクロックをUTCとして同期。

ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
hwclock --systohc

ロケール、キーボードレイアウト設定。

msedit /etc/locale.gen
# en_US.UTF-8とja_JP.UTF-8のコメントアウトを解除
locale-gen
echo LANG=ja_JP.UTF-8 > /etc/locale.conf
echo KEYMAP=jp106 > /etc/vconsole.conf

ホスト名を設定。

echo (ホスト名) > /etc/hostname

rootパスワードを設定。

passwd
# パスワード入力

ブートローダのインストール

ブートローダとしては、Windowsとのデュアルブートに対応するため、無難にsystemd-bootをインストールする。また、systemd-bootには同じESP以外から起動する機能はないので、USBメモリから起動したい時とかのためにrEFIndとEFI Shellのどちらかまたは両方もインストールしておく。rEFIndをインストールする際は、systemd-bootを後からインストールすることでUEFIのブートエントリでsystemd-bootが先に来るようにする。

pacman -S refind edk2-shell
refind-install
cp /usr/share/edk2-shell/x64/Shell.efi /boot/shellx64.efi
bootctl install

systemd-bootの設定を行う。最後に起動したエントリで起動するようにする。

echo default @saved >> /boot/loader/loader.conf

Arch Linux本体のエントリを作成する。ラベルを付けていたおかげでUUIDを書く必要がなく楽で保守性が高い。

# /boot/loader/entries/arch.conf
title Arch Linux
linux /vmlinuz-linux
initrd /initramfs-linux.img
options root=LABEL=ArchRoot rw

rEFIndのエントリも用意する。

# /boot/loader/entries/refind.conf
title rEFInd
efi /EFI/refind/refind_x64.efi

WindowsやEFI Shellは自動で検出されるため何も書かなくてよい。

Linux単品であればEFIブートスタブを使いたいところだが、このVAIOのUEFIは馬鹿でブートエントリを無視したり忘れたりするので、引数とかを埋め込める(?)Unified Kernel Imageみたいなのを使うべきかもしれない。他に有名なブートローダにはGRUB2があるが、融通の利かない遺物のためおすすめしない。systemd-bootは機能を絞っている代わりに高速かつ簡潔な設定ファイルで管理でき、rEFIndは自動検出機能、EFI Shellは手動操作によって設定なしで柔軟性を持たせられるので、これらを使えるようにしておけばだいたいなんとかなる。レガシBIOS? 知らん。

再起動

exit
umount -R /mnt
reboot

なお、環境によっては(?)chroot環境ではbootctl正しく動作しないことがあるようなので、起動できなかったらライブ環境に戻って頑張ってなんとかする。

インストール後の設定

これもだいたい公式wikiのガイドに従うだけでよい。自分用にまとめておく。

rootでログインし、まだGUIを導入していなくてコンソールが文字化けするのでLANG=Cで一時的に英語にする。

ユーザの追加

useradd -m -G wheel -s /bin/bash (ユーザ名)
passwd (ユーザ名)
# パスワード入力

sudoの設定

wheelグループのユーザがsudoを使えるようにする。

EDITOR=msedit visudo
# %wheel ALL=(ALL) ALL のコメントアウトを解除

保存したらrootから抜け、追加したユーザでログインし直す。LANG=Cをもう一度。

rootアカウントを直接使えないようにする。rootにログインしたままやるとsudoの設定を間違えていても気付けず詰む可能性がある。

sudo passwd -l root

ネットワーク

NetworkManagerを有効化し、Wi-Fiの設定を行う。

sudo systemctl enable --now NetworkManager
nmtui
# Wi-Fi設定

pacmanのミラー更新の自動化

Reflectorの設定を行う。インストール時に実行したときの引数をそのまま設定すればよいが、実はほぼ元々書いてあるままなので追加するのは地域指定くらい。

sudo msedit /etc/xdg/reflector/reflector.conf
# --save /etc/pacman.d/mirrorlist --protocol https --country Japan --latest 5 --sort age

タイマを有効化する。

sudo systemctl enable --now reflector.timer

デスクトップ環境の設定

Wayland対応で見た目が「普通」なKDE Plasmaを使う。ディスプレイマネージャは公式推奨らしく一緒に入ってくるSDDMを使う。日本語フォントはNoto CJKを使う。特に好きなわけではないが、英数フォントの選択肢にもNotoがあるので統一感を出すために選ぶ。意外とヒンティングがまとも。ついでにWindowsでお馴染みCascadia Mono/Codeも入れておく。

sudo pacman -S plasma-meta konsole dolphin noto-fonts-cjk ttf-cascadia-code
# フォントでnoto-fontsを選ぶ以外はデフォルト
sudo systemctl enable --now sddm.service

日本語入力

IMフレームワークとしてFcitx5を、IMエンジンとしてSKKを使う。レガシなX11環境を積極的に切り捨てるため、IMモジュール(互換レイヤ的なやつ?)のfcitx5-gtkfcitx5-qtはインストールしない。XWaylandも見捨てるためXMODIFIER=fcitxも設定しない。なお、もしIMモジュールを使用する場合でも、GTK_IM_MODULE=fcitxQT_IM_MODULE=fcitxといった環境変数はグローバルには設定しない(X11時代の記事に惑わされないよう注意)。

sudo pacman -S fcitx5 fcitx5-configtool fcitx5-skk

KDEシステム設定の「仮想キーボード」を開き、「Fcitx 5」を選択する。

systemsettings kcm_virtualkeyboard &
# Fcitx 5を選んで適用

KDEシステム設定の「入力メソッド」を開き、もろもろ設定する。

fcitx5-configtool & # 画面が遷移する

「入力メソッドオフ」から「キーボード - 英語」を消して「キーボード - 日本語」を追加し、「入力メソッドオン」に「SKK」を追加する。入力メソッドがレイアウトと一致しないという警告が上に出るので「修正」を押し、適用する。

Chromiumではchrome://flagsで「Preferred Ozone Platform」を「Auto」か「Wayland」に設定するとWaylandネイティブの入力ができるようになる。Microsoft EdgeではGUIに設定は無いが、設定ファイルを配置することで同様の効果が得られる(後述)。それ以外のElectronなどの場合はデスクトップエントリを編集するなどしてコマンドラインオプションを追加する。他にも違ったオプションが必要なこともあるらしい。

個人的な設定

Windowsフォントのインストール

Notoを使い続けるのは癪なのでWindows(後からインストールした)のフォントを拝借する。

sudo mount -rm /dev/sda2 /mnt/c/
sudo mkdir /usr/local/share/fonts/
sudo mkdir /usr/local/share/fonts/Windows/
sudo cp /mnt/c/Windows/Fonts/YuGoth*.ttc /usr/local/share/fonts/Windows/
sudo cp /mnt/c/Windows/Fonts/yumin*.ttf /usr/local/share/fonts/Windows/
sudo fc-cache --force

UIとかの設定

個人的な好みの設定をメモしておく。ちゃんと使うならdotfilesを用意しておくとかするのだろうが、遊ぶだけなのでGUIでぽちぽちする。

タスクバー的なやつを右クリック→「代替を表示…」→下の説明が「アイコンとテキストを表示するウィンドウバー」のやつ(上の名前は嘘)を選ぶ。

もう一度右クリック→「アイコンだけのタスクマネージャを設定…」

もう一度右クリック→「パネル設定を表示」→フローティングを無効にする。

KDEシステム設定

SKKの;でSticky ShiftとかEscで取り消しとかの設定はGUIではできないっぽい。

Microsoft Edgeのインストール

Windowsで使っている環境を同期できるようEdgeを使う。公式リポジトリには無いのでAURからインストールする。

pacman -S base-devel git
git clone https://aur.archlinux.org/microsoft-edge-stable-bin.git
cd microsoft-edge-stable-bin
makepkg -sirc
echo --ozone-platform-hint=auto > ~/.config/microsoft-edge-stable-flags.conf # Wayland対応

過去にあった不具合

archlinux-2024.12.01-x86_64.isoを起動しようとしたところ、以下のようなエラーが無限に出力され、起動することができなかった。

ACPI Error: No handler or method for GE xx, disabling event (20140827/evgpe-839)
ACPI Error: No installed handler for fixed event - PM_Timer (0), disabling (20140827/evevent-255)
ACPI Error: No installed handler for fixed event - PowerButton (2), disabling (20140827/evevent-255)
ACPI Error: No installed handler for fixed event - SleepButton (3), disabling (20140827/evevent-255)
ACPI Error: Could not disable RealTimeClock events (20140827/evxfevnt-243)

ブートエントリの選択画面で「e」を押し、カーネルパラメータにpci=hpiosize=0を追加することで起動できるようになった。pci=nomsi, pci=noaer, pci=nomm, pci=nommconfあたりは効果がなかった。acpi=offでもエラーは出なくなるが、キーボードやSSDを認識しなくなるので無意味だった。libata.force=noncqがないとSSDを認識しないみたいな情報があったが、そこは問題なかった。

毎回の起動時にこれを適用するには、arch.confoptionspci=hpiosize=0を追加すればよい。

archlinux-2025.06.01-x86_64.isoでは何もしなくても起動できるようになっていた。古いISOでインストール済の環境も、カーネルがアップデートされたのか同様に起動できるようになった。

あとがき

実用に耐えるかは怪しいが、とりあえず動くようにするだけであれば𝐵𝑎𝑡𝑡𝑙𝑒というほどでもない難易度だった。公式ドキュメントが充実しているというのはとてもありがたいことである。むしろ非自明な挙動の多いWindowsのインストーラ(使わないけど)やUbuntu等のインストーラのほうが難しい。

GUI環境についてはいろいろと選択肢があるが、自由()なLinuxの惨状を目の当たりにすると、改悪されまくったWindows 11でも最低限製品としての体裁は保たれているのだなという気持ちになってしまった。不自由なソフトウェアに依存することは決して素晴らしいことではないが、実用性が第一なので……。