Skip to content

2025年業務PCセットアップ

This content is a draft and will not be included in production builds.

最近は cat でいいらしい。

Terminal window
cat archlinux-2025.02.01-x86_64.iso /dev/disk/by-id/usb-xxxx
run0 sync

従来の方法も使えるが遅い。

Terminal window
run0 dd bs=4M if=archlinux-2025.02.01-x86_64.iso of=/dev/sdc conv=fsync oflag=direct status=progress

boot

Terminal window
iwctl
timedatectl set-ntp true
  • nvme0n1p1 … EFI(ef00)
  • nvme0n1p2 … LUKS “cryptswap” (8309)
  • nvme0n1p3 … LUKS “cryptroot” (8309)
Terminal window
lsblk
mkfs.fat -F 32 /dev/nvme0n1p1
cryptsetup -y -v luksFormat /dev/nvme0n1p3
cryptsetup open /dev/nvme0n1p3 cryptroot
mkfs.btrfs -L rootfs /dev/mapper/cryptroot
mount /dev/mapper/cryptroot /mnt
mount --mkdir /dev/nvme0n1p1 /mnt/boot
pacstrap /mnt base btrfs-progs linux linux-firmware
genfstab -U /mnt >>/mnt/etc/fstab
arch-chroot /mnt
pacman -S intel-ucode
# amd-ucode
pacman -S iwd vi
bootctl --path=/boot install
vi /boot/loader/entries/arch.conf
vi /boot/loader/loader.conf
vi /etc/fstab
vi /etc/pacman.d/hooks/systemd-boot.hook
pacman -S --asdeps polkit # run0の実行等に必要
passwd
systemctl poweroff
Terminal window
systemctl enable fstrim.timer
systemctl enable btrfs-scrub@-.timer
hostnamectl set-hostname lufia-pc
vi /etc/systemd/network/20-wlan0.network # DHCP=yes
systemctl enable --now iwd.service
systemctl enable --now systemd-networkd.service
systemctl enable --now systemd-resolved.service
ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
hwclock --systohc
timedatectl set-ntp true
vi /etc/systemd/timesyncd.conf
vi /etc/locale.gen
locale-gen
systemctl enable --now systemd-homed.service
# GUIが無い時に困るのでlocale.confではなくユーザーごとに--languageでロケールを設定する
# システム全体で設定する場合はlocalectl set-locale LANG=en_US.UTF-8
homectl create lufia --member-of=wheel --language=ja_JP.UTF-8
pacman -S sudo
visudo
# LidSwitch
vi /etc/systemd/logind.conf

iwdは systemd-creds を使って暗号化プロファイルを作れるようになったらしい。試していない。

Secure sbctl の使い方はsbctlでセキュアブート環境を構築するに書いた。efibootmgr は使わないけれど、EFIエントリを操作するでみたように調査のため有用なので入れておく。

Terminal window
pacman -S sbctl efibootmgr
sbctl create-keys
sbctl enroll-keys -m
sbctl verify
sbctl sign -s FILE
vi /etc/pacman.d/hooks/systemd-boot.hook

TPMと連携してパスフレーズ入力を省略する。BitLocker recovery: known issuesによると、WindowsのBitLockerはPCR7+11らしいので、それと同じでいいか。TPMが変化するときの計算式とイベントも書いた。

In its default configuration on such systems, BitLocker binds to PCR 7 and PCR 11 if PCR 7 and Secure Boot are correctly configured.

Terminal window
pacman -S tpm2-tools
(optional) homectl update --member-of=wheel,input,tss lufia
systemd-cryptenroll /dev/nvme0n1p3 --tpm2-device=auto --tpm2-pcrs=7+11 [--wipe-slot=tpm2]
vi /etc/mkinitcpio.conf
mkinitcpio -p linux

[! Note] 今はsystemdに付属するコマンドで書いたように systemd-pcrlock を使う方が良いらしい?

更新するときはこっち

Terminal window
systemd-cryptenroll /dev/nvme0n1p3 --wipe-slot=tpm2 --tpm2-device=auto --tpm2-pcrs=7+11

それぞれの機能が何を防ぐのかは暗号化やセキュアブートが何を防ぐのかでまとめた。

wire 各種firmwareを入れないとVAIO筐体から音が鳴らせなかった。

Terminal window
pacman -S alsa-firmware sof-firmware
pacman -S --asdeps pipewire-alsa pipewire-pulse [pipewire-jack]
wpctl status
wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle

