All Articles

自作PCにArch Linuxをインストールした

はじめに

GW期間中に自作PCにArch Linuxをインストールしました

インストールした経緯は久々にサーバー以外でLinuxを触りたくなったのと勉強の一環です

過去にもArchを使っていたのでインストール自体はそこまで難しくなかったのですが、この自作PCにはWindowsもはいっているのでデュアルブート環境で作成しなければいけなかったのが少し戸惑いました

これは自分の環境用なので公式wikiをみてインストールすることをおすすめします

インストールガイド - ArchWiki

事前準備

環境

自作PCの構成は以下です
自作PC構成 - 忘却と美学

ブート形式がBIOSかUEFIか先に調べておく

自分の場合は、UEFI

今の時代はほとんどUEFIだと思う

事前情報でこれくらい把握しておく

項目
ブート形式 UEFI
ディスク GPT
キーボード US配列
メモリ 32GB
SSD 256GB
ネット接続 有線
CPU i7-9700k
GPU RTX2070Super

設計

パーティション構成

パーティション サイズ パーティションタイプ マウントポイント
/dev/sdc1 512MiB EFI システムパーティション /mnt/boot
/dev/sdc2 234GiB(残った容量) Linux /mnt
/dev/sdc3 4GiB Swap スワップ

その他

今回インストールしたSSDにはもともとWindows10がはいっていたのでそのSSDの初期化をした

回復パーティションの初期化は以下の記事を参考にした

Windows10 - 回復パーティションの削除(DiskPart) - PC設定のカルマ

インストール

作業内容の記録

作業内容の記録をするためにscriptコマンドを実行しておく

# script

色々確認

wikiではキーボードレイアウトの変更がありますがUS配列を使ってるので変更はしなかった

# ls /sys/firmware/efi/efivars
# ip link
# ping google.com
# timedatectl set-ntp true
# lsblk
NAME  MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
loop0   7:0    0 446.8M  1 loop /run/archiso/sfs/airootfs
.
.
.
sdc   8:32    0    238.5G  0 disk
.
.

lsblkコマンドで接続しているデバイスが表示されますが今回インストールするのは sdc です

パーティションの作成

gdiskコマンドを使用してパーティションを分割していく

このgdiskコマンド初めて使ったけどわかりやすくてよかった

# gdisk /dev/sdc
Command (? for help): ?

b   back up GPT data to a file
c   change a partition's name
d   delete a partition
i   show detailed information on a partition
l   list known partition types
n   add a new partition
o   create a new empty GUID partition table (GPT)
p   print the partition table
q   quit without saving changes
r   recovery and transformation options (experts only)
s   sort partitions
t   change a partition's type code
v   verify disk
w   write table to disk and exit
x   extra functionality (experts only)
?   print this menu

上記で設計したように分割していく

sdc1 (boot)

Command (? for help): n
Partition number (1-128, default 1): 
First sector (34-500118158, default = 2048) or {+-}size{KMGTP}: +512M     
Last sector (2048-500118158, default = 500118158) or {+-}size{KMGTP}: +512M
Current type is 8300 (Linux filesystem)
Hex code or GUID (L to show codes, Enter = 8300): EF00
Changed type of partition to 'EFI system partition'

sdc2 (/mnt)

Command (? for help): mn
Partition number (2-128, default 2): 
First sector (34-500118158, default = 1050624) or {+-}size{KMGTP}: 
Last sector (1050624-500118158, default = 500118158) or {+-}size{KMGTP}: -4G
Current type is 8300 (Linux filesystem)
Hex code or GUID (L to show codes, Enter = 8300): 
Changed type of partition to 'Linux filesystem'

sdc3 (swap)

Command (? for help): tn  n
Partition number (3-128, default 3): 
First sector (34-500118158, default = 491730944) or {+-}size{KMGTP}: 
Last sector (491730944-500118158, default = 500118158) or {+-}size{KMGTP}: 
Current type is 8300 (Linux filesystem)
Hex code or GUID (L to show codes, Enter = 8300): 8200
Changed type of partition to 'Linux Swap'

ファイルシステム一覧コード

