Archlinux hyprland インストール
Windows11とディスクを分けてデュアルブート
systemd-bootはESP以外にあるディスクからEFIプログラムを起動できないため、EFISTUBの機能を利用することもできる
cf. https://wiki.archlinux.org/title/EFISTUB#Directly.2C_without_boot_manager
Windows側の準備
RTCのUTC化
reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TimeZoneInformation" /v RealTimeIsUniversal /d 1 /t REG_DWORD /f
cf. https://qiita.com/McbeEringi/items/23a2f254728f655f9f29
Archlinuxのインストールメディアを起動
ブートローダーにArchlinuxのロゴが出た場合はBIOSで起動している可能性アリ
UEFIモードで起動する
インストールメディアはメモリ上にデータを展開するので、起動後はUSBを抜いてもOK
beep音が煩い場合はmodprobe -r pcspkr
でオフにできる
インストール
cd /
キー配列を変更する
JIS配列のキーボードを使用している場合
loadkeys jp106
CapsLockをControlにする
cp /usr/share/kbd/keymaps/i386/qwerty/us.map.gz ./
gunzip us.map.gz
cat us.map | sed 's/Caps_Lock/Control/' > myus.map
loadkeys myus.map
pacmanのトラブル回避
pacman -S archlinux-keyring
reflector --latest 5 --sort rate --save /etc/pacman.d/mirrorlist
パーティションの作成
lsblk
cfdisk /dev/nvme0n1
# EFI → 8GB TypeにEFI System
# Swap → メモリx1.5GBくらい TypeにLinux Swap
# 残り → Linux Filesystem
lsblk # 確認
mkfs.fat -F 32 /dev/nvmen1p1
mkswap /dev/nvmen1p2
mkfs.ext4 /dev/nvme0n1p3
mount /dev/nvmen1p3 /mnt
mount --mkdir /dev/nvmen1p1 /mnt/boot
swapon /dev/nvmen1p2
lsblk
(EFIパーティションをWindowsから消す方法)
> diskpart
list disk
sel disk N
sel partition N
delete partition override
/etc/pacman.conf
を編集してmultilibリポジトリを有効にする
pacstrap
pacman -Sy archlinux-keyring
pacstrap -K /mnt base linux linux-firmware efibootmgr sudo vim git base-devel networkmanager bluez bluez-utils amd-ucode nvidia nvidia-utils linux-headers lib32-nvidia-utils
amd/nvidia関係は適切なパッケージを選択
hyprlandはNVIDAのGPUを公式でサポートしていないので、Wikiの手順を利用する
nvidia
/nvidia-utils
/linux-headers
/nvidia-dkms/
lib32-nvidia-utils`あたりはhyprlandをNvidiaGPUで動作させるために必要らしい
設定
genfstab /mnt >> /mnt/etc/fstab
arch-chroot /mnt
ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
hwclock --systohc
vim /etc/locale.gen # en_US.UTF8とja_JP.UTF8の行のコメントアウトを外す
# 仮に英語でしかLinuxを使わなくてもja_JP.UTF-8のコメントアウトを外すこと(FireFoxなどの日本語表示が中華フォントになる
locale-gen
echo LANG=en_US.UTF8 >> /etc/locale.conf
echo ホスト名 > /etc/hostname
passwd
useradd -m -g wheel ユーザー名
passwd ユーザー名
vim /etc/sudoers # Defaults env_keep += "HOME" と %wheel ALL=(ALL:ALL)
bootctl install
vim /boot/loader/loader.conf
# default arch.conf
# timeout 0
# console-mode keep
# editor no
cat /etc/fstab > /boot/loader/entries/arch.conf
# title Arch Linux
# linux /vmlinuz-linux
# initrd /amd-ucode.img
# initrd /initramfs-linux.img
# options root=PARTUUID=*-*-*-*-* rw resume=PARTUUID=*-*-*-*-*
# options nvidia_drm.modeset=1
# options quiet loglevel=0 splash
vim /etc/mkinitcpio.conf
# MODULESにresumeとnvidia nvidia_modeset nvidia_uvm nvidia_drmを追加(resumeはハイバネート用)
# base udevをsystemdに置き換えると起動が高速化されるらしい?
mkinitcpio -P
nano /etc/pacman.conf
# Color と VerbosePkgLists と ParallelDownloads=5 の行の # を外す
echo nameserver 127.0.0.53 >> /etc/resolv.conf # DNSの設定
systemctl enable NetworkManager bluetooth
exit
reboot
ディスプレイマネージャーから起動する場合、.xprofile
の最後にsleep 1
を書かないとうまく起動しない場合がある。
sleep 1
Tips: 日本語表示の問題を解消する
この設定例ではOSの言語設定をen_US.UTF-8にしています。基本的にスクリーンバッファのターミナルは日本語フォントの表示に対応していないため、コンソールで文字が読めなくなってしまうためです。
しかし、GUIアプリなどでの漢字などの文字のレンダリングは文脈より判断される言語によってグリフを切り替えて表示するため、日本語を優先しないと中華フォントで漢字が表示されてしまいます。
Firefoxなどでは下記画像の設定を書き換えるとたいていうまくいきます。
WMの中でだけLANGを設定することがおすすめです。
Caps_lockをControlにする
ディスクにインストール後にもう一度実行して永続化する
mkdir -p /usr/local/share/kbd/keymaps
cp /usr/share/kbd/keymaps/i386/qwerty/us.map.gz /usr/local/share/kbd/keymaps/personal.map.gz
gunzip /usr/local/share/kbd/keymaps/personal.map.gz
vim /usr/local/share/kbd/keymaps/personal.map
Caps_lockをControlに変更
vim /etc/vconsole.conf
KEYMAP=/usr/local/share/kbd/keymaps/personal.map
再起動後の設定
yayのインストール
AURヘルパー pacmanコマンドを打つところを全て置き換えて問題ない
git clone https://aur.archlinux.org/yay
cd yay
makepkg -si # インストール
cd ..
rm -rf yay
yay
pacman.confの設定変更
sudo reflector --country 'Japan' --age 24 --protocol https --sort rate --save /etc/pacman.d/mirrorlist
mdnsの設定
これで、hostname.localみたいなのが解決できるようになる
systemctl --now enable systemd-resolved
# /etc/NetworkManager/NetworkManager.conf ファイルを編集し、[main] セクションに以下のエントリーを設定します。
# dns=systemd-resolved
# NetworkManager サービスを再読み込みします。
systemctl reload NetworkManager
.xprofile
Hyprland側に適用させたい環境変数は.xprofile
に書けば全部読みこんでくれる。
hyprland.conf
に書いてもいいけど、swayなどでも使いまわせてよい。
ディスプレイマネージャーから起動する場合、.xprofile
の最後にsleep 1
を書かないとうまく起動しない場合がある。
sleep 1
ディスプレイマネージャー
基本的にgettyでログインしてHyprlandコマンドを実行するだけでログインができるが、任意のディスプレイマネージャーを使う方法もある
yay -S greetd greetd-tuigreet
[terminal]
# The VT to run the greeter on. Can be "next", "current" or a number
# designating the VT.
vt = 2
# The default session, also known as the greeter.
[default_session]
# `agreety` is the bundled agetty/login-lookalike. You can replace `/bin/sh`
# with whatever you want started, such as `sway`.
# command = "agreety --cmd /bin/sh"
command = "tuigreet -t -r --remember-session --asterisks"
# The user to run the command as. The privileges this user must have depends
# on the greeter. A graphical greeter may for example require the user to be
# in the `video` group.
user = "kat0h"
現在自分の環境で入れているパッケージの一覧
pacman -Qe | awk '{print $1}' | xargs | wl-copy
alacritty autotiling base base-devel bat blueman bluetuith bluez bluez-utils brightnessctl btop chezmoi clang cliphist cmake cups cups-browsed discord dmenu duf dunst efibootmgr eog evince fcitx5 fcitx5-configtool fcitx5-gtk fcitx5-mozc fcitx5-qt fcitx5-skin-fluentdark-git fcitx5-skk ffmpeg ffmpegthumbnailer firefox firefox-i18n-ja font-manager foot fzf gauche gcc ghc gimp git git-delta git-filter-repo github-cli gnome-commander gnome-disk-utility go google-chrome gparted greetd greetd-tuigreet grimshot gst-libav gst-plugins-ugly gtk-engine-murrine gucharmap gvfs-smb helvum htop httpie hypridle hyprland-git hyprlock hyprprop-git hyprutils-git hyprwayland-scanner-git inetutils inkscape intel-media-driver intel-ucode iotop iwd jq keeweb-desktop-bin kitty lazygit libvncserver linux linux-firmware linux-pf llvm make mako man-db man-pages mc mpv nano nautilus nemo nemo-preview neofetch neovim-nightly-bin network-manager-applet networkmanager networkmanager-l2tp noto-fonts noto-fonts-cjk noto-fonts-emoji noto-fonts-extra nwg-look nyancat octopi openldap papirus-icon-theme pavucontrol pipewire pipewire-alsa pipewire-audio pipewire-jack pipewire-pulse pipewire-session-manager polkit-kde-agent pop-icon-theme portaudio powertop qbittorrent qt5-wayland ranger rclone remmina rhythmbox ripgrep rsync rustup selectdefaultapplication-git slack-desktop sof-firmware spotify-launcher spotify-tui spotifyd steam strongswan sudo sushi sway-git swaybg swayidle swaylock sysstat systemd-ui tailscale tcc thunar tigervnc tlp tmux tokei ttf-dejavu-nerd tumbler unarchiver unzip vim visual-studio-code-bin vulkan-tools vulkan-validation-layers w3m waybar waylock waypipe wayvnc wdisplays wf-recorder wget wireplumber wl-clipboard wl-mirror wmenu wofi xdg-desktop-portal-hyprland-git xdg-terminal-exec-git xorg-xeyes xorg-xhost xorg-xwayland yay yay-debug zsh
細かいパッケージの設定
fcitx5
Wayland環境で苦労するのはだいたいここ。
Hyprlandは.xprofile
を自動で読み込むので、設定したい環境変数はここに設定しておくと幸せになれるかも。
基本的にココらへんの環境変数は抑えておきたい
export XDG_SESSION_TYPE=wayland
export MOZ_ENABLE_WAYLAND=1
export QT_QPA_PLATFORM="wayland;xcb"
export XDG_CURRENT_DESKTOP=sway
export XDG_SESSION_SESSION=sway
export LIBSEAT_BACKEND=logind
export GDK_DPI_SCALE=1
export QT_SCALE_FACTOR=1
export WLR_DRM_NO_MODIFIERS=1
export GTK_IM_MODULE=fcitx5
export QT_IM_MODULE=fcitx5
export XMODIFIERS=@im=fcitx5
asdf
git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.14.0
fcitx5の設定
GUIでSKKを追加して、アドオン設定画面からSticky Shiftを有効化
cf. https://mako-note.com/ja/ibus-skk-stickyshift/
hyprland周りの設定
git clone https://github.com/kat0h/dotfiles ~/.local/share/chezmoi
chezmoi apply
通知デーモン
dnustを使っている
Terminal=trueが指定された.desktopファイルを実行できない
yay -S xdg-terminal-exec-git
echo org.codeberg.dnkl.foot.desktop >> ~/.config/xdg-terminals.list
mdns
https://0sn.net/posts/20230811/archlinux-avahi/ ←いまはこちら
cups
Linux用の印刷デーモン
yay -S cups cups-browsed
systemctl enable --now cups
systemctl enable --now cups-browsed
CreateIPPPrinterQueues All
lpstat -tv # 出るはず
http://localhost:631/ にアクセスするとcupsの管理ページを開ける
プリンターによってはドライバがない場合もあるが、その場合ipアドレスやmDNSによるアドレスを指定してippを使える場合がある
この場合、ドライバはGenericを使う
cups.socketを代わりに有効化すると必要な時にのみcupsが有効化されるらしいが、localhost:631
にアクセスしてもcupsが起動してくれないので、要検証
cf. https://qiita.com/tsuchm/items/783bcb07c6a0a4e1db63
(工研部員向け)
部室のレーザープリンターは直接ipアドレスを指定してリクエストを送るとLinuxからでも印刷できます。
spotifyd
spotifyのスピーカーとして振る舞う
yay -S spotifyd
[global]
username = ""
password = ""
device_name = "Thinkpad"
device_type = "computer"
# The audio bitrate. 96, 160 or 320 kbit/s
bitrate = 320
cache_path = "~/.cache/spotifyd"
no_audio_cache = false
systemctl enable --now --user spotifyd
spotify-tuiを使うとターミナルからspotifyを操作できる
yay -S spotify-tui
---
client_id:
client_secret:
device_id:
port: 8888
spt
FireFox
CJKフォントを日本語のグリフで表示する
FireFox側の設定でページの表示言語に日本語を追加すると文字が中華フォントでなく日本語のフォント表示される。
(フォントを選ぶ際に中国語のフォントが優先的に表示されてしまうらしい)
Waylandバックエンドで動作させる
MOZ_ENABLE_WAYLAND=1
上の環境変数を~/.xprofile
に追加する
Google Chrome
Waylandバックエンドで動作させる
google-chrome-stable --ozone-platform-hint=wayland --gtk-version=4 --enable-features=TouchpadOverscrollHistoryNavigation --enable-wayland-ime
# Waylandで動作させる
--ozone-platform-hint=wayland
# fcitx5の入力を有効にする
--enable-wayland-ime
--gtk-version=4
# トラックパッドのジェスチャによるページ遷移を有効にする
--enable-features=TouchpadOverscrollHistoryNavigation
Desktopファイルを変更する
~/.local/share/applications/
下に任意のapp.desktop
ファイルを配置するとdrunなどが勝手に認識してくれる。
cf. https://wiki.archlinux.jp/index.php/デスクトップエントリ
VPN
大学(電通大)のVPNに接続するのにかなり苦労したので
電通大のVPNはl2tp/ipsec
yay -S strongswan networkmanager-l2tp
mkdir -p /var/lib/ipsec/nss # ↓が失敗したときだけ
systemctl enable --now strongswan-starter xl2tpd
↓VPNの設定は下記のようにする
Machine Authentication
Type: Pre-shared key(PSK)
Advanced
Remote ID: 0.0.0.0 # 未検証
Phase1 Algorithms: aes128-sha1-modp1024
Phase2 Algorithms: aes128-sha1
Enforce UDP encapsulation
これで接続すれば大丈夫なはず
samba
ファイル共有にsambaを使う
yay -S samba
sudo wget "https://git.samba.org/samba.git/?p=samba.git;a=blob_plain;f=examples/smb.conf.default;hb=HEAD" -O /etc/samba/smb.conf
nvim /etc/samba/smb.conf
# log file = /var/log/samba/%m.log
pdbedit -a -u samba_user
smb://*.*.*.*/USERNAME
rclone
sshfsの代替
rclone mount kat0hhome:/home/USERNAME kat0hhome --daemon
リモートデスクトップ
Waypipe
waypipe ssh kat0h@100.123.205.90 nautilus
ホスト・ゲスト共にwaypipeが必要
Hyprlandが起動していなくても利用可
wayvnc
vncサーバー
wayvnc 0.0.0.0
あらかじめHyprlandが起動していることが条件
WLR_BACKENDS=headless Hyprland
で画面なしでHyprlandを起動できるらしいが、マウス・キーボードがうまく動作しない
Hyprlandが起動しているがsshでしか繋げられず、wayvncの起動に失敗する場合はHYPRLAND_INSTANCE_SIGNATURE
環境変数を設定する
HYPRLAND_INSTANCE_SIGNATURE=$(ls -rt $XDG_RUNTIME_DIR/hypr/ | tail -n1) hyprctl dispatch exec wayvnc 0.0.0.0
この技を使うとhyprctlを任意のシェルから叩けるようになる
スクリーンシェアリング
yay -S xdg-desktop-portal-hyprland-git xdg-desktop-portal-gtk
ffmpegthumbnailers
電源管理
tlpよりかは、こちらのほうがいいかも(Gnomeでも使える)
yay -S power-profiles-daemon
CHUWI MiniBook X n100
コンソールを回転させる
echo 1 > /sys/class/graphics/fbcon/rotate_all
setfont ter-128b
カーネルパラメータに追加すると永続化できる
fbcon=rotate:1
タブレットモード
素晴らしいユーティリティがある
git clone https://github.com/petitstrawberry/minibook-support
cd minibook-support
git switch feature/#3-minibook-x
make
sudo make install # systemdのサービスが登録される
ただし、Linuxのカーネル6.8では動作しません(つまりUbuntu 24.04の場合カーネルを最新のものにする必要がある)
キーボードとタッチパッドが反応しなくなる
裏蓋を外し、バッテリーのコネクタを取り外す
タッチパネルの動作がおかしい
Windowsでタッチパネルのドライバーをインストールし直す
(もしくはWindowsを再インストールする、もしくはCMOSクリア※未検証)
画面が描画されなくなる(液晶が破壊されたような表示になる)
特定のカーネルバージョンで起こる
最新のカーネルを使うかダウングレードする
スリープからの復帰時に起こる可能性もある
Tips
pacman
自分で入れたパッケージの一覧を表示
pacman -Qs
パッケージの情報を表示
pacman -Qi <> # 情報
pacman -Fl <> # パッケージに含まれるファイル
直近でインストールしたパッケージの一覧
cf. https://bbs.archlinux.org/viewtopic.php?id=5377
Discussion