Arch Linuxのインストール手順

久しぶりにArch Linuxをインストールしたので、その時の手順をメモとして残します。

インスタンスのデプロイ


Vultrにインストールします。構成は下記の通りになっています。

Server Location Server Type Server Size
Tokyo Arch Linux (2017.10.01 x86_64) 25GB SSD, 1CPU, 1024MB Memory

Arch Linuxのインストール


事前準備


  • 管理画面から対象サーバーのコンソールを立ち上げる。
  • Boot Arch Linux (x86_64)を選択して、OSを起動する。
  • コンソールからOSにログインする。
  • SSHでログインしたいので、sshdサービスを起動する。
root@archiso ~ # systemctl start sshd
  • パスワードを設定する。
root@archiso ~ # passwd
  • 以降の設定は、SSHでログインして行います。

キーボードレイアウト


  • 確認すると下記のようになっています。
root@archiso ~ #  localectl status
   System Locale: LANG=en_US.UTF-8
       VC Keymap: n/a
      X11 Layout: n/a

起動モードの確認


  • ディレクトリが存在しないので、UEFIモードでは動いていません。
root@archiso ~ # ls /sys/firmware/efi/efivars
ls: cannot access '/sys/firmware/efi/efivars': No such file or directory

パーティション


root@archiso ~ # fdisk -l
Disk /dev/vda: 25 GiB, 26843545600 bytes, 52428800 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk /dev/loop0: 408.1 MiB, 427905024 bytes, 835752 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
  • ルートディレクトリとswapを作成します。
root@archiso ~ # fdisk /dev/vda

Welcome to fdisk (util-linux 2.30.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0x1809f32a.

Command (m for help): p
Disk /dev/vda: 25 GiB, 26843545600 bytes, 52428800 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x1809f32a

Command (m for help): n
Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1):
First sector (2048-52428799, default 2048):
Last sector, +sectors or +size{K,M,G,T,P} (2048-52428799, default 52428799): +1G

Created a new partition 1 of type 'Linux' and of size 1 GiB.

Command (m for help): p
Disk /dev/vda: 25 GiB, 26843545600 bytes, 52428800 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x1809f32a

Device     Boot Start     End Sectors Size Id Type
/dev/vda1        2048 2099199 2097152   1G 83 Linux

Command (m for help): t
Selected partition 1
Hex code (type L to list all codes): 82
Changed type of partition 'Linux' to 'Linux swap / Solaris'.

Command (m for help): p
Disk /dev/vda: 25 GiB, 26843545600 bytes, 52428800 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x1809f32a

Device     Boot Start     End Sectors Size Id Type
/dev/vda1        2048 2099199 2097152   1G 82 Linux swap / Solaris

Command (m for help): n
Partition type
   p   primary (1 primary, 0 extended, 3 free)
   e   extended (container for logical partitions)
Select (default p): p
Partition number (2-4, default 2):
First sector (2099200-52428799, default 2099200):
Last sector, +sectors or +size{K,M,G,T,P} (2099200-52428799, default 52428799):

Created a new partition 2 of type 'Linux' and of size 24 GiB.

Command (m for help): p
Disk /dev/vda: 25 GiB, 26843545600 bytes, 52428800 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x1809f32a

Device     Boot   Start      End  Sectors Size Id Type
/dev/vda1          2048  2099199  2097152   1G 82 Linux swap / Solaris
/dev/vda2       2099200 52428799 50329600  24G 83 Linux

Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
root@archiso ~ # fdisk -l /dev/vda
Disk /dev/vda: 25 GiB, 26843545600 bytes, 52428800 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x1809f32a

Device     Boot   Start      End  Sectors Size Id Type
/dev/vda1          2048  2099199  2097152   1G 82 Linux swap / Solaris
/dev/vda2       2099200 52428799 50329600  24G 83 Linux

スワップパーティション