Hex code or GUID (L to show codes, Enter = 8300): L
Type search string, or <Enter> to show all codes: 
0700 Microsoft basic data                0701 Microsoft Storage Replica         
0702 ArcaOS Type 1                       0c01 Microsoft reserved                
2700 Windows RE                          3000 ONIE boot                         
3001 ONIE config                         3900 Plan 9                            
4100 PowerPC PReP boot                   4200 Windows LDM data                  
4201 Windows LDM metadata                4202 Windows Storage Spaces            
7501 IBM GPFS                            7f00 ChromeOS kernel                   
7f01 ChromeOS root                       7f02 ChromeOS reserved                 
8200 Linux swap                          8300 Linux filesystem                  
8301 Linux reserved                      8302 Linux /home                       
8303 Linux x86 root (/)                  8304 Linux x86-64 root (/)             
8305 Linux ARM64 root (/)                8306 Linux /srv                        
8307 Linux ARM32 root (/)                8308 Linux dm-crypt                    
8309 Linux LUKS                          830a Linux IA-64 root (/)              
830b Linux x86 root verity               830c Linux x86-64 root verity          
830d Linux ARM32 root verity             830e Linux ARM64 root verity           
830f Linux IA-64 root verity             8310 Linux /var                        
8311 Linux /var/tmp                      8312 Linux user's home                 
8313 Linux x86 /usr                      8314 Linux x86-64 /usr                 
8315 Linux ARM32 /usr                    8316 Linux ARM64 /usr                  
8317 Linux IA-64 /usr                    8318 Linux x86 /usr verity             
Press the <Enter> key to see more codes, q to quit: 
8319 Linux x86-64 /usr verity            831a Linux ARM32 /usr verity           
831b Linux ARM64 /usr verity             831c Linux IA-64 /usr verity           
8400 Intel Rapid Start                   8401 SPDK block device                 
8500 Container Linux /usr                8501 Container Linux resizable rootfs  
8502 Container Linux /OEM customization  8503 Container Linux root on RAID      
8e00 Linux LVM                           a000 Android bootloader                
a001 Android bootloader 2                a002 Android boot 1                    
a003 Android recovery 1                  a004 Android misc                      
a005 Android metadata                    a006 Android system 1                  
a007 Android cache                       a008 Android data                      
a009 Android persistent                  a00a Android factory                   
a00b Android fastboot/tertiary           a00c Android OEM                       
a00d Android vendor                      a00e Android config                    
a00f Android factory (alt)               a010 Android meta                      
a011 Android EXT                         a012 Android SBL1                      
a013 Android SBL2                        a014 Android SBL3                      
a015 Android APPSBL                      a016 Android QSEE/tz                   
a017 Android QHEE/hyp                    a018 Android RPM                       
a019 Android WDOG debug/sdi              a01a Android DDR                       
a01b Android CDT                         a01c Android RAM dump                  
a01d Android SEC                         a01e Android PMIC  

作ったパーティションを確認と書き込み

Command (? for help): p
Disk /dev/sdc: 500118192 sectors, 238.5 GiB
Model: TS256GSSD370S   
Sector size (logical/physical): 512/512 bytes
Disk identifier (GUID): 80FF9075-F303-4CA9-A8AB-EE5FE15ACEA2
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 500118158
Partitions will be aligned on 2048-sector boundaries
Total free space is 3407 sectors (1.7 MiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048         1050623   512.0 MiB   EF00  EFI system partition
   2         1050624       491729550   234.0 GiB   8300  Linux filesystem
   3       491730944       500118158   4.0 GiB     8200  Linux swap


Command (? for help): w

Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!

Do you want to proceed? (Y/N): Y
OK; writing new GUID partition table (GPT) to /dev/sdc.
The operation has completed successfully.

確認

# lsblk
sdc           8:32   0 238.5G  0 disk 
├─sdc1        8:33   0   512M  0 part 
├─sdc2        8:34   0   234G  0 part 
└─sdc3        8:35   0     4G  0 part 

パーティションディスクのフォーマット

フォーマット

システム領域のファイルシステムを何にするか悩んだが、ext4にした

以下が参考になる

Linuxファイルシステムをまとめてみました - Qiita

# mkfs.fat -F32 /dev/sdc1
# mkfs.ext4 /dev/sdc2
# mkswap /dev/sdc3
# swapon /dev/sdc3

マウント

# mkdir /mnt/boot
# mount /dev/sdc2 /mnt
# mount /dev/sdc1 /mnt/boot

必要なパッケージのインストール

まずミラーリストの設定

以下を先頭に追記、また日本のリストが有った場合先頭に持ってくる

# vim /etc/pacman.d/mirrorlist
Server = https://ftp.jaist.ac.jp/pub/Linux/ArchLinux/$repo/os/$arch
Server = https://ftp.tsukuba.wide.ad.jp/Linux/archlinux/$repo/os/$arch
# pacstrap /mnt base base-devel linux linux-firmware grub dosfstools vi vim dhcpcd intel-ucode efibootmgr netctl

システム設定

ファイルシステムテーブルを作成

# genfstab -U /mnt >> /mnt/etc/fstab

ルートフォルダの変更

# arch-chroot /mnt

ロケールの変更

en_US.UTF-8 UTF-8ja_JP.UTF-8 UTF-8をコメントをはずす

# vim /etc/locale.gen
# locale-gen

ネット周りの設定

# vim /etc/hostname
arch

# vim /etc/hosts
127.0.0.1	localhost
::1		localhost
127.0.1.1	arch.localdomain	arch

# systemctl enable dhcpcd

rootのパスワード変更

# passwd

インストールはここで終わり

普通ならここでgrubやsystemd-bootを使ってブートローダーを作成後、再起動しarchにログインする

自分の環境の場合はデュアルブートなので別記事にまとめる デュアルブートの際にはgrubを使用した

デュアルブートしない場合

# grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=boot
# grub-mkconfig -o /boot/grub/grub.cfg
# exit
# exit
# cp typescript /mnt/root/arch_linux_install.log
# reboot

デュアルブート

上記の記事の続き

Arch LinuxとWindows10をデュアルブートする - 忘却と美学

rebootする前に作業記録をコピーしておく

# cp typescript /mnt/root/arch_linux_install.log

参考リンク