Skip to content

Instantly share code, notes, and snippets.

@buzztaiki
Last active January 9, 2026 16:47
Show Gist options
  • Select an option

  • Save buzztaiki/8eb0cb2fbcb16e7411d7ab9f56d15e8a to your computer and use it in GitHub Desktop.

Select an option

Save buzztaiki/8eb0cb2fbcb16e7411d7ab9f56d15e8a to your computer and use it in GitHub Desktop.
Dynabook に ArchLinux をインストール 2026

Dynabook に ArchLinux をインストール 2026

仕事用のPCにLinuxを入れて良い許可が出たから入れたメモ (最初は MacBook を一年半くらい使って、mac が嫌になって Windows + WSL をもう一年半くらい使っていた)。

構成は大体こんな感じにした:

  • Btrfs + zstd compression
  • dm-crypt で暗号化 + ssd trim 有効化
    • Btrfs で fsencrypt が使えれば systemd-homed でも良かったけど、まだ未対応。
    • ext4 なら fsencrypt が使えるけど、ディスク容量が心許無いから btrfs にしたかった。
  • Windows Bootloader と Recovery は残す
  • Windows Data Partition は全部削除
  • Bootloader はいつも通りに systemd-boot
  • /boot は xbootldr + ext4

Links

準備

WiFi

# iwctl
[iwd]# station list
[iwd]# station wlan0 get-networks
[iwd]# station wlan0 connect <your-ap>
[iwd]# station wlan0 show

SSH

root@archiso ~ # mount /dev/sda2 /mnt
root@archiso ~ # cat ~/.ssh/id_ed25519.pub >> ~/.ssh/authorized_keys

後はローカルPCからSSH接続して作業する。 基本は https://wiki.archlinux.org/title/Installation_guide に従うだけ。

インストール

パーティショニング

root@archiso ~ # fdisk -l /dev/nvme0n1
...

Device             Start        End   Sectors   Size Type
/dev/nvme0n1p1      2048     534527    532480   260M EFI System
/dev/nvme0n1p2    534528     567295     32768    16M Microsoft reserved
/dev/nvme0n1p3    567296  970153983 969586688 462.3G Microsoft basic data
/dev/nvme0n1p4 970153984  972181503   2027520   990M Windows recovery environment
/dev/nvme0n1p5 972181504 1000212479  28030976  13.4G Windows recovery environment

root@archiso ~ # gdisk /dev/nvme0n1
GPT fdisk (gdisk) version 1.0.10

...

root@archiso ~ # lsblk -o+PARTLABEL,PARTTYPENAME /dev/nvme0n1
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS PARTLABEL                    PARTTYPENAME
nvme0n1     259:0    0 476.9G  0 disk
├─nvme0n1p1 259:1    0   260M  0 part             EFI system partition         EFI System
├─nvme0n1p2 259:2    0    16M  0 part             Microsoft reserved partition Microsoft reserved
├─nvme0n1p3 259:3    0     1G  0 part             linux_boot                   Linux extended boot
├─nvme0n1p4 259:4    0 461.3G  0 part             linux_root                   Linux root (x86-64)
├─nvme0n1p5 259:5    0   990M  0 part             Basic data partition         Windows recovery environment
└─nvme0n1p6 259:12   0  13.4G  0 part             Basic data partition         Windows recovery environment

dm-crypt

cryptsetup --allow-discards --persistent refresh root で SSD の trim を有効化する。

root@archiso ~ # cryptsetup -v luksFormat /dev/disk/by-partlabel/linux_root
root@archiso ~ # cryptsetup open /dev/disk/by-partlabel/linux_root root
root@archiso ~ # cryptsetup --allow-discards --persistent refresh root

root@archiso ~ # cryptsetup status root
/dev/mapper/root is active.
  type:    LUKS2
  cipher:  aes-xts-plain64
  keysize: 512 [bits]
  key location: keyring
  device:  /dev/nvme0n1p4
  sector size:  512 [bytes]
  offset:  32768 [512-byte units] (16777216 [bytes])
  size:    967456768 [512-byte units] (495337865216 [bytes])
  mode:    read/write
  flags:   discards

フォーマット

root@archiso ~ # mkfs.ext4 -L linux_boot /dev/disk/by-partlabel/linux_boot

root@archiso ~ # mkfs.btrfs -L linux_root /dev/mapper/root

root@archiso ~ # mount /dev/mapper/root /mnt
root@archiso ~ # btrfs subvolume create /mnt/@{root,log,cache,home,swap}
root@archiso ~ # btrfs filesystem mkswapfile --size 32g /mnt/@swap/swapfile
root@archiso ~ # umount /mnt

root@archiso ~ # lsblk --fs /dev/nvme0n1 -o+PARTLABEL
NAME        FSTYPE      FSVER LABEL       UUID                                 FSAVAIL FSUSE% MOUNTPOINTS PARTLABEL
nvme0n1
├─nvme0n1p1 vfat        FAT32 ESP         06B5-EC40                                                       EFI system partition
├─nvme0n1p2                                                                                               Microsoft reserved partition
├─nvme0n1p3 ext4        1.0   linux_boot  4e1b15e8-1206-464f-8c84-e61db60b38fa                            linux_boot
├─nvme0n1p4 crypto_LUKS 2                 91592578-8a0a-4699-8af7-8d2478f9f4b0                            linux_root
│ └─root    btrfs             linux_root  d92018a9-5510-4b97-b96b-5627ed2cb846
├─nvme0n1p5 ntfs              WinRE       82E4B8DBE4B8D2A1                                                Basic data partition
└─nvme0n1p6 vfat        FAT32 HDDRECOVERY FE30-8593                                                       Basic data partition

