Mac の VirtualBox に archlinux をインストールしてみた

DIY だが OS 起動に必要なものが理解できてくる


Posted on Tue, Feb 11, 2020
Tags mac, virtualbox, archlinux, os, linux

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 - DownloadsChecksums から 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 - ArchWikiExample 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 の勉強になる箇所で、

  1. iana-etc : protocol などの設定 Arch Linux - iana-etc 20200117-1 (any)
  2. filesystem : filesystem の設定 Arch Linux - filesystem 2019.10-2 (x86_64)
  3. tzdata: タイムゾーンの設定
  4. glibc : GNU の標準 C ライブラリ。これによって、C を通じて syscall の呼び出しなどを簡単に行える。他のパッケージも glibc を利用して簡単に機能を実現している glibc | 日経 xTECH(クロステック)
  5. ncurses: text base interface を簡単に利用できるようにするためのライブラリ ncurses - Wikipedia
  6. 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 - DownloadsIt is intended for new installations only. と記載されている。

なので、自分がカスタマイズする最小の構成を行うためには、pacman を利用して一つ一つダウンロードしてくる必要があった。

(余談) 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 を挟むことで、一つの PC に複数の OS をインストールして使いたい場合、dual boot の設定を行って、Windows と linux を起動時に選択するということができる。(最近では、docker や virtualbox で済むのであまりやらなくなってしまったが……)

参考:

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