久しぶりに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