パーティションのマウント

  • btrfs は -ocompress=zstd を付ける
  • esp は -oumask=0077 を付ける
root@archiso ~ # mount -tbtrfs -osubvol=@root,compress=zstd /dev/mapper/root /mnt
root@archiso ~ # mount -tbtrfs -osubvol=@log /dev/mapper/root /mnt/var/log --mkdir
root@archiso ~ # mount -tbtrfs -osubvol=@cache /dev/mapper/root /mnt/var/cache --mkdir
root@archiso ~ # mount -tbtrfs -osubvol=@home /dev/mapper/root /mnt/home --mkdir
root@archiso ~ # mount -tbtrfs -osubvol=@swap /dev/mapper/root /mnt/swap --mkdir

root@archiso ~ # mount -tvfat -oumask=0077 /dev/disk/by-label/ESP /mnt/efi --mkdir
root@archiso ~ # mount -text4 /dev/disk/by-label/linux_boot /mnt/boot --mkdir

root@archiso ~ # swapon /mnt/swap/swapfile

root@archiso ~ # findmnt --real
TARGET                SOURCE                    FSTYPE   OPTIONS
/run/archiso/airootfs /dev/loop0                squashfs ro,relatime,errors=continue,threads=single
/mnt                  /dev/mapper/root[/@root]  btrfs    rw,relatime,compress=zstd:3,ssd,discard=async,space_cache=v2,subvolid=261,subvol=/@root
├─/mnt/var/log        /dev/mapper/root[/@log]   btrfs    rw,relatime,compress=zstd:3,ssd,discard=async,space_cache=v2,subvolid=262,subvol=/@log
├─/mnt/var/cache      /dev/mapper/root[/@cache] btrfs    rw,relatime,compress=zstd:3,ssd,discard=async,space_cache=v2,subvolid=263,subvol=/@cache
├─/mnt/home           /dev/mapper/root[/@home]  btrfs    rw,relatime,compress=zstd:3,ssd,discard=async,space_cache=v2,subvolid=264,subvol=/@home
├─/mnt/swap           /dev/mapper/root[/@swap]  btrfs    rw,relatime,compress=zstd:3,ssd,discard=async,space_cache=v2,subvolid=265,subvol=/@swap
├─/mnt/efi            /dev/nvme0n1p1            vfat     rw,relatime,fmask=0077,dmask=0077,codepage=437,iocharset=ascii,shortname=mixed,utf8,errors=remount-ro
└─/mnt/boot           /dev/nvme0n1p3            ext4     rw,relatime

root@archiso ~ # swapon
NAME               TYPE SIZE USED PRIO
/mnt/swap/swapfile file  32G   0B   -2

pacstrap

btrfs-progs, efifs を忘れない。

root@archiso ~ # pacman -Syy
root@archiso ~ # pacstrap -K /mnt base base-devel linux linux-firmware intel-ucode btrfs-progs efifs iwd man man-db vim bash-completion
root@archiso ~ # genfstab -U /mnt >> /mnt/etc/fstab

chroot

root@archiso ~ # arch-chroot /mnt

基本設定

[root@archiso /]# ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
[root@archiso /]# hwclock --systohc

[root@archiso /]# vim /etc/locale.gen
[root@archiso /]# locale-gen

[root@archiso /]# echo LANG=en_US.UTF-8 > /etc/locale.conf
[root@archiso /]# echo KEYMAP=us > /etc/vconsole.conf
[root@archiso /]# echo <hostname> > /etc/hostname

[root@archiso /]# passwd

mkinitcpio

mkinitcpio には sd-encrypt フックを追加する。

[root@archiso /]# vim /etc/mkinitcpio.conf
[root@archiso /]# cat /etc/mkinitcpio.conf | grep -e '^HOOKS'
HOOKS=(base systemd autodetect microcode modconf kms keyboard sd-vconsole sd-encrypt block filesystems fsck)

[root@archiso /]# mkinitcpio -P

bootloader

  • /efi/EFI/systemd/drivers/ext2_x64.efi を置く事で systemd-boot の UEFI app が ext4 を読めるようにする。 see: systemd-boot で esp と分離した /boot を ext4 にする
  • rd.luks.name には cryptsetup で暗号化したパーティションの UUID を指定する。
  • subvolの指定は rootflags で行う。
[root@archiso /]# mkdir -p /efi/EFI/systemd/drivers
[root@archiso /]# cp /usr/lib/efifs-x64/ext2_x64.efi /efi/EFI/systemd/drivers/

[root@archiso /]# cp /usr/share/systemd/bootctl/arch.conf /boot/loader/entries
[root@archiso /]# blkid > /tmp/blkid

[root@archiso /]# vim -o /boot/loader/entries/arch.conf /tmp/blkid
[root@archiso /]# cat /boot/loader/entries/arch.conf
title   Arch Linux
linux   /vmlinuz-linux
initrd  /intel-ucode.img
initrd  /initramfs-linux.img
options rd.luks.name=91592578-8a0a-4699-8af7-8d2478f9f4b0=root root=/dev/mapper/root rootfstype=btrfs rootflags=subvol=@root add_efi_memmap

reboot

root@archiso ~ # reboot

Dynabook 最大の罠

一通りセットアップして再起動しても systemd-boot のメニューが出てこない。BIOS のブートメニューにも出てこない。

Dynabook では、BIOS 設定画面の Boot メニューにある「Add New Boot Option」で起動する EFI app を登録する事ができて、ここに手動で \boot\EFI\systemd\systemd-bootx64.efi を登録する必要がある。つまり \EFI\BOOT\BOOTx64.EFI を自動で読み込んでくれない。 これだけで一時間以上時間溶けた (壊したかと思った)。

ドキュメント を見ても「ブートオプションを追加することができます。」としか書いてないし。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment