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

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


Posted on 2020年 2月 11日 (火)
Tags mac, virtualbox, archlinux, os, linux
mac, virtualbox, archlinux, os, linux

ArchLinux を試してみたかった

OS を理解する上で、シンプルなところから理解したい。それには、シンプルな OS から始めるのが良さそう、ということで、ArchLinux を試してみることにした。

docker image ですぐに試すことはできるが、最近購入した NUC にインストールしたかったので、まず手始めに Mac の VirtualBox でインストールしてみる。

結果的に、VirtualBox で始めるのは非常によかった。インストールだけでも様々な仕組みの理解が必要になるし、ハードウェアにインストールすると最初からやり直すのが難しい

VirtualBox のインストール

よく使われる仮想化ソフト。Docker を普段使っているので、VirtualBox が古くなっていた。

1brew cask install virtualbox

すでにインストールしている場合は、

1brew 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 ファイルの検証する。

1brew install gnupg  
2# Tips : locale は US にしておいたほうが、エラーログが出たときにググりやすいので英語にしておく
3export LANG=en_US.UTF-8

Arch Linux - Downloads の Checksums から PGP signature をダウンロード。これと iso ファイルを照合する。

1gpg --keyserver-options auto-key-retrieve --verify archlinux-2020.02.01-x86_64.iso.sig
2
3gpg: assuming signed data in 'archlinux-2020.02.01-x86_64.iso'
4gpg: Signature made Sat Feb  1 15:57:48 2020 JST
5gpg:                using RSA key 4AA4767BBC9C4B1D18AE28B77F2D434B9741E8AC
6gpg: Good signature from "Pierre Schmitz <pierre@archlinux.de>" [unknown]
7gpg: WARNING: This key is not certified with a trusted signature!
8gpg:          There is no indication that the signature belongs to the owner.
9Primary 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 できないので、

1passwd

で、root user のパスワードを設定する。これにより、Mac のターミナルから、

1ssh -p 41231 root@localhost
2# 決めたパスワード

でログインできる。このほうが圧倒的に作業がしやすく、ログも残しやすい。以下、Mac からの ssh で作業をおこなっていく

インターネットアクセスを確認する

インターネットから pacman というパッケージマネージャー経由でソフトウェアをインストールをしたり、また日時を合わせたり必要なため、インターネットが繋げる環境で OS の初期設定を実施する(なくてもできそうだが、そのためにはまた手順が必要)

 1root@archiso ~ # ip link
 21: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
 3    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
 42: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
 5    link/ether 08:00:27:54:47:4f brd ff:ff:ff:ff:ff:ff
 6
 7root@archiso ~ # ping google.com
 8PING google.com (172.217.25.78) 56(84) bytes of data.
 964 bytes from nrt13s50-in-f78.1e100.net (172.217.25.78): icmp_seq=1 ttl=63 time=5.50 ms
1064 bytes from nrt13s50-in-f78.1e100.net (172.217.25.78): icmp_seq=2 ttl=63 time=5.39 ms
11^C
12--- google.com ping statistics ---
132 packets transmitted, 2 received, 0% packet loss, time 1002ms
14rtt 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 のインストーラーに認識されている。

1root@archiso ~ # parted -l
2Model: ATA VBOX HARDDISK (scsi)
3Disk /dev/sda: 8590MB
4Sector size (logical/physical): 512B/512B
5Partition Table: msdos
6Disk Flags:
7
8Number  Start  End  Size  Type  File system  Flags

この状態でも、/dev/sda は msdos としてジャーナリングされているが、ArchLinux を設定する上で、2 つパーティションが必要になるため、これらを作る。

パーティションのディスクサイズが小さい場合は、fdisk コマンドでもよいのだが、MBR 方式、GPT 方式の両方が作成できる parted コマンドをここでは使う。

 1root@archiso ~ # parted /dev/sda
 2GNU Parted 3.3
 3Using /dev/sda
 4Welcome to GNU Parted! Type 'help' to view a list of commands.
 5(parted) mklabel msdos
 6Warning: The existing disk label on /dev/sda will be destroyed and all data on this disk will be lost. Do you want to continue?
 7Yes/No? yes
 8(parted) unit MB
 9
10(parted) mkpart
11Partition type?  primary/extended? primary
12File system type?  [ext2]? ext4
13Start? 1
14End? 4096
15(parted) p
16Model: ATA VBOX HARDDISK (scsi)
17Disk /dev/sda: 8590MB
18Sector size (logical/physical): 512B/512B
19Partition Table: msdos
20Disk Flags:
21
22Number  Start   End     Size    Type     File system  Flags
23 1      1.05MB  4096MB  4095MB  primary  ext4         lba
24
25(parted) mkpart
26Partition type?  primary/extended? primary
27File system type?  [ext2]? ext4
28Start? 4096
29End? 6144
30(parted) p
31Model: ATA VBOX HARDDISK (scsi)
32Disk /dev/sda: 8590MB
33Sector size (logical/physical): 512B/512B
34Partition Table: msdos
35Disk Flags:
36
37Number  Start   End     Size    Type     File system  Flags
38 1      1.05MB  4096MB  4095MB  primary  ext4         lba
39 2      4096MB  6144MB  2048MB  primary  ext4         lba
40
41(parted) q

ここでは、シンプルに UEFI を利用せずに、BIOS で起動するため、パーティションは /dev/sda1 /dev/sda2 のみを利用する。

なぜ2つなのかは、Installation guide - ArchWiki の Example layouts を参考にしたため。

 1root@archiso ~ # parted -l
 2Model: ATA VBOX HARDDISK (scsi)
 3Disk /dev/sda: 8590MB
 4Sector size (logical/physical): 512B/512B
 5Partition Table: msdos
 6Disk Flags:
 7
 8Number  Start   End     Size    Type     File system  Flags
 9 1      1049kB  4096MB  4095MB  primary
10 2      4096MB  6144MB  2048MB  primary

この状態になっていることを確認する。

/dev/sda2 を Linux swap 領域にする

1root@archiso ~ # mkswap /dev/sda2
2Setting up swapspace version 1, size  1.9 GB (2047864832 bytes)
3no label, UUID=bd07f22f-edae-4858-9b72-29e01b9a724a
4root@archiso ~ # swapon /dev/sda2

/dev/sda2 を swap 領域に設定する(正直、メモリ使わないので今回は必要ない気がするが)

/dev/sda1 をフォーマットして /mnt にマウントする

 1root@archiso ~ # mount /dev/sda1 /mnt
 2mount: /mnt: wrong fs type, bad option, bad superblock on dev/sda1, missing codepage or helper program, or other error.
 3
 4root@archiso ~ #  mkfs.ext4 /dev/sda1
 5mke2fs 1.45.5 (07-Jan-20)
 6Creating filesystem with 999680 4k blocks and 249984 inodes
 7Filesystem UUID: 72faec4-2430-43f4-926-95ac0e656d0c
 8Superblock backups stored on blocks:
 9        32768, 98304, 163840, 229376, 294912, 819200, 884736
10
11Allocating group tables: done
12Writing inode tables: done
13Creating journal (16384 blocks): done
14Writing superblocks and filesystem accounting information: done
15
16root@archiso ~ # mount dev/sda1 /mnt
17成功した

最初の mount で失敗して気になったが、どうやら parted で作成したパーティションで ext4 を指定したものの、あれは反映されていなかった。 mkfs.ext4 /dev/sda1 によって無事に反映できている。

 1root@archiso ~ # parted -l
 2Model: ATA VBOX HARDDISK (scsi)
 3Disk /dev/sda: 859MB
 4Sector size (logicalphysical): 512B/512B
 5Partition Table: msdos
 6Disk Flas:
 7
 8Number  Start   End     Size    Type     File system     Flags
 9 1      1049kB  4096MB  4095MB  primary  ext4
10 2      4096MB  6144MB  2048MB  primary  linux-swap(v1)

File system がいい感じに設定できている。

