はじめに
小型のベアボーン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/nvme0n1gdiskを対話モードで起動して、既存のパーティションを削除&公式の通り以下の感じで切ってきます。
| パーティション | パーティションタイプ | 容量 |
|---|---|---|
| /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/fstabchroot
これまでインストールしてきた/mntをルート/として扱います。
arch-chroot /mntタイムゾーン
タイムゾーンを設定。dateがJST
# ln -sf /usr/share/zoneinfo/Region/City /etc/localtimeハードウェアクロック(マザボの時間)を、先ほどNTPと同期したシステムクロックと同期反映させます。
#hwclock --systohcVim 入れる
ライブ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/hostnameetc/hostsも記載
127.0.0.1 localhost
::1 localhost
127.0.1.1 a300.localdomain a300Rootパスワード
passwdブートローダー
GRUBではなく、シンプルで速く起動できるらしいsystemd-bootを使ってみる。(UEFI環境のみでしか使えない。)
- EFIシステムパーティションにsystemd-bootをインストール
bootctl --path=/boot installArch 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)に記載します。