はじめに
小型のベアボーンPCを組み立ててみたくなり、ASRockのDeskMini A300と第3世代のRyzen3で組んでみました。こちらのツイート画像のような構成です。
作ってく pic.twitter.com/uOwblgibVR
— なおきた (@naoketa) April 19, 2020
認識された pic.twitter.com/QYQbg4q7rV
— なおきた (@naoketa) April 19, 2020
このDeskMini A300にArch Linuxをセットアップしたので、やったことメモを残しておきます。
セットアップでやったこと
基本的には公式のインストールガイドを参考にセットアップをしています。
ライブUSBから起動
別マシンでArch Linux用のライブUSBを作って、DeskMiniに突っ込んだところから始めます。
まずはUEFIで、boot option prioritiesの順序を入れ替えUSBブートするように変更。「Arch Linux archiso x86_64 UEFI CD」を選択して、LiveUSB内の環境で作業していきます。
日本語キーボードレイアウトを設定
# loadkeys jp106
# 利用可能なキーマップ
# ls /usr/share/kbd/keymaps/**/*.map.gz | grep jp
ネットワークの確認
今回は有線ネットワークで進めました。
ip
コマンドで自分の有線ネットワークのNIC名を確認。pingが通ることを確認します。
# ip link
# ping www.google.co.jp
自分の環境だとenp2s0
みたいなNIC名で読み込まれています。ちなみにenp2s0
などの命名規則は以下のようなです。
https://qiita.com/fetaro/items/b61282130fa638de4528
システムクロックの更新
NTPサーバから取るようにしました。
# timedatectl set-ntp true
# date
パーティションきる
今回はUEFI環境にGPT形式でパーティションを切ります。
とりあえず現在のブロックデバイスを確認。
lsblk
自分の場合は、ライブUSB自体がsda
として、またNVMe接続のSSDがnvme0n1
として認識されていました。nvme0n1
にgdisk
でGPTでパーティションを切ってきます。
# 現在のパーティション
gdisk -l /dev/nvme0n1
# 対話モードで起動
gdisk /dev/nvme0n1
gdisk
を対話モードで起動して、既存のパーティションを削除&公式の通り以下の感じで切ってきます。
パーティション | パーティションタイプ | 容量 |
---|---|---|
/dev/nvme0n1p1 | EFIシステム | 512MB |
/dev/nvme0n1p2 | Linuxファイルシステム(/) | その他全部 |
自分の組んだマシンはメモリ16GBに対してSSDが128GBと少なめなことと、suspend-to-diskを利用することもなさそうなので、今回はスワップパーティションは切りません。 必要そうだと感じたら、後からスワップファイルを作成しようと思います。参考
パーティションのフォーマット
nvme0n1p1
のシステムパーティションをFAT32で、nvme0n1p2
をext4でフォーマットしてきます。
mkfs.fat -F32 /dev/nvme0n1p1
mkfs.ext4 /dev/nvme0n1p2
パーティションのマウント
公式を参考に、それぞれ以下にマウントしてきます。
マウントポイント | パーティション | パーティションタイプ | 容量 |
---|---|---|---|
/mnt/boot | /dev/nvme0n1p1 | EFIシステム | 512MB |
/mnt | /dev/nvme0n1p2 | Linuxファイルシステム(/) | その他全部 |
ルートパーティション
mount /dev/nvme0n1p2 /mnt
システムパーティション
mkdir /mnt/boot
mount /dev/nvme0n1p1 /mnt/boot
最後にlsblk
で上記の表のようになってるか確認。
ベースシステムのインストール
パッケージを落としてくるミラーサイトのリスト/etc/pacman.d/mirrorlist
を書き換える。
上から優先的に読まれるので、とりあえず日本のミラーサイトを上に持って行っておきます。あとはpacstrapで。
pacstrap /mnt base linux linux-firmware
システムの設定
SSD側にシステムが入ったので、次はSSDでブートした時向けの設定をしてきます。
fstab の生成
毎回のブート時に自分でmount /dev/nvme0n1p2 /mnt
とか叩いてマウントしなくていいように、fstabにマウント情報を記載して自動でやってくれるようにします。
# さっきmountした状態でfstab生成
genfstab -U /mnt >> /mnt/etc/fstab
# 確認
less /mnt/etc/fstab
chroot
これまでインストールしてきた/mnt
をルート/
として扱います。
arch-chroot /mnt
タイムゾーン
タイムゾーンを設定。date
がJST
# ln -sf /usr/share/zoneinfo/Region/City /etc/localtime
ハードウェアクロック(マザボの時間)を、先ほどNTPと同期したシステムクロックと同期反映させます。
#hwclock --systohc
Vim 入れる
ライブUSB側ではvim入ってましたが、先ほどのインストールしたパッケージには含まれていなかったので、ここで入れときます。
sudo pacman -S vim
ロケール
en_US.UTF-8 UTF-8
とa_JP.UTF-8 UTF-8
をアンコメントして locale-gen
でロケール生成。
vim /etc/locale.gen
locale-gen
日本語キーボードの設定を設定ファイルに記載しておきます。
echo KEYMAP=jp106 > /etc/vconsole.conf
ホスト設定
ホストネームファイルを作成(今回はa300)
echo a300 > /etc/hostname
etc/hosts
も記載
127.0.0.1 localhost
::1 localhost
127.0.1.1 a300.localdomain a300
Rootパスワード
passwd
ブートローダー
GRUB
ではなく、シンプルで速く起動できるらしいsystemd-boot
を使ってみる。(UEFI環境のみでしか使えない。)
- EFIシステムパーティションにsystemd-bootをインストール
bootctl --path=/boot install
Arch Linuxのローダーントリーファイル追加
touch /boot/loader/entries/arch.conf
# 自分のSSDに作ったルートパーティションの対象領域のUUIDを追記してあとで直す
blkid -o export /dev/nvme0n1p1 >> /boot/loader/entries/arch.conf
vim /boot/loader/entries/arch.conf
options root
はデバイス名でも大丈夫ですが、変わることもあるのでUUIDで記載しています。
title Arch Linux
linux /vmlinuz-linux
initrd /intel-ucode.img
initrd /initramfs-linux.img
options root=UUID={blkidで追記したUUID} rw
/boot/loader/loader.confファイルでローダーを設定
vim /boot/loader/loader.conf
直近ブートメニューは表示しなくて良いのでtimeout 0
にした
default arch
timeout 0
editor no
# 確認
bootctl list
再起動して、続きはArch Linuxを始めた(2)に記載します。