ようやく ArchLinux のインストール(道のりは長い…

作成した /dev/sda1 パーティションが /mnt にマウントされているので、ここを Linux インストール地とする。

 1root@archiso ~ # pacstrap /mnt base linux linux-firmware
 2==> Creating install root at /mnt
 3==> Installing packages to /mnt
 4:: Synchronizing package databases...
 5 core                                              134.2 KiB   116 KiB/s 00:01 [############################################] 100%
 6 extra                                            1641.2 KiB   200 KiB/s 00:08 [############################################] 100%
 7 community                                           4.8 MiB   220 KiB/s 00:22 [############################################] 100%
 8resolving dependencies...
 9:: There are 2 providers available for initramfs:
10:: Repository core
11   1) mkinitcpio
12:: Repository extra
13   2) dracut
14
15Enter a number (default=1):
16looking for conflicting packages...
17
18Packages (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
19               bzip2-1.0.8-3  ca-certificates-20181109-3  ca-certificates-mozilla-3.50-1  ca-certificates-utils-20181109-3
20               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
21               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
22               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
23               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
24               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
25               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
26               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
27               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
28               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
29               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
30               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
31               libxml2-2.9.10-1  licenses-20191011-2  linux-api-headers-5.3.1-2  lz4-1:1.9.2-2  minitcpio-27-2
32               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
33               p11-kit-0.23.20-2  pacman-5.2.1-4  pacman-mirrorlist-20200207-1  pam-1.3.1-2  pambase-20190105.1-2
34               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
35               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
36               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
37               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
38
39Total Download Size:    286.80 MiB
40Total Installed Size:  1126.30 MiB
41
42:: Proceed with installation? [Y/n]
43:: Retrieving packages...
44 iana-etc-20200117-1-any                           387.1 KiB   216 KiB/s 00:02 [############################################] 100%
45 filesystem-2019.10-2-x8664                        27.8 KiB  0.00   B/ 00:00 [############################################] 100%
46 linux-api-headers-5.3.1-2-any                     997.7 KiB   199 KiB/s 00:05 [############################################] 100%
47 tzdata-2019c-3-x86_64                             341.5 KiB   242 KiB/s 00:01 [############################################] 100%
48 glibc-2.30-3-x86_64                                 9.1 MiB   204 KiB/s 00:46 [############################################] 100%
49 gcc-libs-9.2.0-4-x86_64                            28.3 MiB   192 KiB/s 02:31 [############################################] 100%
50 ncurses-6.1-7-x86_64                             1067.1 KiB   213 KiB/s 00:05 [############################################] 100%
51 readline-8.0.001-2-x86_64                         296.4 KiB   248 KiB/s 00:01 [############################################] 100%
52 bash-5.0.011-2-x86_64                            1538.5 KiB   200 KiB/s 00:08 [############################################] 100%
53
54… しばらくかかる
55
56(13/13) Rebuilding certificate stores...
57pacstrap /mnt base linux linux-firmar  35.07s usr 10.28s system 2% cu 26:33.87 total
58root 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 をインストールしている。

「え、それじゃあ、これまで作業していた環境はいったい…?」 というのはもっともな話。そこで下記のコマンドを打つ。

 1root@archiso ~ # cat /etc/*-release
 2NAME=ArchLinux"
 3PRETTY_NAME="Arch Linux"
 4ID=arch
 5BUILD_ID=rolling
 6ANSI_COLOR="0;36"
 7HOME_URL="htps://www.archlinux.org/"
 8DOCUMENTATION_URL="https://wiki.archlinux.org/"
 9SUPPORT_URL="https://bbs.archlinux.org/"
10BUG_REPORT_URL="https://bugs.archlinux.org/"
11LOGO=archlinux

結果を見ると、こちらも ArchLinux である(よくよく思えば、最初のミラーサイトからダウンロードしてきたのも ArchLinux の iso)。 ただし、このイメージはそもそも ArchLinux の開発者が「これインストールに使ってやー」と提供しているイメージだ。 Arch Linux - Downloads に It is intended for new installations only. と記載されている。

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

(余談) pacman の利用するミラーサイト

ArchLinux のパッケージマネージャーの pacman はミラーサイトを利用からパッケージのダウンロードを実施する。

 1less /etc/pacman.d/mirrorlist
 2
 3## Australia
 4Server = http://archlinux.melbourneitmirror.net/$repo/os/$arch
 5## United States
 6Server = http://mirrors.xmission.com/archlinux/$repo/os/$arch
 7## Belgium
 8Server = http://archlinux.mirror.kangaroot.net/$repo/os/$arch
 9## United States
10Server = http://mirror.mia11.us.leaseweb.net/archlinux/$repo/os/$arch
11## United States
12Server = http://mirrors.xtom.com/archlinux/$repo/os/$arch

で速いミラーの場所を見ることができるが、日本からだとオーストラリア、US が浮上してくる。

pacman でのインストールが完了すると、/mnt の中に Linux の ルートディレクトリができていることがわかる。

 1root@archiso ~ # ls /mnt
 2bin  boot  dv  etc  home  lib  lib64  lost+found  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
 3
 4# もちろんダウンロードしてきたのも ArchLinux になっている
 5root@archiso ~ # cat /mnt/etc/*-release
 6NAMEArch Linux"
 7PRETTY_NAME="Arch Linux"
 8ID=arch
 9BUILD_ID=rolling
10ANSI_COLOR="0;36"
11HOME_URL="htts://www.archli
12DOCUMENTATION_URL="https://wiki.archlinux.org/"
13SUPPORT_URL="https://bbs.archlinux.org/"
14BUG_REPORT_URL="https://bugs.archlinux.org/"
15LOGO=archlinux

/dev/sda1パーティションに自分仕様の ArchLinux が入った。 あとは、作成したパーティションがハードウェアの起動時に読み込まれればようやく自分仕様の ArchLinux が起動する。

1roo@archiso ~ # genfstab -U /mnt >> /mnt/etc/fstab

fstab とはなにか?

File System Table の略で、ディスクパーティション、ブロックデバイス、リモートファイルシステムが、どのように OS の file system にマウントされるべきかを定義している。fstab - ArchWiki

生成された fstab の中身。

1# <file system> <dir> <type> <options> <dump> <pass>
2# /dev/sda1
3UUID172faec4-2430-43f4-9926-95ac0e656d0c       /               ext4            rw,relatime     0 1
4# /dev/sda2
5UUID=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 に入る

1arch-chroot /mnt

これにより、ダウンロードしてきた自分仕様の ArchLinux に仮想的に入った状態で作業が行える(今後は fstab の設定により、OS 起動時に systemd がマウントして、ここがルートディレクトリになる)

 1[root@archiso /]# ln -sf /usr/share/zoneinfo/Japan /etc/localtime
 2[root@archiso /]# hwclock --systohc --utc
 3# 事前に /etc/locale.conf の en_US.UTF-8 をコメントアウトしておく
 4[root@archiso /]# locale-gen
 5Generating locales...
 6Generation complete.
 7[root@archiso /]# echo "LANG=en_US.UTF-8" > /etc/locale.conf
 8[root@archiso /]# echo "virtualbox-archlinux" > /etc/hostname
 9[root@archiso /]# pacman -S dhcpcd
10[root@archiso /]# systemctl enable dhcpcd
11[root@archiso /]# passwd
12New password:
13Retype new password:

ここでは、OS のタイムゾーンを設定、locale (地域設定)、ホスト名、ダウンロードしてきた ArchLinux の root パスワードの設定をした。 特に root のパスワード設定はしておかないと、OS 起動時に困るので必ず実施する。

また dhcpcd (DHCP client daemon) をインストールして有効にしておく(ネットワークに接続する設定を固定にするのは辛い)

また、ファイルの編集で便利なので vim や ssh するために openssh をインストールする(ここはお好みで)

1[root@archiso /]# pacman -S vim
2[root@archiso /]# pacman -S openssh
3[root@archiso /]# systemctl enable sshd
4Created symlink /etc/systemd/system/multi-user.target.wants/sshd.service → /usr/lib/systemd/system/sshd.service.
5[root@ArchLinux /]# vim /etc/ssh/sshd_config
6[root@ArchLinux ~]# vim /etc/ssh/sshd_config
7# 下記を追記する
8PermitRootLogin yes
9[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 で済むのであまりやらなくなってしまったが…)

参考:

ArchLinux に grub をインストールする

pacman でインストールするのだが、ここでインストールされるのは、grub2 だ。

GRUB - ArchWiki に何を行っているのかが記載されている。

 1[root@archiso /]# pacman -S grub os-prober
 2resolving dependencies...
 3looking for conflicting packages...
 4
 5Packages (2) grub-2:2.04-5  os-prober-1.77-1
 6
 7Total Download Size:    6.69 MiB
 8Total Installed Size:  32.65 MiB
 9
10:: Proceed with installation? [Y/n] Y
11:: Retrieving packages...
12 grub-2:2.04-5-x86_64                                6.7 MiB   190 KiB/s 00:36 [############################################] 100%
13 os-prober-1.77-1-x86_64                            16.8 KiB  0.00   B/s 00:00 [############################################] 100%
14(2/2) checking keys in keyring                                                 [############################################] 100%
15(2/2) checking package integrity                                               [############################################] 100%
16(2/2) loading package files                                                    [############################################] 100%
17(2/2) checking for file conflicts                                              [############################################] 100%
18(2/2) checking available disk space                                            [############################################] 100%
19:: Processing package changes...
20(1/2) installing grub                                                          [############################################] 100%
21Generate your bootloader configuration with:
22  grub-mkconfig -o /boot/grub/grub.cfg
23Optional dependencies for grub
24    freetype2: For grub-mkfont usage
25    fuse2: For grub-mount usage
26    dosfstools: For grub-mkrescue FAT FS and EFI support
27    efibootmgr: For grub-install EFI support
28    libisoburn: Provides xorriso for generating grub rescue iso using grub-mkrescue
29    os-prober: To detect other OSes when generating grub.cfg in BIOS systems [pending]
30    mtools: For grub-mkrescue FAT FS support
31(2/2) installing os-prober                                                     [############################################] 100%
32:: Running post-transaction hooks...
33(1/1) Arming ConditionNeedsUpdate...
34
35[root@archiso /]# grub-install /dev/sda
36Installing for i386-pc platform.
37Installation finished. No error reported.
38
39[root@archiso /]# grub-mkconfig -o /boot/grub/grub.cfg
40Generating grub configuration file ...
41Found linux image: /boot/vmlinuz-linux
42Found initrd image: /boot/initramfs-linux.img
43Found fallback initrd image(s) in /boot: initramfs-linux-fallback.img
44done
45
46[root@archiso /]# ls /boot/grub/
47fonts  grub.cfg  grubenv  i386-pc  themes

最後に /boot/grub/grub.cfg が存在していることを確認する(重要)。

これでようやく ArchLinux のインストールと初期設定が完了。

1[root@archiso /]# exit
2exit
3
4# ここはインストーラーの ArchLinux の中
5root@archiso ~ # umount -R /mnt
6root@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 をそのまま起動してもらいたいところ。

理由はネットからコピペしたコマンドにあった。

 1[root@archiso /]# grub-mkconfig –o /boot/grub/grub.cfg
 2
 3Generating grub configuration file ...
 4#
 5# DO NOT EDIT THIS FILE
 6#
 7# It is automatically generated by grub-mkconfig using templates
 8# from /etc/grub.d and settings from /etc/default/grub
 9#
10
11### BEGIN /etc/grub.d/00_header ###
12insmod part_gpt
13insmod part_msdos
14if [ -s $prefix/grubenv ]; then
15  load_env
16fi
17if [ "${next_entry" ] ; then
18   set default="${next_entry"
19   set next_entry=
20   save_env next_entry
21   set boot_once=true
22else
23   set default="0"
24fi
25
26…

おわかりだろうか…

実はこの –o のハイフンが -o (半角のマイナス) でないため、これは /boot/grub/grub.cfg を生成していない。 よって、grub は起動したものの grub.cfg がないものと思ってしまい、その結果、grub のみが立ち上がって ArchLinux が起動しないというわけだ。

ちなみに GRUB2 からは、

1set root=(hd0,msdos1)
2linux /boot/vmlinuz-linux root=/dev/sda1
3initrd /boot/initramfs-linux.img
4boot

にて起動ができる。しかし、/boot/grub/grub.cfg を見てのとおり、ArchLinux を boot するまでに様々な設定を GRUB2 がデフォルトで考えてくれているが、上記コマンドは Linux を起動するまでのステップしか考慮していない。

ちなみに、上記コマンドで initrd の設定を忘れると下記のようなカーネルパニックを起こす。

また、上記コマンドで起動したとき、

1drm: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 を起動すると、キーがリピートされてログイン時のパスフレーズ入力が詰んだ。イメージ的には下記のような状態になってしまう。

1login:  rrrrrrooooooooootttttttt

リソースが足りないのかと 2GB RAM, 2CPU 割り当ててみたが、状況は変わらなかった。

このとき、GRUB2 のプロンプトから直接起動していたため、グラフィックかキー入力周りが正常に機能していない可能性がある。

そんなこともあったので、/boot/grub/grub.cfg の存在確認や GRUB2 の設定のチェックはちゃんとしておきたいところ。

arch-chroot で失敗する

すでに別ターミナルで chroot が走っていると失敗するので、kill した。

 1root@archiso ~ # arch-chroot /mnt
 2mount: /mnt/proc: proc already mounted on /proc.
 3==> ERROR: failed to setup chroot /mnt
 4
 5root@archiso ~ # ps aux | grep chroot
 6root        4776  0.0  0.3   7388  3908 pts/0    S    09:54   0:00 /bin/bash /usr/bin/arch-chroot /mnt
 7
 8root@archiso ~ # kill 4776
 9root@archiso ~ # arch-chroot /mnt
10[root@archiso /]#

付録

ArchLinux install までの pacman の実行結果
  1root@archiso ~ # pacstrap /mnt base linux linux-firmware
  2==> Creating install root at /mnt
  3==> Installing packages to /mnt
  4:: Synchronizing package databases...
  5 core                                              134.0 KiB   122 KiB/s 00:01 [############################################] 100%
  6 extra                                            1640.6 KiB   180 KiB/s 00:09 [############################################] 100%
  7 community                                           4.8 MiB   190 KiB/s 00:26 [############################################] 100%
  8resolving dependencies...
  9:: There are 2 providers available for initramfs:
 10:: Repository core
 11   1) mkinitcpio
 12:: Repository extra
 13   2) dracut
 14
 15Enter a number (default=1):
 16looking for conflicting packages...
 17
 18Packages (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
 19               bzip2-1.0.8-3  ca-certificates-20181109-3  ca-certificates-mozilla-3.50-1  ca-certificates-utils-20181109-3
 20               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
 21               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
 22               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
 23               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
 24               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
 25               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
 26               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
 27               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
 28               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
 29               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
 30               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
 31               libxml2-2.9.10-1  licenses-20191011-2  linux-api-headers-5.4.17-1  lz4-1:1.9.2-2  mkinitcpio-27-2
 32               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
 33               p11-kit-0.23.20-2  pacman-5.2.1-4  pacman-mirrorlist-20200207-1  pam-1.3.1-2  pambase-20190105.1-2
 34               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
 35               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
 36               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
 37               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
 38
 39Total Download Size:    290.85 MiB
 40Total Installed Size:  1128.12 MiB
 41
 42:: Proceed with installation? [Y/n]
 43:: Retrieving packages...
 44 iana-etc-20200117-1-any                           387.1 KiB   164 KiB/s 00:02 [############################################] 100%
 45 filesystem-2019.10-2-x86_64                        27.8 KiB  0.00   B/s 00:00 [############################################] 100%
 46 linux-api-headers-5.4.17-1-any                   1040.3 KiB   189 KiB/s 00:06 [############################################] 100%
 47 tzdata-2019c-3-x86_64                             341.5 KiB   167 KiB/s 00:02 [############################################] 100%
 48 glibc-2.31-1-x86_64                                 9.8 MiB   178 KiB/s 00:56 [############################################] 100%
 49 gcc-libs-9.2.1+20200130-2-x86_64                   30.8 MiB   198 KiB/s 02:39 [############################################] 100%
 50 ncurses-6.2-1-x86_64                             1141.2 KiB  1101 KiB/s 00:01 [############################################] 100%
 51 readline-8.0.004-1-x86_64                         309.7 KiB  23.3 MiB/s 00:00 [############################################] 100%
 52 bash-5.0.016-1-x86_64                            1648.5 KiB  1610 KiB/s 00:01 [############################################] 100%
 53 attr-2.4.48-2-x86_64                               65.0 KiB  0.00   B/s 00:00 [############################################] 100%
 54 acl-2.2.53-2-x86_64                               131.9 KiB  18.4 MiB/s 00:00 [############################################] 100%
 55 gmp-6.2.0-1-x86_64                                439.6 KiB  2.57 MiB/s 00:00 [############################################] 100%
 56 libcap-2.31-1-x86_64                               53.7 KiB  0.00   B/s 00:00 [############################################] 100%
 57 gdbm-1.18.1-3-x86_64                              160.4 KiB  0.00   B/s 00:00 [############################################] 100%
 58 db-5.3.28-5-x86_64                               1098.0 KiB  1649 KiB/s 00:01 [############################################] 100%
 59 perl-5.30.1-1-x86_64                               14.2 MiB  3.23 MiB/s 00:04 [############################################] 100%
 60 openssl-1.1.1.d-2-x86_64                            3.4 MiB  5.08 MiB/s 00:01 [############################################] 100%
 61 coreutils-8.31-3-x86_64                             2.4 MiB   457 KiB/s 00:05 [############################################] 100%
 62 zlib-1:1.2.11-4-x86_64                             81.5 KiB  0.00   B/s 00:00 [############################################] 100%
 63 xz-5.2.4-2-x86_64                                 231.3 KiB   215 KiB/s 00:01 [############################################] 100%
 64 bzip2-1.0.8-3-x86_64                               53.4 KiB  0.00   B/s 00:00 [############################################] 100%
 65 libseccomp-2.4.1-3-x86_64                          75.1 KiB  0.00   B/s 00:00 [############################################] 100%
 66 file-5.38-3-x86_64                                314.2 KiB   220 KiB/s 00:01 [############################################] 100%
 67 findutils-4.7.0-2-x86_64                          454.6 KiB   247 KiB/s 00:02 [############################################] 100%
 68 mpfr-4.0.2-2-x86_64                               314.0 KiB   216 KiB/s 00:01 [############################################] 100%
 69 gawk-5.0.1-2-x86_64                              1096.3 KiB   235 KiB/s 00:05 [############################################] 100%
 70 pcre-8.43-2-x86_64                                931.2 KiB   312 KiB/s 00:03 [############################################] 100%
 71 grep-3.4-1-x86_64                                 204.2 KiB   624 KiB/s 00:00 [############################################] 100%
 72 libgpg-error-1.37-1-x86_64                        223.7 KiB   652 KiB/s 00:00 [############################################] 100%
 73 libgcrypt-1.8.5-2-x86_64                          485.4 KiB   198 KiB/s 00:02 [############################################] 100%
 74 lz4-1:1.9.2-2-x86_64                              109.4 KiB   148 KiB/s 00:01 [############################################] 100%
 75 systemd-libs-244.3-1-x86_64                       457.1 KiB   248 KiB/s 00:02 [############################################] 100%
 76 procps-ng-3.3.15-2-x86_64                         340.7 KiB   170 KiB/s 00:02 [############################################] 100%
 77 sed-4.8-1-x86_64                                  237.9 KiB   205 KiB/s 00:01 [############################################] 100%
 78 tar-1.32-3-x86_64                                 742.3 KiB   196 KiB/s 00:04 [############################################] 100%
 79 libffi-3.2.1-4-x86_64                              31.3 KiB  4.37 MiB/s 00:00 [############################################] 100%
 80 libutil-linux-2.35.1-1-x86_64                     409.0 KiB   239 KiB/s 00:02 [############################################] 100%
 81 glib2-2.62.4-2-x86_64                               2.7 MiB   299 KiB/s 00:09 [############################################] 100%
 82 libunistring-0.9.10-2-x86_64                      498.6 KiB   170 KiB/s 00:03 [############################################] 100%
 83 icu-65.1-2-x86_64                                   8.9 MiB   192 KiB/s 00:47 [############################################] 100%
 84 gettext-0.20.1-3-x86_64                          1929.0 KiB   214 KiB/s 00:09 [############################################] 100%
 85 hwids-20200204-1-any                              402.6 KiB   208 KiB/s 00:02 [############################################] 100%
 86 kmod-26-3-x86_64                                  113.9 KiB   345 KiB/s 00:00 [############################################] 100%
 87 pciutils-3.6.2-2-x86_64                            86.8 KiB   212 KiB/s 00:00 [############################################] 100%
 88 psmisc-23.3-2-x86_64                              110.1 KiB   280 KiB/s 00:00 [############################################] 100%
 89 cracklib-2.9.7-2-x86_64                           250.4 KiB   230 KiB/s 00:01 [############################################] 100%
 90 e2fsprogs-1.45.5-1-x86_64                        1195.4 KiB   188 KiB/s 00:06 [############################################] 100%
 91 libsasl-2.1.27-2-x86_64                           136.2 KiB   332 KiB/s 00:00 [############################################] 100%
 92 libldap-2.4.49-1-x86_64                           300.6 KiB   154 KiB/s 00:02 [############################################] 100%
 93 keyutils-1.6.1-3-x86_64                            88.3 KiB   215 KiB/s 00:00 [############################################] 100%
 94 krb5-1.17.1-1-x86_64                             1334.3 KiB   167 KiB/s 00:08 [############################################] 100%
 95 libtirpc-1.2.5-1-x86_64                           170.0 KiB   260 KiB/s 00:01 [############################################] 100%
 96 pambase-20190105.1-2-any                            2.9 KiB  0.00   B/s 00:00 [############################################] 100%
 97 pam-1.3.1-2-x86_64                                559.6 KiB   102 KiB/s 00:05 [############################################] 100%
 98 libcap-ng-0.7.10-1-x86_64                          35.7 KiB  0.00   B/s 00:00 [############################################] 100%
 99 audit-2.8.5-6-x86_64                              338.5 KiB   142 KiB/s 00:02 [############################################] 100%
100 shadow-4.8.1-1-x86_64                            1171.2 KiB   193 KiB/s 00:06 [############################################] 100%
101 util-linux-2.35.1-1-x86_64                          2.4 MiB   191 KiB/s 00:13 [############################################] 100%
102 less-551-3-x86_64                                 100.9 KiB   266 KiB/s 00:00 [############################################] 100%
103 gzip-1.10-3-x86_64                                 77.8 KiB  0.00   B/s 00:00 [############################################] 100%
104 licenses-20191011-2-any                            66.8 KiB  21.7 MiB/s 00:00 [############################################] 100%
105 expat-2.2.9-3-x86_64                               94.6 KiB   290 KiB/s 00:00 [############################################] 100%
106 zstd-1.4.4-1-x86_64                               391.9 KiB   213 KiB/s 00:02 [############################################] 100%
107 libarchive-3.4.2-1-x86_64                         500.9 KiB   196 KiB/s 00:03 [############################################] 100%
108 libtasn1-4.16.0-1-x86_64                          121.3 KiB   299 KiB/s 00:00 [############################################] 100%
109 device-mapper-2.02.186-5-x86_64                   291.3 KiB   181 KiB/s 00:02 [############################################] 100%
110 popt-1.16-12-x86_64                                62.9 KiB  0.00   B/s 00:00 [############################################] 100%
111 json-c-0.13.1-3-x86_64                             45.0 KiB  0.00   B/s 00:00 [############################################] 100%
112 argon2-20190702-2-x86_64                           30.2 KiB  0.00   B/s 00:00 [############################################] 100%
113 cryptsetup-2.3.0-1-x86_64                         540.1 KiB   195 KiB/s 00:03 [############################################] 100%
114 dbus-1.12.16-5-x86_64                             298.3 KiB   209 KiB/s 00:01 [############################################] 100%
115 libmnl-1.0.4-3-x86_64                              10.4 KiB  3.40 MiB/s 00:00 [############################################] 100%
116 libnftnl-1.1.5-1-x86_64                            61.1 KiB  0.00   B/s 00:00 [############################################] 100%
117 libnl-3.5.0-2-x86_64                              364.7 KiB   223 KiB/s 00:02 [############################################] 100%
118 libusb-1.0.23-2-x86_64                             57.0 KiB  0.00   B/s 00:00 [############################################] 100%
119 libpcap-1.9.1-2-x86_64                            240.0 KiB   195 KiB/s 00:01 [############################################] 100%
120 iptables-1:1.8.4-1-x86_64                         426.5 KiB   186 KiB/s 00:02 [############################################] 100%
121 kbd-2.2.0-5-x86_64                               1135.6 KiB   202 KiB/s 00:06 [############################################] 100%
122 libidn2-2.3.0-1-x86_64                            115.9 KiB   141 KiB/s 00:01 [############################################] 100%
123 libelf-0.177-2-x86_64                             373.5 KiB   146 KiB/s 00:03 [############################################] 100%
124 pcre2-10.34-3-x86_64                             1038.5 KiB   162 KiB/s 00:06 [############################################] 100%
125 systemd-244.3-1-x86_64                              5.1 MiB   194 KiB/s 00:27 [############################################] 100%
126 p11-kit-0.23.20-2-x86_64                          579.6 KiB   236 KiB/s 00:02 [############################################] 100%
127 ca-certificates-utils-20181109-3-any                8.2 KiB  0.00   B/s 00:00 [############################################] 100%
128 ca-certificates-mozilla-3.50-1-x86_64             336.7 KiB   245 KiB/s 00:01 [############################################] 100%
129 ca-certificates-20181109-3-any                      2.1 KiB  0.00   B/s 00:00 [############################################] 100%
130 libssh2-1.9.0-2-x86_64                            205.8 KiB   289 KiB/s 00:01 [############################################] 100%
131 libpsl-0.21.0-2-x86_64                             73.2 KiB   224 KiB/s 00:00 [############################################] 100%
132 libnghttp2-1.39.2-2-x86_64                         86.7 KiB   234 KiB/s 00:00 [############################################] 100%
133 curl-7.68.0-1-x86_64                             1018.0 KiB   181 KiB/s 00:06 [############################################] 100%
134 npth-1.6-2-x86_64                                  12.8 KiB  0.00   B/s 00:00 [############################################] 100%
135 libksba-1.3.5-2-x86_64                            116.6 KiB   305 KiB/s 00:00 [############################################] 100%
136 libassuan-2.5.3-2-x86_64                           85.0 KiB   207 KiB/s 00:00 [############################################] 100%
137 libsecret-0.20.1-1-x86_64                         236.6 KiB   225 KiB/s 00:01 [############################################] 100%
138 pinentry-1.1.0-5-x86_64                           101.6 KiB   363 KiB/s 00:00 [############################################] 100%
139 nettle-3.5.1-2-x86_64                             329.4 KiB   229 KiB/s 00:01 [############################################] 100%
140 gnutls-3.6.12-1-x86_64                              2.8 MiB   186 KiB/s 00:15 [############################################] 100%
141 sqlite-3.31.1-1-x86_64                           1558.6 KiB   198 KiB/s 00:08 [############################################] 100%
142 gnupg-2.2.19-1-x86_64                               2.1 MiB   204 KiB/s 00:11 [############################################] 100%
143 gpgme-1.13.1-3-x86_64                             410.9 KiB   220 KiB/s 00:02 [############################################] 100%
144 pacman-mirrorlist-20200207-1-any                    6.0 KiB  0.00   B/s 00:00 [############################################] 100%
145 archlinux-keyring-20200108-1-any                  868.3 KiB   194 KiB/s 00:04 [############################################] 100%
146 pacman-5.2.1-4-x86_64                             836.6 KiB   194 KiB/s 00:04 [############################################] 100%
147 systemd-sysvcompat-244.3-1-x86_64                   8.0 KiB  0.00   B/s 00:00 [############################################] 100%
148 iputils-20190709-2-x86_64                          92.1 KiB   249 KiB/s 00:00 [############################################] 100%
149 iproute2-5.5.0-1-x86_64                           913.4 KiB   186 KiB/s 00:05 [############################################] 100%
150 base-2-2-any                                        2.1 KiB  0.00   B/s 00:00 [############################################] 100%
151 mkinitcpio-busybox-1.31.1-1-x86_64                254.8 KiB   207 KiB/s 00:01 [############################################] 100%
152 diffutils-3.7-3-x86_64                            324.1 KiB   173 KiB/s 00:02 [############################################] 100%
153 mkinitcpio-27-2-any                                40.7 KiB  0.00   B/s 00:00 [############################################] 100%
154 linux-5.5.4.arch1-1-x86_64                         69.1 MiB   202 KiB/s 05:51 [############################################] 100%
155 linux-firmware-20200204.b791e15-1-any              99.3 MiB   190 KiB/s 08:56 [############################################] 100%
156 libxml2-2.9.10-1-x86_64                          1267.4 KiB   252 KiB/s 00:05 [############################################] 100%
157 libcroco-0.6.13-1-x86_64                          146.0 KiB   180 KiB/s 00:01 [############################################] 100%
158 libnfnetlink-1.0.1-3-x86_64                        16.4 KiB  0.00   B/s 00:00 [############################################] 100%
159 libnetfilter_conntrack-1.0.7-1-x86_64              47.5 KiB  0.00   B/s 00:00 [############################################] 100%
160(116/116) checking keys in keyring                                             [############################################] 100%
161(116/116) checking package integrity                                           [############################################] 100%
162(116/116) loading package files                                                [############################################] 100%
163(116/116) checking for file conflicts                                          [############################################] 100%
164:: Processing package changes...
165(  1/116) installing iana-etc                                                  [############################################] 100%
166(  2/116) installing filesystem                                                [############################################] 100%
167(  3/116) installing linux-api-headers                                         [############################################] 100%
168(  4/116) installing tzdata                                                    [############################################] 100%
169(  5/116) installing glibc                                                     [############################################] 100%
170Optional dependencies for glibc
171    gd: for memusagestat
172(  6/116) installing gcc-libs                                                  [############################################] 100%
173(  7/116) installing ncurses                                                   [############################################] 100%
174(  8/116) installing readline                                                  [############################################] 100%
175(  9/116) installing bash                                                      [############################################] 100%
176Optional dependencies for bash
177    bash-completion: for tab completion
178( 10/116) installing attr                                                      [############################################] 100%
179( 11/116) installing acl                                                       [############################################] 100%
180( 12/116) installing gmp                                                       [############################################] 100%
181( 13/116) installing libcap                                                    [############################################] 100%
182( 14/116) installing gdbm                                                      [############################################] 100%
183( 15/116) installing db                                                        [############################################] 100%
184( 16/116) installing perl                                                      [############################################] 100%
185( 17/116) installing openssl                                                   [############################################] 100%
186Optional dependencies for openssl
187    ca-certificates [pending]
188( 18/116) installing coreutils                                                 [############################################] 100%
189( 19/116) installing zlib                                                      [############################################] 100%
190( 20/116) installing xz                                                        [############################################] 100%
191( 21/116) installing bzip2                                                     [############################################] 100%
192( 22/116) installing libseccomp                                                [############################################] 100%
193( 23/116) installing file                                                      [############################################] 100%
194( 24/116) installing findutils                                                 [############################################] 100%
195( 25/116) installing mpfr                                                      [############################################] 100%
196( 26/116) installing gawk                                                      [############################################] 100%
197( 27/116) installing pcre                                                      [############################################] 100%
198( 28/116) installing grep                                                      [############################################] 100%
199( 29/116) installing libgpg-error                                              [############################################] 100%
200( 30/116) installing libgcrypt                                                 [############################################] 100%
201( 31/116) installing lz4                                                       [############################################] 100%
202( 32/116) installing systemd-libs                                              [############################################] 100%
203( 33/116) installing procps-ng                                                 [############################################] 100%
204( 34/116) installing sed                                                       [############################################] 100%
205( 35/116) installing tar                                                       [############################################] 100%
206( 36/116) installing libffi                                                    [############################################] 100%
207( 37/116) installing libutil-linux                                             [############################################] 100%
208( 38/116) installing glib2                                                     [############################################] 100%
209Optional dependencies for glib2
210    python: gdbus-codegen, glib-genmarshal, glib-mkenums, gtester-report
211    libelf: gresource inspection tool [pending]
212( 39/116) installing libunistring                                              [############################################] 100%
213( 40/116) installing icu                                                       [############################################] 100%
214( 41/116) installing libxml2                                                   [############################################] 100%
215( 42/116) installing libcroco                                                  [############################################] 100%
216( 43/116) installing gettext                                                   [############################################] 100%
217Optional dependencies for gettext
218    git: for autopoint infrastructure updates
219( 44/116) installing hwids                                                     [############################################] 100%
220( 45/116) installing kmod                                                      [############################################] 100%
221( 46/116) installing pciutils                                                  [############################################] 100%
222( 47/116) installing psmisc                                                    [############################################] 100%
223( 48/116) installing cracklib                                                  [############################################] 100%
224( 49/116) installing e2fsprogs                                                 [############################################] 100%
225( 50/116) installing libsasl                                                   [############################################] 100%
226( 51/116) installing libldap                                                   [############################################] 100%
227( 52/116) installing keyutils                                                  [############################################] 100%
228( 53/116) installing krb5                                                      [############################################] 100%
229( 54/116) installing libtirpc                                                  [############################################] 100%
230( 55/116) installing pambase                                                   [############################################] 100%
231( 56/116) installing pam                                                       [############################################] 100%
232( 57/116) installing libcap-ng                                                 [############################################] 100%
233( 58/116) installing audit                                                     [############################################] 100%
234( 59/116) installing shadow                                                    [############################################] 100%
235( 60/116) installing util-linux                                                [############################################] 100%
236Optional dependencies for util-linux
237    python: python bindings to libmount
238    words: default dictionary for look
239( 61/116) installing less                                                      [############################################] 100%
240( 62/116) installing gzip                                                      [############################################] 100%
241( 63/116) installing licenses                                                  [############################################] 100%
242( 64/116) installing expat                                                     [############################################] 100%
243( 65/116) installing zstd                                                      [############################################] 100%
244( 66/116) installing libarchive                                                [############################################] 100%
245( 67/116) installing libtasn1                                                  [############################################] 100%
246( 68/116) installing device-mapper                                             [############################################] 100%
247( 69/116) installing popt                                                      [############################################] 100%
248( 70/116) installing json-c                                                    [############################################] 100%
249( 71/116) installing argon2                                                    [############################################] 100%
250( 72/116) installing cryptsetup                                                [############################################] 100%
251( 73/116) installing dbus                                                      [############################################] 100%
252( 74/116) installing libmnl                                                    [############################################] 100%
253( 75/116) installing libnftnl                                                  [############################################] 100%
254( 76/116) installing libnl                                                     [############################################] 100%
255( 77/116) installing libusb                                                    [############################################] 100%
256( 78/116) installing libpcap                                                   [############################################] 100%
257( 79/116) installing libnfnetlink                                              [############################################] 100%
258( 80/116) installing libnetfilter_conntrack                                    [############################################] 100%
259( 81/116) installing iptables                                                  [############################################] 100%
260( 82/116) installing kbd                                                       [############################################] 100%
261( 83/116) installing libidn2                                                   [############################################] 100%
262( 84/116) installing libelf                                                    [############################################] 100%
263( 85/116) installing pcre2                                                     [############################################] 100%
264( 86/116) installing systemd                                                   [############################################] 100%
265Initializing machine ID from random generator.
266Created symlink /etc/systemd/system/getty.target.wants/getty@tty1.service → /usr/lib/systemd/system/getty@.service.
267Created symlink /etc/systemd/system/multi-user.target.wants/remote-fs.target → /usr/lib/systemd/system/remote-fs.target.
268:: Append 'init=/usr/lib/systemd/systemd' to your kernel command line in your
269   bootloader to replace sysvinit with systemd, or install systemd-sysvcompat
270Optional dependencies for systemd
271    libmicrohttpd: remote journald capabilities
272    quota-tools: kernel-level quota management
273    systemd-sysvcompat: symlink package to provide sysvinit binaries [pending]
274    polkit: allow administration as unprivileged user
275    curl: machinectl pull-tar and pull-raw [pending]
276( 87/116) installing p11-kit                                                   [############################################] 100%
277Created symlink /etc/systemd/user/sockets.target.wants/p11-kit-server.socket → /usr/lib/systemd/user/p11-kit-server.socket.
278( 88/116) installing ca-certificates-utils                                     [############################################] 100%
279( 89/116) installing ca-certificates-mozilla                                   [############################################] 100%
280( 90/116) installing ca-certificates                                           [############################################] 100%
281( 91/116) installing libssh2                                                   [############################################] 100%
282( 92/116) installing libpsl                                                    [############################################] 100%
283( 93/116) installing libnghttp2                                                [############################################] 100%
284( 94/116) installing curl                                                      [############################################] 100%
285( 95/116) installing npth                                                      [############################################] 100%
286( 96/116) installing libksba                                                   [############################################] 100%
287( 97/116) installing libassuan                                                 [############################################] 100%
288( 98/116) installing libsecret                                                 [############################################] 100%
289Optional dependencies for libsecret
290    org.freedesktop.secrets: secret storage backend
291( 99/116) installing pinentry                                                  [############################################] 100%
292Optional dependencies for pinentry
293    gtk2: gtk2 backend
294    qt5-base: qt backend
295    gcr: gnome3 backend
296(100/116) installing nettle                                                    [############################################] 100%
297(101/116) installing gnutls                                                    [############################################] 100%
298Optional dependencies for gnutls
299    guile: for use with Guile bindings
300(102/116) installing sqlite                                                    [############################################] 100%
301(103/116) installing gnupg                                                     [############################################] 100%
302Optional dependencies for gnupg
303    libldap: gpg2keys_ldap [installed]
304    libusb-compat: scdaemon
305    pcsclite: scdaemon
306(104/116) installing gpgme                                                     [############################################] 100%
307(105/116) installing pacman-mirrorlist                                         [############################################] 100%
308(106/116) installing archlinux-keyring                                         [############################################] 100%
309(107/116) installing pacman                                                    [############################################] 100%
310Optional dependencies for pacman
311    perl-locale-gettext: translation support in makepkg-template
312(108/116) installing systemd-sysvcompat                                        [############################################] 100%
313(109/116) installing iputils                                                   [############################################] 100%
314Optional dependencies for iputils
315    xinetd: for tftpd
316(110/116) installing iproute2                                                  [############################################] 100%
317Optional dependencies for iproute2
318    linux-atm: ATM support
319(111/116) installing base                                                      [############################################] 100%
320Optional dependencies for base
321    linux: bare metal support [pending]
322(112/116) installing mkinitcpio-busybox                                        [############################################] 100%
323(113/116) installing diffutils                                                 [############################################] 100%
324(114/116) installing mkinitcpio                                                [############################################] 100%
325Optional dependencies for mkinitcpio
326    xz: Use lzma or xz compression for the initramfs image [installed]
327    bzip2: Use bzip2 compression for the initramfs image [installed]
328    lzop: Use lzo compression for the initramfs image
329    lz4: Use lz4 compression for the initramfs image [installed]
330    mkinitcpio-nfs-utils: Support for root filesystem on NFS
331(115/116) installing linux                                                     [############################################] 100%
332Optional dependencies for linux
333    crda: to set the correct wireless channels of your country
334    linux-firmware: firmware images needed for some devices [pending]
335(116/116) installing linux-firmware                                            [############################################] 100%
336:: Running post-transaction hooks...
337( 1/13) Creating system user accounts...
338( 2/13) Updating journal message catalog...
339( 3/13) Reloading system manager configuration...
340Running in chroot, ignoring request: daemon-reload
341( 4/13) Updating udev hardware database...
342( 5/13) Applying kernel sysctl settings...
343( 6/13) Creating temporary files...
344( 7/13) Reloading device manager configuration...
345Running in chroot, ignoring request.
346( 8/13) Arming ConditionNeedsUpdate...
347( 9/13) Updating module dependencies...
348(10/13) Updating linux initcpios...
349==> Building image from preset: /etc/mkinitcpio.d/linux.preset: 'default'
350  -> -k /boot/vmlinuz-linux -c /etc/mkinitcpio.conf -g /boot/initramfs-linux.img
351==> Starting build: 5.5.4-arch1-1
352  -> Running build hook: [base]
353  -> Running build hook: [udev]
354  -> Running build hook: [autodetect]
355  -> Running build hook: [modconf]
356  -> Running build hook: [block]
357  -> Running build hook: [filesystems]
358  -> Running build hook: [keyboard]
359  -> Running build hook: [fsck]
360==> Generating module dependencies
361==> Creating gzip-compressed initcpio image: /boot/initramfs-linux.img
362==> Image generation successful
363==> Building image from preset: /etc/mkinitcpio.d/linux.preset: 'fallback'
364  -> -k /boot/vmlinuz-linux -c /etc/mkinitcpio.conf -g /boot/initramfs-linux-fallback.img -S autodetect
365==> Starting build: 5.5.4-arch1-1
366  -> Running build hook: [base]
367  -> Running build hook: [udev]
368  -> Running build hook: [modconf]
369  -> Running build hook: [block]
370==> WARNING: Possibly missing firmware for module: aic94xx
371==> WARNING: Possibly missing firmware for module: wd719x
372  -> Running build hook: [filesystems]
373  -> Running build hook: [keyboard]
374  -> Running build hook: [fsck]
375==> Generating module dependencies
376==> Creating gzip-compressed initcpio image: /boot/initramfs-linux-fallback.img
377==> Image generation successful
378(11/13) Reloading system bus configuration...
379Running in chroot, ignoring request: try-reload-or-restart
380(12/13) Warn about old perl modules
381perl: warning: Setting locale failed.
382perl: warning: Please check that your locale settings:
383        LANGUAGE = (unset),
384        LC_ALL = (unset),
385        LC_MESSAGES = "",
386        LANG = "en_US.UTF-8"
387    are supported and installed on your system.
388perl: warning: Falling back to the standard locale ("C").
389(13/13) Rebuilding certificate stores...
390pacstrap /mnt base linux linux-firmware  121.95s user 41.46s system 9% cpu 28:00.48 total

Share


See also