bluetooth

Terminal window
pacman -S bluez bluez-utils
vi /etc/bluetooth/main.conf
systemctl enable --now bluetooth.service
bluetoothctl
scan on
devices
connect E3:xx # HHKB
[agent] Passkey: 012345 # これをキーボードで入力

bluetoothctlでトラックパッドと接続する

sway

Terminal window
pacman -S sway wl-clipboard
pacman -S --asdeps polkit waybar mako swaybg swayidle swaylock brightnessctl
pacman -S --asdeps noto-fonts-cjk xorg-xwayland
pacman -S wofi slurp
systemctl --user enable --now mako.service
#pacman -S ibus-skk skk-jisyo ghostty
pacman -S fcitx5-mozc ghostty
homectl update lufia \
#--setenv GTK_IM_MODULE=ibus \
#--setenv XMODIFIERS=@im=ibus \
--setenv QT_IM_MODULE=fcitx # no 5 suffix
cat /var/lib/systemd/home/$USER.identity
#ibus-setup
#ibus list-engine
#ibus engine
#ibus engine skk
# exec ibus-daemon --xim(-x) --daemonize(-d) -r
# exec ibus-daemon -rxRd
# https://wiki.archlinux.org/title/IBus
pacman -S xdg-desktop-portal-wlr
mkdir -p ~/.config/sway
cp /etc/sway/config ~/.config/sway/

firefox

Terminal window
pacman -S firefox-i18n-ja
# MOZ_ENABLE_WAYLAND=1は不要
gsettings set org.gnome.desktop.interface gtk-key-theme Emacs
xdg-settings set default-web-browser firefox.desktop
# /usr/share/applications または .local/share/applications 以下のファイル

swap

Terminal window
cryptsetup -y -v luksFormat /dev/nvme0n1p2
cryptsetup open /dev/nvme0n1p2 cryptswap
mkswap /dev/mapper/cryptswap
systemd-cryptenroll /dev/nvme0n1p2 --tpm2-device=auto --tpm2-pcrs=7+11 [--wipe-slot=tpm2]
vi /boot/loader/entries/arch.conf
# options luks.name=<uuid>=cryptswap
# optionsは複数行書いても結合してくれる
vi /etc/fstab
# UUID=<uuid> none swap sw 0 0

cryptroot のLUKSヘッダをバックアップしておく。cryptswap のほうは紛失しても困らない。

Terminal window
cryptsetup luksHeaderBackup /dev/nvme0n1p3 --header-backup-file luks-vaio.img

gcc

Terminal window
pacman -S gcc make

iptables

Terminal window
cd dotfiles
run0 cp cfg/iptables/iptables.rules /etc/iptables/iptables.rules
run0 systemctl enable --now iptables.service

設定が正しいかどうかの確認はiptablesのconfigをテストする方法に書いた。

docker

Terminal window
pacman -S docker
pacman -Sd docker-buildx

AUR

Terminal window
pacman -S fakeroot debugedit

Flatpak

Terminal window
pacman -S git less go flatpak
pacman -S xdg-desktop-portal-gtk # Slackに必要?
# No such interface "org.freedesktop.portal.FileChooser" でエラーが出ていた
flatpak install com.slack.Slack
flatpak install com.visualstudio.code
flatpak install com.google.Chrome # Slackに必要
flatpak install md.obsidian.Obsidian
flatpak --user override --socket=wayland com.visualstudio.code

FlatpakのElectronアプリで日本語入力を行う方法

plan9portセットアップ

  • 1Password
  • (Argent X)
  • okta
  • Google
  • Slack
  • GitHub
  • gcloud
Terminal window
mkdir ~/.local/share/backgrounds

lid:on/lid:off設定

Terminal window
GOPATH=~ go install github.com/lufia/dotsync
git clone https://github.com/lufia/dotfiles.git
copy firefox bookmarks
create Obsidian Vault
run0 pacman -S udisks2
# systemctl enable --now udisks2.service は不要
run0 pacman -S github-cli jq
gh extension install lufia/gh-announce
# 既存の環境変数は/var/lib/systemd以下から読んで同じ値を設定する
homectl update lufia --setenv GNUPGHOME=$HOME/.local/share/gnupg

gpg

基本的にはGPG鍵束の復旧でマスターキー取り込みとサブキーの作成を行って、既存の鍵をGitHubにGPG鍵を登録するのように取り込めばいい。