--- tags: 環境構築,Arch Linux --- # デスクトップPC設定 ## ToDo - [x] Windows 10 インストールメディア(USBメモリ)用意 - [x] Windows 10 インストール - [x] Windows Cドライブ縮小(200GB) - [x] 起動ディスク一時変更(USB storage device) - [x] ArchLinux インストールメディア(USBメモリ)用意 - [x] ArchLinux起動テスト - [x] memtest86(5.01) - [x] Ethernetケーブル接続 - [x] 疎通確認(ping 1.1.1.1) - [x] 暫定ssh daemon起動 - [x] X1Cからログイン - [x] Arch用パーティション用意 - [x] LUKSセットアップ - [x] ファイルシステム設定 - [x] マウント - [x] NTP設定 - [x] pacman mirror設定 - [x] 初期パッケージインストール - [x] fstab生成 - [x] 時刻設定 - [x] locale設定 - [x] hostname設定 - [x] mkinitcpio - [x] rootパスワード設定 - [x] ブートローダインストール - [x] 再起動 - [x] 起動ディスク戻す - [x] Win10ログインできるか確認 - [x] Archログイン - [x] ユーザ作製 - [x] visudo ## コマンド ### base system install ```bash gdisk /dev/nvme0n1 c 4 Windows C-drive n +250G n w Y cryptsetup benchmark # Tests are approximate using memory only (no storage IO). PBKDF2-sha1 2490679 iterations per second for 256-bit key PBKDF2-sha256 4396545 iterations per second for 256-bit key PBKDF2-sha512 1801676 iterations per second for 256-bit key PBKDF2-ripemd160 911805 iterations per second for 256-bit key PBKDF2-whirlpool 724154 iterations per second for 256-bit key argon2i 7 iterations, 1048576 memory, 4 parallel threads (CPUs) for 256-bit key (requested 2000 ms time) argon2id 7 iterations, 1048576 memory, 4 parallel threads (CPUs) for 256-bit key (requested 2000 ms time) # Algorithm | Key | Encryption | Decryption aes-cbc 128b 1256.5 MiB/s 4302.2 MiB/s serpent-cbc 128b 106.3 MiB/s 717.5 MiB/s twofish-cbc 128b 213.2 MiB/s 418.5 MiB/s aes-cbc 256b 961.2 MiB/s 3543.7 MiB/s serpent-cbc 256b 111.0 MiB/s 717.6 MiB/s twofish-cbc 256b 220.9 MiB/s 418.5 MiB/s aes-xts 256b 2070.5 MiB/s 2073.6 MiB/s serpent-xts 256b 712.6 MiB/s 698.9 MiB/s twofish-xts 256b 413.6 MiB/s 412.9 MiB/s aes-xts 512b 1822.7 MiB/s 1823.4 MiB/s serpent-xts 512b 714.4 MiB/s 698.7 MiB/s twofish-xts 512b 414.5 MiB/s 412.6 MiB/s cryptsetup -v luksFormat /dev/nvme0n1p5 cryptsetup open /dev/nvme0n1p5 cryptroot mkfs.btrfs -L "Arch Linux" /dev/mapper/cryptroot mount /dev/mapper/cryptroot /mnt btrfs subvolume create /mnt/@root btrfs subvolume create /mnt/@home btrfs subvolume create /mnt/@var umount /mnt mount -o noatime,ssd,compress=zstd,space_cache,subvol=@root /dev/mapper/cryptroot /mnt mkdir /mnt/boot /mnt/home /mnt/var mount /dev/nvme0n1p2 /mnt/boot mount -o noatime,ssd,compress=zstd,space_cache,subvol=@home /dev/mapper/cryptroot /mnt/home mount -o noatime,ssd,compress=zstd,space_cache,subvol=@var /dev/mapper/cryptroot /mnt/var timedatectl set-ntp true vim /etc/pacman.d/mirrorlist pacman -Sy pacman-contrib archlinux-keyring pacstrap /mnt base base-devel linux linux-firmware linux-headers efibootmgr dosfstools cryptsetup btrfs-progs netctl net-tools dhcpcd dhclient inetutils networkmanager openssh usbutils vim sudo git which man-db man-pages genfstab -t PARTUUID -p /mnt >> /mnt/etc/fstab arch-chroot /mnt ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime hwclock --systohc --utc vim /etc/locale.gen locale-gen echo LANG=en_US.UTF-8 > /etc/locale.conf echo KEYMAP=jp106 > /etc/vconsole.conf echo yohanesu > /etc/hostname vim /etc/hosts vim /etc/mkinitcpio.conf HOOKS=(base systemd autodetect modconf block keymap encrypt filesystems keyboard fsck) cp /etc/crypttab /etc/crypttab.initramfs vim /etc/crypttab.initramfs luks-<LUKSなpartのUUID> UUID=<UUID> none luks,timeout=120 mkinitcpio -p linux pacman -S amd-ucode bootctl install vim /boot/loader/entries/arch.conf title Arch Linux linux /vmlinuz-linux initrd /amd-ucode.img initrd /initramfs-linux.img # encrypt hook # options cryptdevice=/dev/nvme0n1p5:cryptroot root=/dev/mapper/cryptroot rootflags=subvol=@root rw # sd-encrypt options luks.uuid=<UUID> luks.options=allow-discards root=/dev/mapper/luks-<さっきのUUID> rootflags=subvol=@root rw vim /boot/loader/loader.conf default arch timeout 5 console-mode max editor no passwd systemctl enable NetworkManager useradd -m -G wheel -s /bin/bash sksat passwd sksat EDITOR=vim visudo ``` ### ユーザーセットアップ ```bash mkdir build cd build git clone https://aur.archlinux.org/yay.git cd yay makepkg -si yay yay -S xorg-server xorg-xinit yay -S i3-wm i3blocks rofi sakura yay -S otf-ipafont ibus ibus-mozc yay -S firefox vivaldi-snapshot vivaldi-snapshot-ffmpeg-codecs vivaldi-widevine cd ~ vim .bashrc export EDITOR=vim export TERMINAL=sakura vim .xinitrc export GTK_IM_MODULE=ibus export QT_IM_MODULE=ibus export XMODIFIERS=@im=ibus ibus-daemon -rdx exec i3 ``` ## パーティション - nvme0n1 - p1(529MiB) Windowsのなんか - p2(100MiB) EFI System - p3(16MiB) Microsoft reserved - p4(199.4GiB) Windows C-drive - p5(250GiB) Arch Linux - 77814dc1-849e-425d-8f40-aaaf83dd7991 - p6(26.9GiB) shared ### 初期状態 ``` Disk /dev/nvme0n1: 1000215216 sectors, 476.9 GiB Model: ADATA SX8200PNP Sector size (logical/physical): 512/512 bytes Disk identifier (GUID): F1425CA5-EF88-47E5-B21E-E5FD25D18A7F Partition table holds up to 128 entries Main partition table begins at sector 2 and ends at sector 33 First usable sector is 34, last usable sector is 1000215182 Partitions will be aligned on 2048-sector boundaries Total free space is 580784749 sectors (276.9 GiB) Number Start (sector) End (sector) Size Code Name 1 2048 1085439 529.0 MiB 2700 Basic data partition 2 1085440 1290239 100.0 MiB EF00 EFI system partition 3 1290240 1323007 16.0 MiB 0C01 Microsoft reserved ... 4 1323008 419432447 199.4 GiB 0700 Basic data partition ``` ### 変更後 ``` Number Start (sector) End (sector) Size Code Name 1 2048 1085439 529.0 MiB 2700 Basic data partition 2 1085440 1290239 100.0 MiB EF00 EFI system partition 3 1290240 1323007 16.0 MiB 0C01 Microsoft reserved ... 4 1323008 419432447 199.4 GiB 0700 Windows C-drive 5 419432448 943720447 250.0 GiB 8309 Arch Linux 6 943720448 1000215182 26.9 GiB 0700 shared ``` ## SSD追加(1TB) ``` $ mkdir ~/backup/0811/ $ sudo btrfs subvolume snapshot -r / backup/0811/root Create a readonly snapshot of '/' in 'backup/0811/root' ERROR: cannot snapshot '/': Text file busy $ sudo btrfs subvolume snapshot -r /home backup/0811/home Create a readonly snapshot of '/home' in 'backup/0811/home' $ sudo btrfs subvolume snapshot -r /opt backup/0811/opt Create a readonly snapshot of '/opt' in 'backup/0811/opt' $ sudo btrfs subvolume snapshot -r /var backup/0811/var Create a readonly snapshot of '/var' in 'backup/0811/var' $ sudo cgdisk /dev/nvme1n1 $ sudo mkfs.btrfs -L 'Arch Linux' /dev/nvme1n1p1 btrfs-progs v5.7 See http://btrfs.wiki.kernel.org for more information. Detected a SSD, turning off metadata duplication. Mkfs with -m dup if you want to force metadata duplication. Label: Arch Linux UUID: 1143da7e-a5a0-453c-b6d5-5c7fc3a74379 Node size: 16384 Sector size: 4096 Filesystem size: 953.87GiB Block group profiles: Data: single 8.00MiB Metadata: single 8.00MiB System: single 4.00MiB SSD detected: yes Incompat features: extref, skinny-metadata Runtime features: Checksum: crc32c Number of devices: 1 Devices: ID SIZE PATH 1 953.87GiB /dev/nvme1n1p1 $ sudo mount /dev/nvme1n1p1 /mnt $ sudo btrfs subvolume create /mnt/@root Create subvolume '/mnt/@root' $ sudo mount /dev/nvme1n1p1 -o subvol=@root /mnt $ sudo btrfs send backup/0811/var | sudo btrfs receive /mnt At subvol backup/0811/var At subvol var $ sudo umount -R /mnt $ sudo mount -o noatime,ssd,compress=zstd,space_cache,subvol=@root /dev/nvme1n1p1 /mnt $ sudo mkdir /mnt/boot $ sudo mount /dev/nvme0n1p2 /mnt/boot $ sudo mkdir /mnt/home /mnt/var /mnt/opt $ sudo mount -o noatime,ssd,compress=zstd,space_cache,subvol=home /dev/nvme1n1p1 /mnt/home $ sudo mount -o noatime,ssd,compress=zstd,space_cache,subvol=var /dev/nvme1n1p1 /mnt/var $ sudo mount -o noatime,ssd,compress=zstd,space_cache,subvol=opt /dev/nvme1n1p1 /mnt/opt $ yay -S arch-install-scripts $ sudo btrfs property set /mnt/var ro false $ sudo btrfs property set /mnt/opt ro false $ sudo btrfs property set /mnt ro false $ sudo umount /mnt/var $ sudo btrfs subvolume delete -i 302 /mnt # var $ sudo pacstrap -i /mnt base base-devel linux linux-firmware linux-headers efibootmgr dosfstools cryptsetup btrfs-progs netctl net-tools dhcpcd dhclient inetutils networkmanager openssh usbutils vim sudo git which man-db man-pages $ sudo genfstab -t PARTUUID -p /mnt >> /mnt/etc/fstab $ yay -Qqe > pkglist.txt $ sudo mv pkglist /mnt $ sudo cp /etc/pacman.d/mirrorlist /mnt/etc/pam.d/ $ sudo cp /etc/locale.gen /mnt/etc/ $ sudo cp /etc/locale.conf /mnt/etc/ $ sudo cp /etc/vconsole.conf /mnt/etc/ $ sudo cp /etc/hostname /mnt/etc/ $ sudo cp /etc/hosts /mnt/etc/ $ sudo cp /etc/mkinitcpio.conf /mnt/etc/ $ sudo cp /etc/crypttab /mnt/etc/ $ sudo btrfs property set /mnt/home ro false $ sudo rm /boot/initramfs-linux* $ sudo rm /boot/vmlinuz* $ sudo rm /boot/amd-ucode.img $ sudo arch-chroot /mnt # cd home/sksat/pkg # git clone https://aur.archlinux.org/yay.git # cd yay # cd # ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime # hwclock --systohc --utc # locale-gen # pacman -S linux-zen amd-ucode # bootctl install # useradd -m -G wheel -s /bin/bash sksat # passwd sksat # EDITOR=vim visudo # pacman -S linux-firmware linux-headers efibootmgr dosfstools btrfs-progs netctl net-tools dhcpcd dhclient inetutils networkmanager openssh usbutils vim sudo git which man-db man-pages # systemctl enable NetworkManager # vim /boot/loader/entries/arch.conf # PARTUUIDだけ093bab9b-bdff-49d5-8fa3-21052e12be63に変更 # exit 再起動 ``` ``` $ sudo mkfs.btrfs -L 'Arch Linux' /dev/nvme1n1p1 $ sudo mount /dev/nvme1n1p1 /mnt $ sudo btrfs subvolume create /mnt/@root $ sudo btrfs subvolume snapshot -r /opt backup/0812/opt $ sudo btrfs subvolume snapshot -r /home backup/0812/home $ sudo btrfs send backup/0812/opt | sudo btrfs receive /mnt $ sudo btrfs send backup/0812/home | sudo btrfs receive /mnt $ sudo btrfs property set /mnt/opt ro false $ sudo btrfs property set /mnt/home ro false $ sudo umount -R /mnt $ sudo mount /dev/nvme1n1p1 /mnt -o subvol=@root $ sudo mkdir /mnt/home /mnt/opt $ sudo mount /dev/nvme1n1p1 /mnt/home -o subvol=home $ sudo mount /dev/nvme1n1p1 /mnt/opt -o subvol=opt $ sudo pacstrap -i /mnt base base-devel linux-zen linux-firmware linux-headers efibootmgr dosfstools cryptsetup btrfs-progs netctl net-tools dhcpcd dhclient inetutils networkmanager openssh usbutils vim sudo git which man-db man-pages $ sudo genfstab -t PARTUUID -p /mnt >> /mnt/etc/fstab $ yay -Qqe > pkglist.txt $ sudo mv pkglist.txt /mnt $ sudo cp /etc/pacman.d/mirrorlist /mnt/etc/pam.d/ sudo cp /etc/locale.gen /mnt/etc/ sudo cp /etc/locale.conf /mnt/etc/ sudo cp /etc/vconsole.conf /mnt/etc/ sudo cp /etc/hostname /mnt/etc/ sudo cp /etc/hosts /mnt/etc/ sudo cp /etc/mkinitcpio.conf /mnt/etc/ $ sudo mount /dev/nvme0n1p2 /mnt/boot sudo rm /mnt/boot/initramfs-linux* sudo rm /mnt/boot/vmlinuz* sudo rm /mnt/boot/amd-ucode.img $ sudo arch-chroot /mnt # ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime hwclock --systohc --utc locale-gen # pacman -S linux-zen amd-ucode # pacman -S linux-firmware linux-headers efibootmgr dosfstools btrfs-progs netctl net-tools dhcpcd dhclient inetutils networkmanager openssh usbutils vim sudo git which man-db man-pages # bootctl install # passwd # useradd -m -G wheel -s /bin/bash sksat passwd sksat # EDITOR=vim visudo # systemctl enable NetworkManager # vim /boot/loader/entries/arch.conf # PARTUUIDだけ5b5280ac-6a58-4bce-ac93-d43440eb33d9に変更 # exit $ sudo umount -R /mnt 再起動 # pacman -S fish $ cd build $ git clone https://aur.archlinux.org/yay.git $ cd yay $ makepkg -si $ yay $ yay -S - < /pkglist.txt ```