はじめてArch Linuxをセットアップしてみた
インストール
インストールガイド通りにすれば問題ない。80%だけインストールガイド通りにすれば問題あり。
GRUB
この記事で正しいコマンドを発見。
ただし、arch-chroot /mnt
で/mnt
に移動してからにした方がやや楽になる。でないとgrub-install: error: failed to get canonical path of
airootfs´.`のようなエラーが出るかもしれない。(参考)
間違い
間違いその1:イーサネットケーブルをちゃんと入れないこと
-
ping archlinux.org
->Temporary error in name resolution
-
systemd-resolved(名前解決)が機能していないと錯覚
- systemctlで調べるとちゃんと機能していることに気づく
- このスレッドをみてdhcpcdをいじってみるが、効果なし
間違いその2:EFIパーティションは割当て済みと錯覚
レイアウトの例を見て、fdisk -l
の出力に似ているからスルー(かつてUbuntuをインストールしたこともあり、レイアウトはその時にできたかと結論を出す):
/dev/sda -> 119GB
/dev/sdb -> 14.4GB
/dev/sdb1 Boot なんちゃらかんちゃら
これで
/dev/sda
は/dev/root_partition
で、/dev/sdb
はスワップで、/dev/sdb1
が/dev/efi_system_partition
と錯覚
当時、/dev/sdb
がインストール用USBを指しているなんて考えもしなかった
間違いその3:ルートユーザーのパスワードを設定しないこと
- 第3.7ステップをスルー
-
GRUBで起動時に
root
にログインできない - 同時にGRUB段階きたので、インストールシェルに戻るにはどうすればいいかわからず
- 忘れてしまった root パスワードをリセットするを読んで、GRUBカーネルパラメータでシェルに帰京
- 無事
passwd
インストール後
ネットワーク接続
- NetworkManagerインストール
-
systemctl start NetworkManager
でネットワークマネージャを起動
ユーザー設定
新しいユーザを登録:ユーザー管理
その時点で新ユーザーはsudo
コマンドが使えないことに気づき、visudoで/etc/sudoers
を編集し、新ユーザにsudo
使用の権利を与える:
- (@keitti73さんにコメントで教えていただいたように)
export EDITOR=vim
でvisudo
をvim
に対応させる(デフォルトでvi
になっている) visudo
-
#%sudo ALL=(ALL) ALL
を非コメント化 - ユーザを
sudo
グループに追加
GUI設定
- Xorgをインストール
-
xinitをインストールし、
startx
でXorgを起動 - まだシェルに馴染んでいないと感じ、当分ウインドーマネージャーのインストールを断念
次に、Swayというi3風タイル型ウィンドーコンポジたをダウンロードした。
ターミナルエミュレータ
最初はtmux
をそのまま使っていたが、Nerd Fontsとリガチャーが恋しくなりkittyにstarshipを追加した。
オーディオ設定
公式Wikiに記載されているどおりにalsa-utils
をダウンロードし、alsamixer
でミュートを解除してから$ speaker-test -c 2
で音はヘッドホンに届いていると確認。だが、ブラウザーで動画を再生しても音はしない。
そこでpulseaudio
でPulseAudioをインストールするとなぜか上記の問題が消える。
Neovimのインストール
Kickstart.nvimを使いたいのでNeovimをソースからダウンロードし、latest
かnightly
をチェックアウトしないといけない。
GitHubレポジトリをクローンするためにSSHをインストール:
- opensshをインストール
- GitHubのドキュメンテーションを参考にSSHキーを生成
SFTP設定:
-
間違った情報を含む記事を信用してしまい、2時間を無駄に
-
-s /usr/bin/nologin
でSFTPユーザーにシェルへのアクセスを与えないとパスワードによるSSH承認ができなくなる(参考)
-
- 自分のMacから
sftp <ユーザ名>@<IPアドレス>
で無事接続
SFTPでパブリックキーを自分のMacに送信し、GitHubアカウントに追加
Neovimをクローンし、INSTALL.mdでインストール。
fcitx5
日本語入力はfcitxではなくここで参考になったのはビデカメさんの記事
アップデートをもらうのはfcitx5
のみだから。
また、「fcitx5」パッケージではなく、fcitx5
にくわえて便利なコンフィグ・問題診断ツールを備える「fcitx5」をインストールしましょう。他に日本語対応のfcitx5-mozc
をインストールする:
sudo pacman -S fcitx5-im fcitx5-mozc
次に~/.xprofile
ファイルを作成し、内容を下記にする。これでXを使えばfcitx5も機能するはずだ。
GTK_IM_MODULE=fcitx
QT_IM_MODULE=fcitx
XMODIFIERS=@im=fcitx
さらに、fcitx5がkittyで機能するように次の環境変数も追加する:
...
GLFW_IM_MODULE=ibus
fcitx5の自動起動
startx
でウィンドーマネージャを起動すると~/.xinitrc
が読み込まれるので、~/.xinitrc
からfcitx5を起動する。たとえば:
# デフォルトのウィンドーマネージャをswayにする
session=${1:-sway}
# 先にfcitx5を起動する
fcitx5 & exec $session
注意点:
-
exec
の場合、複数の命令をつなげるにはexec
キーワードの前に書かないといけない -
fcitx5
を繋げず起動させるとウィンドーマネージャが立ち上がらない
caps lockで言語を切り替える
sway
~/.config/sway/config
に次を追加:
input "type:keyboard" {
xkb_options caps:super
}
X
参考:https://qiita.com/macinjoke/items/746c0c0adb74cfdeb9e7
要は:
-1. 言語切り替えしても文字大小が変わらないためにXmodmapを使ってcaps lockキーがWindowsキー(すなわち「Left Super」か「Super_L」)のkeysymを発するようにする
1. $ xmodmap -pke > ~/.Xmodmap
で現在のキーボードコンフィグを~/.Xmodmap
に出力
2. ~/.Xmodmap
の冒頭にremove lock = Caps_Lock
を入力することでcaps lockの切り替え効果を無効にする
3. xev | grep keycode
でcaps lockキーのキーコードを確認(Waylandならxev
ではなくwev
):caps lockのキーコードは66
4. ~/.Xmodmap
にkeycode 66
の行を見つけ、keycode 66 = Super_L
に変更
2. fcitx5-configtool
のほうで切り替えキーを「Left Super」にする(caps lockキーを押すだけでOK)
最後に、再起動する際に~/.Xmodmap
が読み込まれるように~/.xprofile
を変更する:
[[ -f ~/.Xmodmap ]] && xmodmap ~/.Xmodmap
Swayに関する警告
2024年4月6日時点でsway
はまだポップアップをサポートしていないので、一旦sway
を削除しsway-im
に置き換えた。
フォント
コード:FiraCode Nerd Font Mono
その他:Noto
$XDG_CONFIG_HOME/fontconfig/fonts.conf
($XDG_CONFIG_HOME
はデフォルトで~/.config
に等しい)を作成し、中身はフォント設定/サンプルの日本語コンフィグと鮮明なフォントコンフィグの組み合わせになっている。
Anki
最初はAURからanki
パッケージをインストールしたが、ユーザー認証の際にAnkiが繰り返しクラッシュしていたため、直接バイナリをダウンロードすることにした。
ただし、日本語版ArchWikiでは、バイナリをインストールしたい場合anki-official-binary-bundle
がいいと記述されてあるが、このパッケージはもう存在しない。代わりにanki-bin
を使っている。
Android
Rust製ゲームエンジンのbevyによるAndroid向けのゲーム開発のためにAndroid SDKとAndroid Emulatorをダウンロードした。ただ、どうしてもAndroid Studioの使用は避けたかったため、Arch Wikiに載っている手順を踏んでbevyのAndroid向け模範プロジェクトを動かした。
Android システムイメージのところまでいくだけで、実機にアプリ搭載することができたが、それから多少手こずってしまった箇所があり、それらを紹介したい。
- エミュレータを動かすにはシステムイメージを用意しないといけない
- システムイメージのダウンロードには sdkmanager と avdmanager が必要
-
sdkmanager
でシステムイメージをダウンロードし、次にavdmanager
で先のシステムイメージを基にエミュレータの実行できるAVDデバイスを生成 -
emulator @<デバイス名>
を実行
5.libbsd
とVulkan
をインストールする必要があるかも
最後にクローンしたbevyレポジトリからcargo apk run -p bevy_mobile_example
を実行すれば模範アプリは自動的にエミュレータに接続する。
…と思ったらVulkanから使用しているNVidia GPUドライバーとの互換性がないというエラーがきた。そこでArchのデフォルトNVidiaドライバーの「nouveau」はOpenGLやVulkanをサポートしないとやっとわかった。
プロプライエタリNVidiaドライバーをインストールしたら、エミュレータがちゃんと立ち上がる。
備忘録
環境変数はどこから設定されたか表示
ZSHならzsh -xl
でシェル起動時の流れを再現し、表示できる。ただ、文字は大量に溢れ、grepにパイプできないため、事前にscript <ファイル名>
でファイルに出力を書き込むがいい。
ディスプレイ情報を表示
- Xのままならxorg-xrandrをインストールして
xrandr --listmonitors
を実行 - Swayなら
swaymsg -t get_outputs
GPU情報
lspci -v | grep -A1 -e VGA -e 3D
xrandrでデュアルディスプレイを設定
-
xrandr --listmonitors
でディスプレイの名称を確認 xrandr --output <画面1> --primary --auto --output <画面2> --auto --right-of HDMI-1
- 上記を
~/.xinitrc
に追加し、Xウィンドーマネージャ起動時に設定を反映してもらう
awesomeでスクリーンショットを撮る
- Shutterをインストール
-
~/.config/awesome/rc.lua
に次のグローバルキーバインドを追加:
-- Screenshots
awful.key({}, "Print", function()
awful.spawn.with_shell(terminal .. " -e nohup shutter &")
end, { description = "take screenshot", group = "client" }),
awful.key({ "Shift" }, "Print", function()
awful.spawn.with_shell(terminal .. " -e nohup shutter -s &")
end, { description = "take interactive screenshot", group = "client" })
- `nohup shutter &`じゃないとターミナルが開き、邪魔になる
swayでスクリーンショットを撮る
# 全画面のスクリーンショットを撮る
bindsym Print exec grim -t jpeg ~/screenshots/$(date +%Y-%m-%d_%H-%m-%s).jpg
# 画面の一部を取り込む
bindsym $mod+Print exec grim -t jpeg -g "$(slurp)" ~/screenshots/$(date +%Y-%m-%d_%H-%m-%s).jpg
swayでキーリピート速度を調整
input type:keyboard {
repeat_delay 200
repeat_rate 30 # Hz(高いほうが早い)
}
øみたいな変な文字を出力
一番簡単な方法はコンポーズキーを設定する方法だ。たとえば、メニューキーをコンポーズキーに設定するにはターミナルにsetxkbmap -option compose:menu
を書けばいい。
この変更のセッション間の保持は、~/.Xmodmap
を編集すれば簡単に設定できるだ。例えば、メニューキーをマップしたければ:
...
keycode 135 = Multi_key
...
keycode 135
はメニューキーに相当するのに対し、Multi_key
はコンポーズキーに相当する。
Xmodmapの使用法はcaps lockで言語を切り替えるをご参照ください。
Discussion
で環境変数を変えるとvisudoをvimで開けると思います