仕事用の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
- https://wiki.archlinux.org/title/Installation_guide
- https://wiki.archlinux.org/title/Dm-crypt/Encrypting_an_entire_system
- https://wiki.archlinux.org/title/Btrfs
- https://wiki.archlinux.org/title/Systemd-boot
# iwctl
[iwd]# station list
[iwd]# station wlan0 get-networks
[iwd]# station wlan0 connect <your-ap>
[iwd]# station wlan0 show
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
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
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
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 には 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
/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
root@archiso ~ # reboot
一通りセットアップして再起動しても systemd-boot のメニューが出てこない。BIOS のブートメニューにも出てこない。
Dynabook では、BIOS 設定画面の Boot メニューにある「Add New Boot Option」で起動する EFI app を登録する事ができて、ここに手動で \boot\EFI\systemd\systemd-bootx64.efi を登録する必要がある。つまり \EFI\BOOT\BOOTx64.EFI を自動で読み込んでくれない。
これだけで一時間以上時間溶けた (壊したかと思った)。
ドキュメント を見ても「ブートオプションを追加することができます。」としか書いてないし。
![]() |
![]() |
![]() |