root@archiso ~ # mkswap /dev/vda1
Setting up swapspace version 1, size = 1024 MiB (1073737728 bytes)
no label, UUID=62a2c216-c7fb-4060-8fbc-4a87c8109943```
  • デバイスのページングを有効にする。
root@archiso ~ # swapon /dev/vda1

パーティションのフォーマット

root@archiso ~ # mkfs.ext4 /dev/vda2
mke2fs 1.43.6 (29-Aug-2017)
Creating filesystem with 6291200 4k blocks and 1572864 inodes
Filesystem UUID: 6c26ca26-4485-4dbe-a0e0-11a36620e36b
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
        4096000

Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

パーティションのマウント

  • ルートパーティションを /mnt にマウントする。
root@archiso ~ # mount /dev/vda2 /mnt

システムクロックの更新

root@archiso ~ # timedatectl set-ntp true

ミラーの選択

  • 日本のサーバーをリストの一番上に記載する。
root@archiso ~ # cat /etc/pacman.d/mirrorlist
...
   251  ## Japan
   252  Server = http://ftp.jaist.ac.jp/pub/Linux/ArchLinux/$repo/os/$arch
...
   449  ## Japan
   450  Server = http://ftp.tsukuba.wide.ad.jp/Linux/archlinux/$repo/os/$arch
...
root@archiso ~ # vi /etc/pacman.d/mirrorlist
     1  ##
     2  ## Arch Linux repository mirrorlist
     3  ## Filtered by mirror score from mirror status page
     4  ## Generated on 2017-10-01
     5  ##
     6
     7  ## Japan
     8  Server = http://ftp.jaist.ac.jp/pub/Linux/ArchLinux/$repo/os/$arch
     9  ## Japan
    10  Server = http://ftp.tsukuba.wide.ad.jp/Linux/archlinux/$repo/os/$arch

ベースシステムのインストール

root@archiso ~ # pacstrap /mnt base base-devel

fstab

  • fstab を生成する。
root@archiso ~ # genfstab -U /mnt >> /mnt/etc/fstab
  • 生成されたファイルの内容を確認する。
root@archiso ~ # cat /mnt/etc/fstab
#
# /etc/fstab: static file system information
#
# <file system> <dir>   <type>  <options>       <dump>  <pass>
# /dev/vda2
UUID=6c26ca26-4485-4dbe-a0e0-11a36620e36b       /               ext4            rw,relatime,data=ordered        0 1

# /dev/vda1
UUID=62a2c216-c7fb-4060-8fbc-4a87c8109943       none            swap            defaults        0 0

chroot

  • インストールしたシステムにchrootする。
root@archiso ~ # arch-chroot /mnt
[root@archiso /]#

タイムゾーン

[root@archiso /]# ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
  • JSTに変更されたことを確認する。
[root@archiso /]# date
Sat Oct  7 13:40:42 JST 2017
[root@archiso /]#  hwclock --systohc --utc

ロケール

[root@archiso /]# locale-gen
Generating locales...
Generation complete.
[root@archiso /]# echo LANG=ja_JP.UTF-8 > /etc/locale.conf
[root@archiso /]# echo KEYMAP=jp106 > /etc/vconsole.conf

ホスト名

[root@archiso /]# echo hoge.blackle0pard.net > /etc/hostname
[root@archiso /]# cat /etc/hosts
#
# /etc/hosts: static lookup table for host names
#

#<ip-address>   <hostname.domain.org>   <hostname>
127.0.0.1       localhost.localdomain   localhost
::1             localhost.localdomain   localhost

# End of file
[root@archiso /]# vi /etc/hosts
[root@archiso /]# cat /etc/hosts
#
# /etc/hosts: static lookup table for host names
#

#<ip-address>   <hostname.domain.org>   <hostname>
127.0.0.1       localhost.localdomain   localhost
::1             localhost.localdomain   localhost
127.0.0.1       hoge.blackle0pard.net   hoge
# End of file

ネットワーク設定

[root@archiso /]# systemctl enable dhcpcd
Created symlink /etc/systemd/system/multi-user.target.wants/dhcpcd.service → /usr/lib/systemd/system/dhcpcd.service.

SSH設定

  • 再起動後にSSHでログインするために、opensshをインストールする。
[root@archiso /]# pacman -S openssh --noconfirm
[root@archiso /]# systemctl enable sshd
Created symlink /etc/systemd/system/multi-user.target.wants/sshd.service → /usr/lib/systemd/system/sshd.service.
  • SSHログイン用のユーザーを作成する。
[root@archiso /]# useradd -m ope
[root@archiso /]# passwd ope

Root パスワード

[root@archiso /]# passwd

ブートローダー

[root@archiso /]# pacman -S grub --noconfirm
[root@archiso /]# grub-install --target=i386-pc /dev/vda
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(s) in /boot: initramfs-linux.img
Found fallback initrd image(s) in /boot: initramfs-linux-fallback.img
done

再起動

  • chroot環境から抜けます。
[root@archiso /]# exit
exit
root@archiso ~ #
  • /mnt にマウントしたパーティションをアンマウントする。
root@archiso ~ # umount -R /mnt
  • OSを再起動する。
root@archiso ~ # reboot
  • 管理画面からServer Information-Settings-Custom ISO-Remove ISOを選択して、ISOのマウントを外す。

Env.

$ inxi -SM
System:    Host: hoge.blackle0pard.net Kernel: 4.13.4-1-ARCH x86_64 bits: 64 Console: tty 0
           Distro: Arch Linux
Machine:   Device: kvm System: QEMU product: Standard PC (i440FX + PIIX 1996) v: pc-i440fx-2.10 serial: N/A
           Mobo: N/A model: N/A serial: N/A
           BIOS: SeaBIOS v: rel-1.10.2-0-g5f4c7b1-prebuilt.qemu-project.org date: 04/01/2014

links

social