【公式】インストール手順
※「{{ }}」にて囲まれている部分は変数を表します(Jinja2などのテンプレートエンジンでもレンダリング可能なようにしてあります)。
-
【コンソール】インストールディスクからArch Linuxを起動後、キーボード設定を変更し、rootにパスワードを設定する
# loadkeys jp106 # passwd root
-
【コンソール】sshdを起動し、他の端末からSSH接続を可能とする
# systemctl start sshd # ip a
-
他の端末からrootユーザーでSSH接続を行う
※このとき、「ip a」で確認したIPアドレスで接続する
他の端末におけるSSH接続方法は割愛
なお、インターネットに繋がった有線接続を推奨 -
システムクロックの更新と確認
# timedatectl set-ntp true # timedatectl status
-
UEFIに対応しているか確認する
実行結果がエラーになり、UEFI非対応で起動してしまった場合はシャットダウンし、1. からやり直す# ls /sys/firmware/efi/efivars | head -n 5
-
ディスクのパーティション確認と分割設定
既にディスクに何かがインストールされていても、「mklabel gpt」の段階でディスク情報が全て消えてしまうので注意!# lsblk # parted -l +++++ UEFIの場合 +++++ # parted -s -a optimal /dev/sda -- mklabel gpt # parted -s -a optimal /dev/sda -- mkpart ESP fat32 2048s 512MB # parted -s -a optimal /dev/sda -- mkpart PRIMARY ext4 512MB 100% # parted -s -a optimal /dev/sda -- set 1 boot on +++++ BIOSの場合 +++++ # parted -s -a optimal /dev/sda -- mklabel msdos # parted -s -a optimal /dev/sda -- mkpart PRIMARY ext4 2MiB 100% # parted -l
-
パーティションのフォーマット
+++++ UEFIの場合 +++++ # mkfs.vfat -c -F32 -s2 -n UEFIBOOT /dev/sda1 # mkfs.ext4 -L ARCH_SYSTEM /dev/sda2 +++++ BIOSの場合 +++++ # mkfs.ext4 -L ARCH_SYSTEM /dev/sda1
-
作成したパーティションの確認
この段階でOSをインストールするディスクのUUIDを控えておく# blkid # parted -l
-
パーティションのマウント
+++++ UEFIの場合 +++++ # mount -t ext4 /dev/sda2 /mnt # mkdir /mnt/boot # mount -t vfat /dev/sda1 /mnt/boot +++++ BIOSの場合 +++++ # mount -t ext4 /dev/sda1 /mnt
-
ベースシステムのインストール
時間がかかるので、しばらく待つ
(安定志向を目指す場合は [linux-lts] を利用すると良い)# pacstrap /mnt base base-devel linux linux-firmware
-
fstabの生成
# genfstab -U /mnt >> /mnt/etc/fstab
-
新しくインストールしたシステムにchrootする
# arch-chroot /mnt /bin/bash
-
ロケールの設定
# sed -i -r 's/^#((en_US|ja_JP)\.UTF-8.*)$/\1/' /etc/locale.gen # locale-gen # echo LANG=ja_JP.UTF-8 > /etc/locale.conf # echo KEYMAP=jp106 > /etc/vconsole.conf
-
タイムゾーンの設定
# ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime # hwclock --systohc --utc
-
ホストネームの設定
# echo {{ Hostname }} > /etc/hostname # echo -e "#<ip-address> <hostname.domain.org> <hostname>\n127.0.0.1 localhost.localdomain localhost {{ Hostname }}\n::1 localhost.localdomain localhost {{ Hostname }}\n" >> /etc/hosts
-
必要なモジュールのインストール
(安定志向を目指す場合は [linux-lts-headers] を利用すると良い)# pacman -Syyu # pacman -S linux-headers grub dosfstools efibootmgr mkinitcpio asp traceroute dnsutils sysstat vnstat git vim openssh ufw python3 python-pip otf-ipafont ttf-hack dkms zsh tmux bc fzf openbsd-netcat dhcpcd pacman-contrib parted
-
ネットワークの設定
# ip a +++++ DHCPの場合 +++++ # echo -e "[Match]\nName={{ NICName }}\n\n[Network]\nDHCP=yes\n" > /etc/systemd/network/{{ NICName }}.network +++++ 固定の場合 +++++ # echo -e "[Match]\nName={{ NICName }}\n\n[Network]\nAddress={{ IPAddress }}/{{ MaskBit }}\nGateway={{ DefaultGateway }}\n" > /etc/systemd/network/{{ NICName }}.network
-
systemd-networkd と systemd-networkd-wait-online を有効化
# systemctl enable systemd-networkd # systemctl enable systemd-networkd-wait-online
-
(新しくインストールしたシステム上の)rootのパスワードを設定
# passwd
-
ブートローダーの設定
必要があれば [/etc/mkinitcpio.conf] を設定し、イニシャルRAMディスクを生成する# mkinitcpio -p linux
上記操作が不要である場合、以下のみを実施
+++++ UEFIの場合 +++++ # grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=grub --recheck # mkdir /boot/EFI/boot # cp /boot/EFI/grub/grubx64.efi /boot/EFI/boot/bootx64.efi +++++ BIOSの場合 +++++ # grub-install --target=i386-pc /dev/sda # grub-mkconfig -o /boot/grub/grub.cfg
-
chroot環境から抜けて、ディスクをアンマウント
# exit # umount -R /mnt
-
ディスクからのインストールの終了
※シャットダウンしてディスクを抜く# shutdown -h now
-
【コンソール】rootとしてログインする
login : root
-
【コンソール】sshdを起動し、他の端末からSSH接続を可能とする
# vim /etc/ssh/sshd_config ===== -#PermitRootLogin prohibit-password +PermitRootLogin yes ===== # systemctl start sshd # ip a
-
他の端末からrootユーザーでSSH接続を行う
※このとき、「ip a」で確認したIPアドレスで接続する
他の端末におけるSSH接続方法は割愛 -
ログインシェルをzshに変更する
# chsh -s /bin/zsh
-
【必要がある場合】swapfileを作成して、swapを有効化する
# dd if=/dev/zero of=/swapfile bs=1M count={{ SwapfileSize_MB }} # chmod 600 /swapfile # mkswap /swapfile # swapon /swapfile
-
【必要がある場合】swapfileが起動時にマウントされるように [/etc/fstab] を編集
# echo -e "# swapfile config\n/swapfile none swap defaults 0 0\n" >> /etc/fstab
-
「vi」と「nano」というコマンドを「vim」にリンクを貼る
# ln -s /usr/bin/vim /usr/bin/vi # ln -s /usr/bin/vim /usr/bin/nano
-
「netctl」をアンインストールして、「systemd-networkd」に一本化
# pacman -R netctl
-
管理者用アカウントを作成する
# groupadd -g 1000 general # useradd -N -m -g 1000 -G wheel -s /bin/zsh {{ Username }} # passwd {{ Username }}
-
sudoersを編集する
# visudo ===== -#Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" +Defaults env_keep += "PATH" -# Defaults env_keep += "HOME" +Defaults env_keep += "HOME" +Defaults timestamp_timeout=30 -# %wheel ALL=(ALL) ALL +%wheel ALL=(ALL) ALL =====
-
DNSサーバの設定を行う
複数のIPを記載する際は半角空白区切り# sed -i -r 's/^#DNS=$/DNS={{ DNSServer }}/' /etc/systemd/resolved.conf
-
systemd-resolvedの有効化と再起動
# systemctl enable systemd-resolved # systemctl restart systemd-resolved
-
[/etc/resolv.conf] をsystemd-resolved側の設定にする
# rm /etc/resolv.conf # ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf
-
systemd-timesyncdの設定
# sed -i -r -e 's/^#NTP=/NTP=ntp.jst.mfeed.ad.jp time.cloudflare.com/' -e 's/^#FallbackNTP=.*$/FallbackNTP=0.jp.pool.ntp.org 1.jp.pool.ntp.org 2.jp.pool.ntp.org 3.jp.pool.ntp.org/' /etc/systemd/timesyncd.conf
-
systemd-timesyncdの有効化
# timedatectl set-ntp true
-
sshdの設定
# sed -i -r -e 's/^#(Port )22$/\1{{ SSHPort }}/' -e 's/^(PermitRootLogin )yes$/\1no/' -e 's/^#(PermitEmptyPasswords no)$/\1/' /etc/ssh/sshd_config # echo -e "\n#For Judgement of Cascade Proxy\nAcceptEnv SOURCE_SSH_CONNECTION" >> /etc/ssh/sshd_config
-
sshdの有効化
# systemctl enable sshd
-
ufwの設定
# ufw default deny # ufw allow from {{ NetworkAddress }}/{{ MaskBit }} to any port {{ SSHPort }} proto tcp # ufw enable
-
ufwの設定の確認
# ufw status
-
ufwの有効化
# systemctl enable ufw
-
SSDの自動trimデーモンの有効化と起動(HDDを使用している場合は不要)
# systemctl enable --now fstrim.timer
-
vnStatの有効化と起動
※What's vnstat?# mkdir /var/lib/vnstat # systemctl enable --now vnstat
-
systemd-timesyncdの状態確認
# timedatectl status
-
systemctlのserviceの状態を確認
# systemctl list-units --type=service | less
-
再起動
# reboot
$ sudo rm -rf ~/.cache ~/.viminfo
clone先Pathは適宜変更のこと(dotfiles="~/.dotfiles"
)。
-
github から dotfiles を clone
$ git clone https://github.com/t-okkn/dotfiles .dotfiles
-
(まだ、全自動じゃないので)設定をする
$ cd ~/.dotfiles $ make install
$ sudo sed -i -r -e 's/^#(Color)$/\1/' /etc/pacman.conf
-
yayをリポジトリからcloneする
$ cd ~ $ git clone https://aur.archlinux.org/yay.git $ cd yay
-
yayをインストール
$ makepkg -si
-
cloneしたフォルダを削除
$ cd ../ $ rm -rf yay
-
初回更新
$ yay -Syyu
-
Reflectorをインストールする
$ sudo pacman -S reflector
-
現状の [/etc/pacman.d/mirrorlist] をバックアップする
$ sudo cp -a /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.bak
-
設定ファイルを編集する
$ sudo vi /etc/xdg/reflector/reflector.conf ===== --save /etc/pacman.d/mirrorlist --protocol http --protocol https --country Japan,Taiwan,Singapore,Australia --latest 10 --sort rate --download-timeout 10 =====
-
サービスの有効化と起動
$ sudo systemctl enable reflector.service $ sudo systemctl enable --now reflector.timer
-
無線環境に必要なパッケージのインストール
$ sudo pacman -S iw wpa_supplicant $ yay -S rtl8812au-dkms-git
以下準備中・・・