ArchLinux を試してみたかった
OS を理解する上で、シンプルなところから理解したい。それには、シンプルな OS から始めるのが良さそう、ということで、ArchLinux を試してみることにした。
docker image ですぐに試すことはできるが、最近購入した NUC にインストールしたかったので、まず手始めに Mac の VirtualBox でインストールしてみる。
結果的に、VirtualBox で始めるのは非常によかった。インストールだけでも様々な仕組みの理解が必要になるし、ハードウェアにインストールすると最初からやり直すのが難しい
VirtualBox のインストール
よく使われる仮想化ソフト。Docker を普段使っているので、VirtualBox が古くなっていた。
brew cask install virtualbox
すでにインストールしている場合は、
brew cask upgrade virtualbox
で最新の VirtualBox (6.1.2) をインストールする。
ArchLinux のインストーラーの起動
OS イメージのダウンロードと VM の作成
Installation guide - ArchWiki に従っていく。
Index of /pub/Linux/ArchLinux/iso/2020.02.01 から iso ファイルをダウンロードしてくる。jaist のミラーページは http、つまり中間者攻撃が簡単に行えるため、ここでダウンロードした iso ファイルを信頼してはいけない。
そのままインストールしている例が散見されるが、本来は GPG を使って、正しい OS なのかどうか検証する必要がある。
Installation guide - ArchWiki にあるとおり、gpg をインストールして、iso ファイルの検証する。
brew install gnupg
# Tips : locale は US にしておいたほうが、エラーログが出たときにググりやすいので英語にしておく
export LANG=en_US.UTF-8
Arch Linux - Downloads の Checksums から PGP signature をダウンロード。これと iso ファイルを照合する。
gpg --keyserver-options auto-key-retrieve --verify archlinux-2020.02.01-x86_64.iso.sig
gpg: assuming signed data in 'archlinux-2020.02.01-x86_64.iso'
gpg: Signature made Sat Feb 1 15:57:48 2020 JST
gpg: using RSA key 4AA4767BBC9C4B1D18AE28B77F2D434B9741E8AC
gpg: Good signature from "Pierre Schmitz <pierre@archlinux.de>" [unknown]
gpg: WARNING: This key is not certified with a trusted signature!
gpg: There is no indication that the signature belongs to the owner.
Primary key fingerprint: 4AA4 767B BC9C 4B1D 18AE 28B7 7F2D 434B 9741 E8AC
早速 WARNING が出ているのだが、verify public key / Installation / Arch Linux Forums のスレッドによると、これは gpg の鍵に自分の鍵をまず認めてもらう必要がありそう。 Trust the Master Keys – Pierre Schmitz
「Good signature」と出ていれば問題なさそうだ。ここからすでにハードル高いのが、ArchLinux の DIY な世界。
ArchLinux インストーラーの起動
How to install Arch Linux on VirtualBox の手順を参考に virtualbox で ArchLinux を起動する。 このとき、まずそのままの状態で起動すると「no bootable image installed」というメッセージが出て先に進まない。これは、起動時に読み込む iso イメージを設定していないから。
そこで、起動後のウィンドウのメニューで、「Devices > Optical Drives > Choose Disk image」で上記のダウンロードしてきた ArchLinux の iso ファイルを指定する。
無事に起動したら、インストールの画面が表示されるため、「Boot Arch Linux」を選択し、インストール作業を実施していく。
起動後、インストールを実施していくのだが、ここからコマンドでの作業となる。Installation guide - ArchWiki を参考にする。
コマンドを virtualbox のウィンドウで入力するのは大変なので、VirtualBoxにArchLinuxをインストール、デスクトップ環境を構築する - Qiita の記事のように ssh の設定する。
そして、 sshd をスタートさせておけば、vm の 22 番ポートがホストでの 41231 に紐づく。
このままでは ssh できないので、
passwd
で、root user のパスワードを設定する。これにより、Mac のターミナルから、
ssh -p 41231 root@localhost
# 決めたパスワード
でログインできる。このほうが圧倒的に作業がしやすく、ログも残しやすい。以下、Mac からの ssh で作業をおこなっていく
インターネットアクセスを確認する
インターネットから pacman というパッケージマネージャー経由でソフトウェアをインストールをしたり、また日時を合わせたり必要なため、インターネットが繋げる環境で OS の初期設定を実施する(なくてもできそうだが、そのためにはまた手順が必要)
root@archiso ~ # ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
link/ether 08:00:27:54:47:4f brd ff:ff:ff:ff:ff:ff
root@archiso ~ # ping google.com
PING google.com (172.217.25.78) 56(84) bytes of data.
64 bytes from nrt13s50-in-f78.1e100.net (172.217.25.78): icmp_seq=1 ttl=63 time=5.50 ms
64 bytes from nrt13s50-in-f78.1e100.net (172.217.25.78): icmp_seq=2 ttl=63 time=5.39 ms
^C
--- google.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1002ms
rtt min/avg/max/mdev = 5.386/5.443/5.501/0.057 ms
インターネットにアクセスできていることが確認できた。
block storage disk のパーティションをフォーマットする (MBR の場合)
この記事では、MBR (Master Boot Record) をディスクに配置し、BIOS から OS 起動するようにする。
virtualbox で初期設定した block storage は /dev/sda として ArchLinux のインストーラーに認識されている。
root@archiso ~ # parted -l
Model: ATA VBOX HARDDISK (scsi)
Disk /dev/sda: 8590MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
この状態でも、/dev/sda は msdos としてジャーナリングされているが、ArchLinux を設定する上で、2 つパーティションが必要になるため、これらを作る。
パーティションのディスクサイズが小さい場合は、fdisk コマンドでもよいのだが、MBR 方式、GPT 方式の両方が作成できる parted コマンドをここでは使う。
root@archiso ~ # parted /dev/sda
GNU Parted 3.3
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mklabel msdos
Warning: The existing disk label on /dev/sda will be destroyed and all data on this disk will be lost. Do you want to continue?
Yes/No? yes
(parted) unit MB
(parted) mkpart
Partition type? primary/extended? primary
File system type? [ext2]? ext4
Start? 1
End? 4096
(parted) p
Model: ATA VBOX HARDDISK (scsi)
Disk /dev/sda: 8590MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
1 1.05MB 4096MB 4095MB primary ext4 lba
(parted) mkpart
Partition type? primary/extended? primary
File system type? [ext2]? ext4
Start? 4096
End? 6144
(parted) p
Model: ATA VBOX HARDDISK (scsi)
Disk /dev/sda: 8590MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
1 1.05MB 4096MB 4095MB primary ext4 lba
2 4096MB 6144MB 2048MB primary ext4 lba
(parted) q
ここでは、シンプルに UEFI を利用せずに、BIOS で起動するため、パーティションは /dev/sda1 /dev/sda2 のみを利用する。
なぜ2つなのかは、Installation guide - ArchWiki の Example layouts を参考にしたため。
root@archiso ~ # parted -l
Model: ATA VBOX HARDDISK (scsi)
Disk /dev/sda: 8590MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
1 1049kB 4096MB 4095MB primary
2 4096MB 6144MB 2048MB primary
この状態になっていることを確認する。
/dev/sda2 を Linux swap 領域にする
root@archiso ~ # mkswap /dev/sda2
Setting up swapspace version 1, size 1.9 GB (2047864832 bytes)
no label, UUID=bd07f22f-edae-4858-9b72-29e01b9a724a
root@archiso ~ # swapon /dev/sda2
/dev/sda2 を swap 領域に設定する(正直、メモリ使わないので今回は必要ない気がするが)
/dev/sda1 をフォーマットして /mnt にマウントする
root@archiso ~ # mount /dev/sda1 /mnt
mount: /mnt: wrong fs type, bad option, bad superblock on dev/sda1, missing codepage or helper program, or other error.
root@archiso ~ # mkfs.ext4 /dev/sda1
mke2fs 1.45.5 (07-Jan-20)
Creating filesystem with 999680 4k blocks and 249984 inodes
Filesystem UUID: 72faec4-2430-43f4-926-95ac0e656d0c
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736
Allocating group tables: done
Writing inode tables: done
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done
root@archiso ~ # mount dev/sda1 /mnt
成功した
最初の mount で失敗して気になったが、どうやら parted で作成したパーティションで ext4 を指定したものの、あれは反映されていなかった。
mkfs.ext4 /dev/sda1
によって無事に反映できている。
root@archiso ~ # parted -l
Model: ATA VBOX HARDDISK (scsi)
Disk /dev/sda: 859MB
Sector size (logicalphysical): 512B/512B
Partition Table: msdos
Disk Flas:
Number Start End Size Type File system Flags
1 1049kB 4096MB 4095MB primary ext4
2 4096MB 6144MB 2048MB primary linux-swap(v1)
File system がいい感じに設定できている。
ようやく ArchLinux のインストール(道のりは長い…
作成した /dev/sda1 パーティションが /mnt にマウントされているので、ここを Linux インストール地とする。
root@archiso ~ # pacstrap /mnt base linux linux-firmware
==> Creating install root at /mnt
==> Installing packages to /mnt
:: Synchronizing package databases...
core 134.2 KiB 116 KiB/s 00:01 [############################################] 100%
extra 1641.2 KiB 200 KiB/s 00:08 [############################################] 100%
community 4.8 MiB 220 KiB/s 00:22 [############################################] 100%
resolving dependencies...
:: There are 2 providers available for initramfs:
:: Repository core
1) mkinitcpio
:: Repository extra
2) dracut
Enter a number (default=1):
looking for conflicting packages...
Packages (116) acl-2.2.53-2 archlinux-keyring-20200108-1 argon2-20190702-2 attr-2.4.48-2 audit-2.8.5-6 bash-5.0.011-2
bzip2-1.0.8-3 ca-certificates-20181109-3 ca-certificates-mozilla-3.50-1 ca-certificates-utils-20181109-3
coreutils-8.31-3 cracklib-2.9.7-2 cryptsetup-2.3.0-1 curl-7.68.0-1 db-5.3.28-5 dbus-1.12.16-5
device-mapper-2.02.186-5 diffutils-3.7-3 e2fsprogs-1.45.5-1 expat-2.2.9-3 file-5.38-3 filesystem-2019.10-2
findutils-4.7.0-2 gawk-5.0.1-2 gcc-libs-9.2.0-4 gdbm-1.18.1-3 gettext-0.20.1-3 glib2-2.62.4-1 glibc-2.30-3
gmp-6.1.2-3 gnupg-2.2.19-1 gnutls-3.6.12-1 gpgme-1.13.1-3 grep-3.4-1 gzip-1.10-3 hwids-20200204-1
iana-etc-20200117-1 icu-65.1-2 iproute2-5.5.0-1 iptables-1:1.8.4-1 iputils-20190709-2 json-c-0.13.1-3
kbd-2.2.0-5 keyutils-1.6.1-3 kmod-26-3 krb5-1.17.1-1 less-551-3 libarchive-3.4.1-1 libassuan-2.5.3-2
libcap-2.30-1 libcap-ng-0.7.10-1 libcroco-0.6.13-1 libelf-0.177-2 libffi-3.2.1-4 libgcrypt-1.8.5-2
libgpg-error-1.36-3 libidn2-2.3.0-1 libksba-1.3.5-2 libldap-2.4.48-2 libmnl-1.0.4-3
libnetfilterconntrack-1.0.7-1 libnfnetlink-1.0.1-3 libnftnl-1.1.5-1 libnghttp2-1.39.2-2 libnl-3.5.0-2
libpcap-1.9.1-2 libpsl-0.21.0-2 libsasl-2.1.27-2 libseccop-2.4.1-3 libsecret-0.20.1-1 libssh2-1.9.0-2
libtsn1-4.16.0-1 libtipc-1.2.5-1 libunistring-0.9.10-2 libusb-1.0.23-2 libutil-linux-2.35.1-1
libxml2-2.9.10-1 licenses-20191011-2 linux-api-headers-5.3.1-2 lz4-1:1.9.2-2 minitcpio-27-2
mkinitcpio-busybox-1.31.1-1 mpfr-4.0.2-2 ncurses-6.1-7 nettle-3.5.1-2 npth-1.6-2 openssl-1.1.1.d-2
p11-kit-0.23.20-2 pacman-5.2.1-4 pacman-mirrorlist-20200207-1 pam-1.3.1-2 pambase-20190105.1-2
pciutils-3.6.2-2 pcre-8.43-2 pcre2-10.34-3 perl-5.30.1-1 pinentry-1.1.0-5 popt-1.16-12 procps-ng-3.3.15-2
psmisc-23.3-2 readline-8.0.001-2 sed-4.8-1 shadow-4.8.1-1 sqlite-3.31.1-1 systemd-244.2-2
systemd-libs-244.2-2 systemd-sysvcompat-244.2-2 tar-1.32-3 tzdata-2019c-3 util-linux-2.35.1-1 xz-5.2.4-2
zlib-1:1.2.11-4 zstd-1.4.4-1 base-2-2 linux-5.5.2.arch1-1 linux-firmware-20200122.1eb2408-1
Total Download Size: 286.80 MiB
Total Installed Size: 1126.30 MiB
:: Proceed with installation? [Y/n]
:: Retrieving packages...
iana-etc-20200117-1-any 387.1 KiB 216 KiB/s 00:02 [############################################] 100%
filesystem-2019.10-2-x8664 27.8 KiB 0.00 B/ 00:00 [############################################] 100%
linux-api-headers-5.3.1-2-any 997.7 KiB 199 KiB/s 00:05 [############################################] 100%
tzdata-2019c-3-x86_64 341.5 KiB 242 KiB/s 00:01 [############################################] 100%
glibc-2.30-3-x86_64 9.1 MiB 204 KiB/s 00:46 [############################################] 100%
gcc-libs-9.2.0-4-x86_64 28.3 MiB 192 KiB/s 02:31 [############################################] 100%
ncurses-6.1-7-x86_64 1067.1 KiB 213 KiB/s 00:05 [############################################] 100%
readline-8.0.001-2-x86_64 296.4 KiB 248 KiB/s 00:01 [############################################] 100%
bash-5.0.011-2-x86_64 1538.5 KiB 200 KiB/s 00:08 [############################################] 100%
… しばらくかかる
(13/13) Rebuilding certificate stores...
pacstrap /mnt base linux linux-firmar 35.07s usr 10.28s system 2% cu 26:33.87 total
root has logged on pts/1 from 10.0.2.2.
この中身は OS の勉強になる箇所で、
- iana-etc : protocol などの設定 Arch Linux - iana-etc 20200117-1 (any)
- filesystem : filesystem の設定 Arch Linux - filesystem 2019.10-2 (x86_64)
- tzdata: タイムゾーンの設定
- glibc : GNU の標準 C ライブラリ。これによって、C を通じて syscall の呼び出しなどを簡単に行える。他のパッケージも glibc を利用して簡単に機能を実現している glibc | 日経 xTECH(クロステック)
- ncurses: text base interface を簡単に利用できるようにするためのライブラリ ncurses - Wikipedia
- bash : 言わずとしれたシェル
その他にも、gawk や grep, systemd などなど、ArchLinux を利用し始めるにあたり便利なものがインストールされている。
CentOS や Ubuntu などインストールしたらすぐに使えるディストリビューションでは、ここらへんは最初から同梱されている。 pacman で逐一ダウンロードしていくのが ArchLinux がシンプルだが DIY である理由。
それでも pacman があり、base, Linux などまとめてインストールできる方法が用意されているのはとても助かる(初学者には何を選んだらよいかわからんもんなぁ)
pacstrap /mnt linux
でダウンロードを実施しているが、これは、Kernel - ArchWiki のように Linux kernel をインストールしている。
「え、それじゃあ、これまで作業していた環境はいったい…?」 というのはもっともな話。そこで下記のコマンドを打つ。
root@archiso ~ # cat /etc/*-release
NAME=ArchLinux"
PRETTY_NAME="Arch Linux"
ID=arch
BUILD_ID=rolling
ANSI_COLOR="0;36"
HOME_URL="htps://www.archlinux.org/"
DOCUMENTATION_URL="https://wiki.archlinux.org/"
SUPPORT_URL="https://bbs.archlinux.org/"
BUG_REPORT_URL="https://bugs.archlinux.org/"
LOGO=archlinux
結果を見ると、こちらも ArchLinux である(よくよく思えば、最初のミラーサイトからダウンロードしてきたのも ArchLinux の iso)。
ただし、このイメージはそもそも ArchLinux の開発者が「これインストールに使ってやー」と提供しているイメージだ。
Arch Linux - Downloads に It is intended for new installations only.
と記載されている。
なので、自分がカスタマイズする最小の構成にするためには、pacman を利用して1つずつダウンロードしてくる必要があった。
(余談) pacman の利用するミラーサイト
ArchLinux のパッケージマネージャーの pacman はミラーサイトを利用からパッケージのダウンロードを実施する。
less /etc/pacman.d/mirrorlist
## Australia
Server = http://archlinux.melbourneitmirror.net/$repo/os/$arch
## United States
Server = http://mirrors.xmission.com/archlinux/$repo/os/$arch
## Belgium
Server = http://archlinux.mirror.kangaroot.net/$repo/os/$arch
## United States
Server = http://mirror.mia11.us.leaseweb.net/archlinux/$repo/os/$arch
## United States
Server = http://mirrors.xtom.com/archlinux/$repo/os/$arch
で速いミラーの場所を見ることができるが、日本からだとオーストラリア、US が浮上してくる。
pacman でのインストールが完了すると、/mnt の中に Linux の ルートディレクトリができていることがわかる。
root@archiso ~ # ls /mnt
bin boot dv etc home lib lib64 lost+found mnt opt proc root run sbin srv sys tmp usr var
# もちろんダウンロードしてきたのも ArchLinux になっている
root@archiso ~ # cat /mnt/etc/*-release
NAMEArch Linux"
PRETTY_NAME="Arch Linux"
ID=arch
BUILD_ID=rolling
ANSI_COLOR="0;36"
HOME_URL="htts://www.archli
DOCUMENTATION_URL="https://wiki.archlinux.org/"
SUPPORT_URL="https://bbs.archlinux.org/"
BUG_REPORT_URL="https://bugs.archlinux.org/"
LOGO=archlinux
/dev/sda1パーティションに自分仕様の ArchLinux が入った。 あとは、作成したパーティションがハードウェアの起動時に読み込まれればようやく自分仕様の ArchLinux が起動する。
roo@archiso ~ # genfstab -U /mnt >> /mnt/etc/fstab
fstab とはなにか?
File System Table の略で、ディスクパーティション、ブロックデバイス、リモートファイルシステムが、どのように OS の file system にマウントされるべきかを定義している。fstab - ArchWiki
生成された fstab の中身。
# <file system> <dir> <type> <options> <dump> <pass>
# /dev/sda1
UUID172faec4-2430-43f4-9926-95ac0e656d0c / ext4 rw,relatime 0 1
# /dev/sda2
UUID=bd07f22f-edae-4858-9b72-29e0b9a724a none swap defaults
/dev/sda1 と /dev/sda2 に UUID が割り当てられ、それがルートディレクトリとして設定されている。
さて、pacman で Linux をダウンロードしたときに、systemd もインストールされている。 systemd は Linux が起動したら、はじめに起動するプロセス (PID 1) となっており、これが fstab を読み取り、mount service を実行することによって、設定されたパーティションが file system として認識されるようになる。systemd
古い Linux では、これが sysvinit というプロセスだったが、systemd という Linux 共通で使えて、かつ並列に処理が行なえ、設定が簡単に行えるものに置き換えることで、Linux でのプロセス管理が楽になった。
特にコンテナ化された環境でプロセスの立ち上げや定期バッチのような処理を行う際、systemd で管理させると楽だったりする。 (crash したときにプロセスの再起動を設定できたりする。How to set up a systemd service to retry 5 times on a cycle of 30 seconds - Stack Overflow)
インストールした ArchLinux へ初期設定を実施
arch-chroot で仮想的にダウンロードした ArchLinux に入る
arch-chroot /mnt
これにより、ダウンロードしてきた自分仕様の ArchLinux に仮想的に入った状態で作業が行える(今後は fstab の設定により、OS 起動時に systemd がマウントして、ここがルートディレクトリになる)
[root@archiso /]# ln -sf /usr/share/zoneinfo/Japan /etc/localtime
[root@archiso /]# hwclock --systohc --utc
# 事前に /etc/locale.conf の en_US.UTF-8 をコメントアウトしておく
[root@archiso /]# locale-gen
Generating locales...
Generation complete.
[root@archiso /]# echo "LANG=en_US.UTF-8" > /etc/locale.conf
[root@archiso /]# echo "virtualbox-archlinux" > /etc/hostname
[root@archiso /]# pacman -S dhcpcd
[root@archiso /]# systemctl enable dhcpcd
[root@archiso /]# passwd
New password:
Retype new password:
ここでは、OS のタイムゾーンを設定、locale (地域設定)、ホスト名、ダウンロードしてきた ArchLinux の root パスワードの設定をした。 特に root のパスワード設定はしておかないと、OS 起動時に困るので必ず実施する。
また dhcpcd (DHCP client daemon) をインストールして有効にしておく(ネットワークに接続する設定を固定にするのは辛い)
また、ファイルの編集で便利なので vim や ssh するために openssh をインストールする(ここはお好みで)
[root@archiso /]# pacman -S vim
[root@archiso /]# pacman -S openssh
[root@archiso /]# systemctl enable sshd
Created symlink /etc/systemd/system/multi-user.target.wants/sshd.service → /usr/lib/systemd/system/sshd.service.
[root@ArchLinux /]# vim /etc/ssh/sshd_config
[root@ArchLinux ~]# vim /etc/ssh/sshd_config
# 下記を追記する
PermitRootLogin yes
[root@archiso /]# pacman -S which
openssh パッケージに sshd は同梱されている。sshd は upstream で PermitRootLogin yes を記載しないと root での ssh は許可されていない。
(virtualbox で立てた vm に ssh root@localhost
を実施するときは、どうやら PermitRootLogin の設定は不要そう)
【重要】GRUB2 の設定
/dev/sda1 にダウンロードされた自分仕様の ArchLinux の初期設定が完了し、最後に GRUB を利用してハードウェア起動時にブートされるように設定する。
GRUB (GNU GRand Unified Bootloader) とは
ハードウェアの電源を入れるといきなり OS が立ち上がるわけではなく、まずハードウェアに紐付いた BIOS や UEFI (いわゆる firmware) が起動する。その後、GRUB のような bootloader が立ち上がり、OS を起動するのである(過去には BIOS から直接 OS を起動させることもできたが、きっと OS 側でメンテナンスするのを止めて GRUB のような bootloader に処理を委譲したのだろう【推測】)。
例えば、bootloader を挟むことで、1つの PC に複数の OS をインストールして使いたい場合、dual boot の設定をして、Windows と Linux を起動時に選択するということができる。(最近では、docker や virtualbox で済むのであまりやらなくなってしまったが…)
参考:
- GRUBの使い方入門 | OSDN Magazine
- 【Linux】ブートローダとは?とブートローダのインストール方法
- GNU GRUB - Wikipedia
- An introduction to GRUB2 configuration for your Linux machine | Opensource.com
ArchLinux に grub をインストールする
pacman でインストールするのだが、ここでインストールされるのは、grub2 だ。
GRUB - ArchWiki に何を行っているのかが記載されている。
[root@archiso /]# pacman -S grub os-prober
resolving dependencies...
looking for conflicting packages...
Packages (2) grub-2:2.04-5 os-prober-1.77-1
Total Download Size: 6.69 MiB
Total Installed Size: 32.65 MiB
:: Proceed with installation? [Y/n] Y
:: Retrieving packages...
grub-2:2.04-5-x86_64 6.7 MiB 190 KiB/s 00:36 [############################################] 100%
os-prober-1.77-1-x86_64 16.8 KiB 0.00 B/s 00:00 [############################################] 100%
(2/2) checking keys in keyring [############################################] 100%
(2/2) checking package integrity [############################################] 100%
(2/2) loading package files [############################################] 100%
(2/2) checking for file conflicts [############################################] 100%
(2/2) checking available disk space [############################################] 100%
:: Processing package changes...
(1/2) installing grub [############################################] 100%
Generate your bootloader configuration with:
grub-mkconfig -o /boot/grub/grub.cfg
Optional dependencies for grub
freetype2: For grub-mkfont usage
fuse2: For grub-mount usage
dosfstools: For grub-mkrescue FAT FS and EFI support
efibootmgr: For grub-install EFI support
libisoburn: Provides xorriso for generating grub rescue iso using grub-mkrescue
os-prober: To detect other OSes when generating grub.cfg in BIOS systems [pending]
mtools: For grub-mkrescue FAT FS support
(2/2) installing os-prober [############################################] 100%
:: Running post-transaction hooks...
(1/1) Arming ConditionNeedsUpdate...
[root@archiso /]# grub-install /dev/sda
Installing for i386-pc platform.
Installation finished. No error reported.
[root@archiso /]# grub-mkconfig -o /boot/grub/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-linux
Found initrd image: /boot/initramfs-linux.img
Found fallback initrd image(s) in /boot: initramfs-linux-fallback.img
done
[root@archiso /]# ls /boot/grub/
fonts grub.cfg grubenv i386-pc themes
最後に /boot/grub/grub.cfg
が存在していることを確認する(重要)。
これでようやく ArchLinux のインストールと初期設定が完了。
[root@archiso /]# exit
exit
# ここはインストーラーの ArchLinux の中
root@archiso ~ # umount -R /mnt
root@archiso ~ # down -h nowshut
インストーラーのイメージを外す
このまま VM を再起動しても、インストーラーの ArchLinux が起動してしまう。そこから、「Start Existing OS」で /dev/sda1 の中に含まれた ArchLinux を起動してもよいのだが、どうせなら初期設定も完了しているし、カスタマイズした ArchLinux を起動したい。
そこで、インストーラーの disk を VirtualBox で除いてしまう。
これにより、設定した GRUB2 がダウンロードした ArchLinux を起動してくれる。
お疲れ様でした。
【付録】NG 集
上記の手順は、自分が試行錯誤してうまく起動できるところまで確認したものだが、その間に詰まったところがあったので下記に記載する。
VirtualBox から ArchLinux の VM を再起動したら grub が立ち上がった
grub の設定も完了して、勝手に vm スタートしてくれるかとおもったら、grub の画面になった。
パーティションは正しく認識しているようだが、本来は GRUB が ArchLinux をそのまま起動してもらいたいところ。
理由はネットからコピペしたコマンドにあった。
[root@archiso /]# grub-mkconfig –o /boot/grub/grub.cfg
Generating grub configuration file ...
#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by grub-mkconfig using templates
# from /etc/grub.d and settings from /etc/default/grub
#
### BEGIN /etc/grub.d/00_header ###
insmod part_gpt
insmod part_msdos
if [ -s $prefix/grubenv ]; then
load_env
fi
if [ "${next_entry" ] ; then
set default="${next_entry"
set next_entry=
save_env next_entry
set boot_once=true
else
set default="0"
fi
…
おわかりだろうか…
実はこの –o のハイフンが -o (半角のマイナス) でないため、これは /boot/grub/grub.cfg を生成していない。 よって、grub は起動したものの grub.cfg がないものと思ってしまい、その結果、grub のみが立ち上がって ArchLinux が起動しないというわけだ。
ちなみに GRUB2 からは、
set root=(hd0,msdos1)
linux /boot/vmlinuz-linux root=/dev/sda1
initrd /boot/initramfs-linux.img
boot
にて起動ができる。しかし、/boot/grub/grub.cfg を見てのとおり、ArchLinux を boot するまでに様々な設定を GRUB2 がデフォルトで考えてくれているが、上記コマンドは Linux を起動するまでのステップしか考慮していない。
ちなみに、上記コマンドで initrd の設定を忘れると下記のようなカーネルパニックを起こす。
また、上記コマンドで起動したとき、
drm:vmw_host_log vmwgfx *ERROR* Failed to send host log message
ようなエラーが発生した。boot - Why does “drm:vmw_host_log vmwgfx ERROR Failed to send host log message” show up and what can I do to fix it? - Unix & Linux Stack Exchange によると、Virtualbox がデフォルトで設定している VMSVGA が認識できないようだ。VBoxVGA に修正したら、起動は行えた。
OS 起動後、キーがリピートされて入力される
GRUB2 の設定が正しく行えていない状態で ArchLinux を起動すると、キーがリピートされてログイン時のパスフレーズ入力が詰んだ。イメージ的には下記のような状態になってしまう。
login: rrrrrrooooooooootttttttt
リソースが足りないのかと 2GB RAM, 2CPU 割り当ててみたが、状況は変わらなかった。
このとき、GRUB2 のプロンプトから直接起動していたため、グラフィックかキー入力周りが正常に機能していない可能性がある。
そんなこともあったので、/boot/grub/grub.cfg の存在確認や GRUB2 の設定のチェックはちゃんとしておきたいところ。
arch-chroot で失敗する
すでに別ターミナルで chroot が走っていると失敗するので、kill した。
root@archiso ~ # arch-chroot /mnt
mount: /mnt/proc: proc already mounted on /proc.
==> ERROR: failed to setup chroot /mnt
root@archiso ~ # ps aux | grep chroot
root 4776 0.0 0.3 7388 3908 pts/0 S 09:54 0:00 /bin/bash /usr/bin/arch-chroot /mnt
root@archiso ~ # kill 4776
root@archiso ~ # arch-chroot /mnt
[root@archiso /]#
付録
ArchLinux install までの pacman の実行結果
root@archiso ~ # pacstrap /mnt base linux linux-firmware
==> Creating install root at /mnt
==> Installing packages to /mnt
:: Synchronizing package databases...
core 134.0 KiB 122 KiB/s 00:01 [############################################] 100%
extra 1640.6 KiB 180 KiB/s 00:09 [############################################] 100%
community 4.8 MiB 190 KiB/s 00:26 [############################################] 100%
resolving dependencies...
:: There are 2 providers available for initramfs:
:: Repository core
1) mkinitcpio
:: Repository extra
2) dracut
Enter a number (default=1):
looking for conflicting packages...
Packages (116) acl-2.2.53-2 archlinux-keyring-20200108-1 argon2-20190702-2 attr-2.4.48-2 audit-2.8.5-6 bash-5.0.016-1
bzip2-1.0.8-3 ca-certificates-20181109-3 ca-certificates-mozilla-3.50-1 ca-certificates-utils-20181109-3
coreutils-8.31-3 cracklib-2.9.7-2 cryptsetup-2.3.0-1 curl-7.68.0-1 db-5.3.28-5 dbus-1.12.16-5
device-mapper-2.02.186-5 diffutils-3.7-3 e2fsprogs-1.45.5-1 expat-2.2.9-3 file-5.38-3 filesystem-2019.10-2
findutils-4.7.0-2 gawk-5.0.1-2 gcc-libs-9.2.1+20200130-2 gdbm-1.18.1-3 gettext-0.20.1-3 glib2-2.62.4-2
glibc-2.31-1 gmp-6.2.0-1 gnupg-2.2.19-1 gnutls-3.6.12-1 gpgme-1.13.1-3 grep-3.4-1 gzip-1.10-3
hwids-20200204-1 iana-etc-20200117-1 icu-65.1-2 iproute2-5.5.0-1 iptables-1:1.8.4-1 iputils-20190709-2
json-c-0.13.1-3 kbd-2.2.0-5 keyutils-1.6.1-3 kmod-26-3 krb5-1.17.1-1 less-551-3 libarchive-3.4.2-1
libassuan-2.5.3-2 libcap-2.31-1 libcap-ng-0.7.10-1 libcroco-0.6.13-1 libelf-0.177-2 libffi-3.2.1-4
libgcrypt-1.8.5-2 libgpg-error-1.37-1 libidn2-2.3.0-1 libksba-1.3.5-2 libldap-2.4.49-1 libmnl-1.0.4-3
libnetfilter_conntrack-1.0.7-1 libnfnetlink-1.0.1-3 libnftnl-1.1.5-1 libnghttp2-1.39.2-2 libnl-3.5.0-2
libpcap-1.9.1-2 libpsl-0.21.0-2 libsasl-2.1.27-2 libseccomp-2.4.1-3 libsecret-0.20.1-1 libssh2-1.9.0-2
libtasn1-4.16.0-1 libtirpc-1.2.5-1 libunistring-0.9.10-2 libusb-1.0.23-2 libutil-linux-2.35.1-1
libxml2-2.9.10-1 licenses-20191011-2 linux-api-headers-5.4.17-1 lz4-1:1.9.2-2 mkinitcpio-27-2
mkinitcpio-busybox-1.31.1-1 mpfr-4.0.2-2 ncurses-6.2-1 nettle-3.5.1-2 npth-1.6-2 openssl-1.1.1.d-2
p11-kit-0.23.20-2 pacman-5.2.1-4 pacman-mirrorlist-20200207-1 pam-1.3.1-2 pambase-20190105.1-2
pciutils-3.6.2-2 pcre-8.43-2 pcre2-10.34-3 perl-5.30.1-1 pinentry-1.1.0-5 popt-1.16-12 procps-ng-3.3.15-2
psmisc-23.3-2 readline-8.0.004-1 sed-4.8-1 shadow-4.8.1-1 sqlite-3.31.1-1 systemd-244.3-1
systemd-libs-244.3-1 systemd-sysvcompat-244.3-1 tar-1.32-3 tzdata-2019c-3 util-linux-2.35.1-1 xz-5.2.4-2
zlib-1:1.2.11-4 zstd-1.4.4-1 base-2-2 linux-5.5.4.arch1-1 linux-firmware-20200204.b791e15-1
Total Download Size: 290.85 MiB
Total Installed Size: 1128.12 MiB
:: Proceed with installation? [Y/n]
:: Retrieving packages...
iana-etc-20200117-1-any 387.1 KiB 164 KiB/s 00:02 [############################################] 100%
filesystem-2019.10-2-x86_64 27.8 KiB 0.00 B/s 00:00 [############################################] 100%
linux-api-headers-5.4.17-1-any 1040.3 KiB 189 KiB/s 00:06 [############################################] 100%
tzdata-2019c-3-x86_64 341.5 KiB 167 KiB/s 00:02 [############################################] 100%
glibc-2.31-1-x86_64 9.8 MiB 178 KiB/s 00:56 [############################################] 100%
gcc-libs-9.2.1+20200130-2-x86_64 30.8 MiB 198 KiB/s 02:39 [############################################] 100%
ncurses-6.2-1-x86_64 1141.2 KiB 1101 KiB/s 00:01 [############################################] 100%
readline-8.0.004-1-x86_64 309.7 KiB 23.3 MiB/s 00:00 [############################################] 100%
bash-5.0.016-1-x86_64 1648.5 KiB 1610 KiB/s 00:01 [############################################] 100%
attr-2.4.48-2-x86_64 65.0 KiB 0.00 B/s 00:00 [############################################] 100%
acl-2.2.53-2-x86_64 131.9 KiB 18.4 MiB/s 00:00 [############################################] 100%
gmp-6.2.0-1-x86_64 439.6 KiB 2.57 MiB/s 00:00 [############################################] 100%
libcap-2.31-1-x86_64 53.7 KiB 0.00 B/s 00:00 [############################################] 100%
gdbm-1.18.1-3-x86_64 160.4 KiB 0.00 B/s 00:00 [############################################] 100%
db-5.3.28-5-x86_64 1098.0 KiB 1649 KiB/s 00:01 [############################################] 100%
perl-5.30.1-1-x86_64 14.2 MiB 3.23 MiB/s 00:04 [############################################] 100%
openssl-1.1.1.d-2-x86_64 3.4 MiB 5.08 MiB/s 00:01 [############################################] 100%
coreutils-8.31-3-x86_64 2.4 MiB 457 KiB/s 00:05 [############################################] 100%
zlib-1:1.2.11-4-x86_64 81.5 KiB 0.00 B/s 00:00 [############################################] 100%
xz-5.2.4-2-x86_64 231.3 KiB 215 KiB/s 00:01 [############################################] 100%
bzip2-1.0.8-3-x86_64 53.4 KiB 0.00 B/s 00:00 [############################################] 100%
libseccomp-2.4.1-3-x86_64 75.1 KiB 0.00 B/s 00:00 [############################################] 100%
file-5.38-3-x86_64 314.2 KiB 220 KiB/s 00:01 [############################################] 100%
findutils-4.7.0-2-x86_64 454.6 KiB 247 KiB/s 00:02 [############################################] 100%
mpfr-4.0.2-2-x86_64 314.0 KiB 216 KiB/s 00:01 [############################################] 100%
gawk-5.0.1-2-x86_64 1096.3 KiB 235 KiB/s 00:05 [############################################] 100%
pcre-8.43-2-x86_64 931.2 KiB 312 KiB/s 00:03 [############################################] 100%
grep-3.4-1-x86_64 204.2 KiB 624 KiB/s 00:00 [############################################] 100%
libgpg-error-1.37-1-x86_64 223.7 KiB 652 KiB/s 00:00 [############################################] 100%
libgcrypt-1.8.5-2-x86_64 485.4 KiB 198 KiB/s 00:02 [############################################] 100%
lz4-1:1.9.2-2-x86_64 109.4 KiB 148 KiB/s 00:01 [############################################] 100%
systemd-libs-244.3-1-x86_64 457.1 KiB 248 KiB/s 00:02 [############################################] 100%
procps-ng-3.3.15-2-x86_64 340.7 KiB 170 KiB/s 00:02 [############################################] 100%
sed-4.8-1-x86_64 237.9 KiB 205 KiB/s 00:01 [############################################] 100%
tar-1.32-3-x86_64 742.3 KiB 196 KiB/s 00:04 [############################################] 100%
libffi-3.2.1-4-x86_64 31.3 KiB 4.37 MiB/s 00:00 [############################################] 100%
libutil-linux-2.35.1-1-x86_64 409.0 KiB 239 KiB/s 00:02 [############################################] 100%
glib2-2.62.4-2-x86_64 2.7 MiB 299 KiB/s 00:09 [############################################] 100%
libunistring-0.9.10-2-x86_64 498.6 KiB 170 KiB/s 00:03 [############################################] 100%
icu-65.1-2-x86_64 8.9 MiB 192 KiB/s 00:47 [############################################] 100%
gettext-0.20.1-3-x86_64 1929.0 KiB 214 KiB/s 00:09 [############################################] 100%
hwids-20200204-1-any 402.6 KiB 208 KiB/s 00:02 [############################################] 100%
kmod-26-3-x86_64 113.9 KiB 345 KiB/s 00:00 [############################################] 100%
pciutils-3.6.2-2-x86_64 86.8 KiB 212 KiB/s 00:00 [############################################] 100%
psmisc-23.3-2-x86_64 110.1 KiB 280 KiB/s 00:00 [############################################] 100%
cracklib-2.9.7-2-x86_64 250.4 KiB 230 KiB/s 00:01 [############################################] 100%
e2fsprogs-1.45.5-1-x86_64 1195.4 KiB 188 KiB/s 00:06 [############################################] 100%
libsasl-2.1.27-2-x86_64 136.2 KiB 332 KiB/s 00:00 [############################################] 100%
libldap-2.4.49-1-x86_64 300.6 KiB 154 KiB/s 00:02 [############################################] 100%
keyutils-1.6.1-3-x86_64 88.3 KiB 215 KiB/s 00:00 [############################################] 100%
krb5-1.17.1-1-x86_64 1334.3 KiB 167 KiB/s 00:08 [############################################] 100%
libtirpc-1.2.5-1-x86_64 170.0 KiB 260 KiB/s 00:01 [############################################] 100%
pambase-20190105.1-2-any 2.9 KiB 0.00 B/s 00:00 [############################################] 100%
pam-1.3.1-2-x86_64 559.6 KiB 102 KiB/s 00:05 [############################################] 100%
libcap-ng-0.7.10-1-x86_64 35.7 KiB 0.00 B/s 00:00 [############################################] 100%
audit-2.8.5-6-x86_64 338.5 KiB 142 KiB/s 00:02 [############################################] 100%
shadow-4.8.1-1-x86_64 1171.2 KiB 193 KiB/s 00:06 [############################################] 100%
util-linux-2.35.1-1-x86_64 2.4 MiB 191 KiB/s 00:13 [############################################] 100%
less-551-3-x86_64 100.9 KiB 266 KiB/s 00:00 [############################################] 100%
gzip-1.10-3-x86_64 77.8 KiB 0.00 B/s 00:00 [############################################] 100%
licenses-20191011-2-any 66.8 KiB 21.7 MiB/s 00:00 [############################################] 100%
expat-2.2.9-3-x86_64 94.6 KiB 290 KiB/s 00:00 [############################################] 100%
zstd-1.4.4-1-x86_64 391.9 KiB 213 KiB/s 00:02 [############################################] 100%
libarchive-3.4.2-1-x86_64 500.9 KiB 196 KiB/s 00:03 [############################################] 100%
libtasn1-4.16.0-1-x86_64 121.3 KiB 299 KiB/s 00:00 [############################################] 100%
device-mapper-2.02.186-5-x86_64 291.3 KiB 181 KiB/s 00:02 [############################################] 100%
popt-1.16-12-x86_64 62.9 KiB 0.00 B/s 00:00 [############################################] 100%
json-c-0.13.1-3-x86_64 45.0 KiB 0.00 B/s 00:00 [############################################] 100%
argon2-20190702-2-x86_64 30.2 KiB 0.00 B/s 00:00 [############################################] 100%
cryptsetup-2.3.0-1-x86_64 540.1 KiB 195 KiB/s 00:03 [############################################] 100%
dbus-1.12.16-5-x86_64 298.3 KiB 209 KiB/s 00:01 [############################################] 100%
libmnl-1.0.4-3-x86_64 10.4 KiB 3.40 MiB/s 00:00 [############################################] 100%
libnftnl-1.1.5-1-x86_64 61.1 KiB 0.00 B/s 00:00 [############################################] 100%
libnl-3.5.0-2-x86_64 364.7 KiB 223 KiB/s 00:02 [############################################] 100%
libusb-1.0.23-2-x86_64 57.0 KiB 0.00 B/s 00:00 [############################################] 100%
libpcap-1.9.1-2-x86_64 240.0 KiB 195 KiB/s 00:01 [############################################] 100%
iptables-1:1.8.4-1-x86_64 426.5 KiB 186 KiB/s 00:02 [############################################] 100%
kbd-2.2.0-5-x86_64 1135.6 KiB 202 KiB/s 00:06 [############################################] 100%
libidn2-2.3.0-1-x86_64 115.9 KiB 141 KiB/s 00:01 [############################################] 100%
libelf-0.177-2-x86_64 373.5 KiB 146 KiB/s 00:03 [############################################] 100%
pcre2-10.34-3-x86_64 1038.5 KiB 162 KiB/s 00:06 [############################################] 100%
systemd-244.3-1-x86_64 5.1 MiB 194 KiB/s 00:27 [############################################] 100%
p11-kit-0.23.20-2-x86_64 579.6 KiB 236 KiB/s 00:02 [############################################] 100%
ca-certificates-utils-20181109-3-any 8.2 KiB 0.00 B/s 00:00 [############################################] 100%
ca-certificates-mozilla-3.50-1-x86_64 336.7 KiB 245 KiB/s 00:01 [############################################] 100%
ca-certificates-20181109-3-any 2.1 KiB 0.00 B/s 00:00 [############################################] 100%
libssh2-1.9.0-2-x86_64 205.8 KiB 289 KiB/s 00:01 [############################################] 100%
libpsl-0.21.0-2-x86_64 73.2 KiB 224 KiB/s 00:00 [############################################] 100%
libnghttp2-1.39.2-2-x86_64 86.7 KiB 234 KiB/s 00:00 [############################################] 100%
curl-7.68.0-1-x86_64 1018.0 KiB 181 KiB/s 00:06 [############################################] 100%
npth-1.6-2-x86_64 12.8 KiB 0.00 B/s 00:00 [############################################] 100%
libksba-1.3.5-2-x86_64 116.6 KiB 305 KiB/s 00:00 [############################################] 100%
libassuan-2.5.3-2-x86_64 85.0 KiB 207 KiB/s 00:00 [############################################] 100%
libsecret-0.20.1-1-x86_64 236.6 KiB 225 KiB/s 00:01 [############################################] 100%
pinentry-1.1.0-5-x86_64 101.6 KiB 363 KiB/s 00:00 [############################################] 100%
nettle-3.5.1-2-x86_64 329.4 KiB 229 KiB/s 00:01 [############################################] 100%
gnutls-3.6.12-1-x86_64 2.8 MiB 186 KiB/s 00:15 [############################################] 100%
sqlite-3.31.1-1-x86_64 1558.6 KiB 198 KiB/s 00:08 [############################################] 100%
gnupg-2.2.19-1-x86_64 2.1 MiB 204 KiB/s 00:11 [############################################] 100%
gpgme-1.13.1-3-x86_64 410.9 KiB 220 KiB/s 00:02 [############################################] 100%
pacman-mirrorlist-20200207-1-any 6.0 KiB 0.00 B/s 00:00 [############################################] 100%
archlinux-keyring-20200108-1-any 868.3 KiB 194 KiB/s 00:04 [############################################] 100%
pacman-5.2.1-4-x86_64 836.6 KiB 194 KiB/s 00:04 [############################################] 100%
systemd-sysvcompat-244.3-1-x86_64 8.0 KiB 0.00 B/s 00:00 [############################################] 100%
iputils-20190709-2-x86_64 92.1 KiB 249 KiB/s 00:00 [############################################] 100%
iproute2-5.5.0-1-x86_64 913.4 KiB 186 KiB/s 00:05 [############################################] 100%
base-2-2-any 2.1 KiB 0.00 B/s 00:00 [############################################] 100%
mkinitcpio-busybox-1.31.1-1-x86_64 254.8 KiB 207 KiB/s 00:01 [############################################] 100%
diffutils-3.7-3-x86_64 324.1 KiB 173 KiB/s 00:02 [############################################] 100%
mkinitcpio-27-2-any 40.7 KiB 0.00 B/s 00:00 [############################################] 100%
linux-5.5.4.arch1-1-x86_64 69.1 MiB 202 KiB/s 05:51 [############################################] 100%
linux-firmware-20200204.b791e15-1-any 99.3 MiB 190 KiB/s 08:56 [############################################] 100%
libxml2-2.9.10-1-x86_64 1267.4 KiB 252 KiB/s 00:05 [############################################] 100%
libcroco-0.6.13-1-x86_64 146.0 KiB 180 KiB/s 00:01 [############################################] 100%
libnfnetlink-1.0.1-3-x86_64 16.4 KiB 0.00 B/s 00:00 [############################################] 100%
libnetfilter_conntrack-1.0.7-1-x86_64 47.5 KiB 0.00 B/s 00:00 [############################################] 100%
(116/116) checking keys in keyring [############################################] 100%
(116/116) checking package integrity [############################################] 100%
(116/116) loading package files [############################################] 100%
(116/116) checking for file conflicts [############################################] 100%
:: Processing package changes...
( 1/116) installing iana-etc [############################################] 100%
( 2/116) installing filesystem [############################################] 100%
( 3/116) installing linux-api-headers [############################################] 100%
( 4/116) installing tzdata [############################################] 100%
( 5/116) installing glibc [############################################] 100%
Optional dependencies for glibc
gd: for memusagestat
( 6/116) installing gcc-libs [############################################] 100%
( 7/116) installing ncurses [############################################] 100%
( 8/116) installing readline [############################################] 100%
( 9/116) installing bash [############################################] 100%
Optional dependencies for bash
bash-completion: for tab completion
( 10/116) installing attr [############################################] 100%
( 11/116) installing acl [############################################] 100%
( 12/116) installing gmp [############################################] 100%
( 13/116) installing libcap [############################################] 100%
( 14/116) installing gdbm [############################################] 100%
( 15/116) installing db [############################################] 100%
( 16/116) installing perl [############################################] 100%
( 17/116) installing openssl [############################################] 100%
Optional dependencies for openssl
ca-certificates [pending]
( 18/116) installing coreutils [############################################] 100%
( 19/116) installing zlib [############################################] 100%
( 20/116) installing xz [############################################] 100%
( 21/116) installing bzip2 [############################################] 100%
( 22/116) installing libseccomp [############################################] 100%
( 23/116) installing file [############################################] 100%
( 24/116) installing findutils [############################################] 100%
( 25/116) installing mpfr [############################################] 100%
( 26/116) installing gawk [############################################] 100%
( 27/116) installing pcre [############################################] 100%
( 28/116) installing grep [############################################] 100%
( 29/116) installing libgpg-error [############################################] 100%
( 30/116) installing libgcrypt [############################################] 100%
( 31/116) installing lz4 [############################################] 100%
( 32/116) installing systemd-libs [############################################] 100%
( 33/116) installing procps-ng [############################################] 100%
( 34/116) installing sed [############################################] 100%
( 35/116) installing tar [############################################] 100%
( 36/116) installing libffi [############################################] 100%
( 37/116) installing libutil-linux [############################################] 100%
( 38/116) installing glib2 [############################################] 100%
Optional dependencies for glib2
python: gdbus-codegen, glib-genmarshal, glib-mkenums, gtester-report
libelf: gresource inspection tool [pending]
( 39/116) installing libunistring [############################################] 100%
( 40/116) installing icu [############################################] 100%
( 41/116) installing libxml2 [############################################] 100%
( 42/116) installing libcroco [############################################] 100%
( 43/116) installing gettext [############################################] 100%
Optional dependencies for gettext
git: for autopoint infrastructure updates
( 44/116) installing hwids [############################################] 100%
( 45/116) installing kmod [############################################] 100%
( 46/116) installing pciutils [############################################] 100%
( 47/116) installing psmisc [############################################] 100%
( 48/116) installing cracklib [############################################] 100%
( 49/116) installing e2fsprogs [############################################] 100%
( 50/116) installing libsasl [############################################] 100%
( 51/116) installing libldap [############################################] 100%
( 52/116) installing keyutils [############################################] 100%
( 53/116) installing krb5 [############################################] 100%
( 54/116) installing libtirpc [############################################] 100%
( 55/116) installing pambase [############################################] 100%
( 56/116) installing pam [############################################] 100%
( 57/116) installing libcap-ng [############################################] 100%
( 58/116) installing audit [############################################] 100%
( 59/116) installing shadow [############################################] 100%
( 60/116) installing util-linux [############################################] 100%
Optional dependencies for util-linux
python: python bindings to libmount
words: default dictionary for look
( 61/116) installing less [############################################] 100%
( 62/116) installing gzip [############################################] 100%
( 63/116) installing licenses [############################################] 100%
( 64/116) installing expat [############################################] 100%
( 65/116) installing zstd [############################################] 100%
( 66/116) installing libarchive [############################################] 100%
( 67/116) installing libtasn1 [############################################] 100%
( 68/116) installing device-mapper [############################################] 100%
( 69/116) installing popt [############################################] 100%
( 70/116) installing json-c [############################################] 100%
( 71/116) installing argon2 [############################################] 100%
( 72/116) installing cryptsetup [############################################] 100%
( 73/116) installing dbus [############################################] 100%
( 74/116) installing libmnl [############################################] 100%
( 75/116) installing libnftnl [############################################] 100%
( 76/116) installing libnl [############################################] 100%
( 77/116) installing libusb [############################################] 100%
( 78/116) installing libpcap [############################################] 100%
( 79/116) installing libnfnetlink [############################################] 100%
( 80/116) installing libnetfilter_conntrack [############################################] 100%
( 81/116) installing iptables [############################################] 100%
( 82/116) installing kbd [############################################] 100%
( 83/116) installing libidn2 [############################################] 100%
( 84/116) installing libelf [############################################] 100%
( 85/116) installing pcre2 [############################################] 100%
( 86/116) installing systemd [############################################] 100%
Initializing machine ID from random generator.
Created symlink /etc/systemd/system/getty.target.wants/getty@tty1.service → /usr/lib/systemd/system/getty@.service.
Created symlink /etc/systemd/system/multi-user.target.wants/remote-fs.target → /usr/lib/systemd/system/remote-fs.target.
:: Append 'init=/usr/lib/systemd/systemd' to your kernel command line in your
bootloader to replace sysvinit with systemd, or install systemd-sysvcompat
Optional dependencies for systemd
libmicrohttpd: remote journald capabilities
quota-tools: kernel-level quota management
systemd-sysvcompat: symlink package to provide sysvinit binaries [pending]
polkit: allow administration as unprivileged user
curl: machinectl pull-tar and pull-raw [pending]
( 87/116) installing p11-kit [############################################] 100%
Created symlink /etc/systemd/user/sockets.target.wants/p11-kit-server.socket → /usr/lib/systemd/user/p11-kit-server.socket.
( 88/116) installing ca-certificates-utils [############################################] 100%
( 89/116) installing ca-certificates-mozilla [############################################] 100%
( 90/116) installing ca-certificates [############################################] 100%
( 91/116) installing libssh2 [############################################] 100%
( 92/116) installing libpsl [############################################] 100%
( 93/116) installing libnghttp2 [############################################] 100%
( 94/116) installing curl [############################################] 100%
( 95/116) installing npth [############################################] 100%
( 96/116) installing libksba [############################################] 100%
( 97/116) installing libassuan [############################################] 100%
( 98/116) installing libsecret [############################################] 100%
Optional dependencies for libsecret
org.freedesktop.secrets: secret storage backend
( 99/116) installing pinentry [############################################] 100%
Optional dependencies for pinentry
gtk2: gtk2 backend
qt5-base: qt backend
gcr: gnome3 backend
(100/116) installing nettle [############################################] 100%
(101/116) installing gnutls [############################################] 100%
Optional dependencies for gnutls
guile: for use with Guile bindings
(102/116) installing sqlite [############################################] 100%
(103/116) installing gnupg [############################################] 100%
Optional dependencies for gnupg
libldap: gpg2keys_ldap [installed]
libusb-compat: scdaemon
pcsclite: scdaemon
(104/116) installing gpgme [############################################] 100%
(105/116) installing pacman-mirrorlist [############################################] 100%
(106/116) installing archlinux-keyring [############################################] 100%
(107/116) installing pacman [############################################] 100%
Optional dependencies for pacman
perl-locale-gettext: translation support in makepkg-template
(108/116) installing systemd-sysvcompat [############################################] 100%
(109/116) installing iputils [############################################] 100%
Optional dependencies for iputils
xinetd: for tftpd
(110/116) installing iproute2 [############################################] 100%
Optional dependencies for iproute2
linux-atm: ATM support
(111/116) installing base [############################################] 100%
Optional dependencies for base
linux: bare metal support [pending]
(112/116) installing mkinitcpio-busybox [############################################] 100%
(113/116) installing diffutils [############################################] 100%
(114/116) installing mkinitcpio [############################################] 100%
Optional dependencies for mkinitcpio
xz: Use lzma or xz compression for the initramfs image [installed]
bzip2: Use bzip2 compression for the initramfs image [installed]
lzop: Use lzo compression for the initramfs image
lz4: Use lz4 compression for the initramfs image [installed]
mkinitcpio-nfs-utils: Support for root filesystem on NFS
(115/116) installing linux [############################################] 100%
Optional dependencies for linux
crda: to set the correct wireless channels of your country
linux-firmware: firmware images needed for some devices [pending]
(116/116) installing linux-firmware [############################################] 100%
:: Running post-transaction hooks...
( 1/13) Creating system user accounts...
( 2/13) Updating journal message catalog...
( 3/13) Reloading system manager configuration...
Running in chroot, ignoring request: daemon-reload
( 4/13) Updating udev hardware database...
( 5/13) Applying kernel sysctl settings...
( 6/13) Creating temporary files...
( 7/13) Reloading device manager configuration...
Running in chroot, ignoring request.
( 8/13) Arming ConditionNeedsUpdate...
( 9/13) Updating module dependencies...
(10/13) Updating linux initcpios...
==> Building image from preset: /etc/mkinitcpio.d/linux.preset: 'default'
-> -k /boot/vmlinuz-linux -c /etc/mkinitcpio.conf -g /boot/initramfs-linux.img
==> Starting build: 5.5.4-arch1-1
-> Running build hook: [base]
-> Running build hook: [udev]
-> Running build hook: [autodetect]
-> Running build hook: [modconf]
-> Running build hook: [block]
-> Running build hook: [filesystems]
-> Running build hook: [keyboard]
-> Running build hook: [fsck]
==> Generating module dependencies
==> Creating gzip-compressed initcpio image: /boot/initramfs-linux.img
==> Image generation successful
==> Building image from preset: /etc/mkinitcpio.d/linux.preset: 'fallback'
-> -k /boot/vmlinuz-linux -c /etc/mkinitcpio.conf -g /boot/initramfs-linux-fallback.img -S autodetect
==> Starting build: 5.5.4-arch1-1
-> Running build hook: [base]
-> Running build hook: [udev]
-> Running build hook: [modconf]
-> Running build hook: [block]
==> WARNING: Possibly missing firmware for module: aic94xx
==> WARNING: Possibly missing firmware for module: wd719x
-> Running build hook: [filesystems]
-> Running build hook: [keyboard]
-> Running build hook: [fsck]
==> Generating module dependencies
==> Creating gzip-compressed initcpio image: /boot/initramfs-linux-fallback.img
==> Image generation successful
(11/13) Reloading system bus configuration...
Running in chroot, ignoring request: try-reload-or-restart
(12/13) Warn about old perl modules
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LC_MESSAGES = "",
LANG = "en_US.UTF-8"
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
(13/13) Rebuilding certificate stores...
pacstrap /mnt base linux linux-firmware 121.95s user 41.46s system 9% cpu 28:00.48 total