Skip to content

Instantly share code, notes, and snippets.

@t-okkn
Last active June 14, 2023 18:40
Show Gist options
  • Save t-okkn/7482d09cb08a119e972f102480a0ca5e to your computer and use it in GitHub Desktop.
Save t-okkn/7482d09cb08a119e972f102480a0ca5e to your computer and use it in GitHub Desktop.
オレオレ式、Arch Linuxインストール手順

Arch Linuxインストール手順

【公式】インストール手順

※「{{ }}」にて囲まれている部分は変数を表します(Jinja2などのテンプレートエンジンでもレンダリング可能なようにしてあります)。

■初期インストール

  1. 【コンソール】インストールディスクからArch Linuxを起動後、キーボード設定を変更し、rootにパスワードを設定する

    # loadkeys jp106
    # passwd root
    
  2. 【コンソール】sshdを起動し、他の端末からSSH接続を可能とする

    # systemctl start sshd
    # ip a
    
  3. 他の端末からrootユーザーでSSH接続を行う
    ※このとき、「ip a」で確認したIPアドレスで接続する
     他の端末におけるSSH接続方法は割愛
     なお、インターネットに繋がった有線接続を推奨

  4. システムクロックの更新と確認

    # timedatectl set-ntp true
    # timedatectl status
    
  5. UEFIに対応しているか確認する
    実行結果がエラーになり、UEFI非対応で起動してしまった場合はシャットダウンし、1. からやり直す

    # ls /sys/firmware/efi/efivars | head -n 5
    
  6. ディスクのパーティション確認と分割設定
    既にディスクに何かがインストールされていても、「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
    
  7. パーティションのフォーマット

    +++++ 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
    
  8. 作成したパーティションの確認
    この段階でOSをインストールするディスクのUUIDを控えておく

    # blkid
    # parted -l
    
  9. パーティションのマウント

    +++++ UEFIの場合 +++++
    # mount -t ext4 /dev/sda2 /mnt
    # mkdir /mnt/boot
    # mount -t vfat /dev/sda1 /mnt/boot
    
    +++++ BIOSの場合 +++++
    # mount -t ext4 /dev/sda1 /mnt
    
  10. ベースシステムのインストール
    時間がかかるので、しばらく待つ
    (安定志向を目指す場合は [linux-lts] を利用すると良い)

    # pacstrap /mnt base base-devel linux linux-firmware
    
  11. fstabの生成

    # genfstab -U /mnt >> /mnt/etc/fstab
    
  12. 新しくインストールしたシステムにchrootする

    # arch-chroot /mnt /bin/bash
    
  13. ロケールの設定

    # 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
    
  14. タイムゾーンの設定

    # ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
    # hwclock --systohc --utc
    
  15. ホストネームの設定

    # 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
    
  16. 必要なモジュールのインストール
    (安定志向を目指す場合は [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
    
  17. ネットワークの設定

    # 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
    
  18. systemd-networkd と systemd-networkd-wait-online を有効化

    # systemctl enable systemd-networkd
    # systemctl enable systemd-networkd-wait-online
    
  19. (新しくインストールしたシステム上の)rootのパスワードを設定

    # passwd
    
  20. ブートローダーの設定
    必要があれば [/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
    
  21. chroot環境から抜けて、ディスクをアンマウント

    # exit
    # umount -R /mnt
    
  22. ディスクからのインストールの終了
    ※シャットダウンしてディスクを抜く

    # shutdown -h now
    

■ローカルディスクから起動後

  1. 【コンソール】rootとしてログインする

    login : root
    
  2. 【コンソール】sshdを起動し、他の端末からSSH接続を可能とする

    # vim /etc/ssh/sshd_config
    =====
    -#PermitRootLogin prohibit-password
    +PermitRootLogin yes
    =====
    
    # systemctl start sshd
    # ip a
    
  3. 他の端末からrootユーザーでSSH接続を行う
    ※このとき、「ip a」で確認したIPアドレスで接続する
     他の端末におけるSSH接続方法は割愛

  4. ログインシェルをzshに変更する

    # chsh -s /bin/zsh
    
  5. 【必要がある場合】swapfileを作成して、swapを有効化する

    # dd if=/dev/zero of=/swapfile bs=1M count={{ SwapfileSize_MB }}
    # chmod 600 /swapfile
    # mkswap /swapfile
    # swapon /swapfile
    
  6. 【必要がある場合】swapfileが起動時にマウントされるように [/etc/fstab] を編集

    # echo -e "# swapfile config\n/swapfile none swap defaults 0 0\n" >> /etc/fstab
    
  7. 「vi」と「nano」というコマンドを「vim」にリンクを貼る

    # ln -s /usr/bin/vim /usr/bin/vi
    # ln -s /usr/bin/vim /usr/bin/nano
    
  8. 「netctl」をアンインストールして、「systemd-networkd」に一本化

    # pacman -R netctl
    
  9. 管理者用アカウントを作成する

    # groupadd -g 1000 general
    # useradd -N -m -g 1000 -G wheel -s /bin/zsh {{ Username }}
    # passwd {{ Username }}
    
  10. 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
    =====
    
  11. DNSサーバの設定を行う
    複数のIPを記載する際は半角空白区切り

    # sed -i -r 's/^#DNS=$/DNS={{ DNSServer }}/' /etc/systemd/resolved.conf
    
  12. systemd-resolvedの有効化と再起動

    # systemctl enable systemd-resolved
    # systemctl restart systemd-resolved
    
  13. [/etc/resolv.conf] をsystemd-resolved側の設定にする

    # rm /etc/resolv.conf
    # ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf
    
  14. 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
    
  15. systemd-timesyncdの有効化

    # timedatectl set-ntp true
    
  16. 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
    
  17. sshdの有効化

    # systemctl enable sshd
    
  18. ufwの設定

    # ufw default deny
    # ufw allow from {{ NetworkAddress }}/{{ MaskBit }} to any port {{ SSHPort }} proto tcp
    # ufw enable
    
  19. ufwの設定の確認

    # ufw status
    
  20. ufwの有効化

    # systemctl enable ufw
    
  21. SSDの自動trimデーモンの有効化と起動(HDDを使用している場合は不要)

    # systemctl enable --now fstrim.timer
    
  22. vnStatの有効化と起動
    ※What's vnstat?

    # mkdir /var/lib/vnstat
    # systemctl enable --now vnstat
    
  23. systemd-timesyncdの状態確認

    # timedatectl status
    
  24. systemctlのserviceの状態を確認

    # systemctl list-units --type=service | less
    
  25. 再起動

    # reboot
    

■最初に設定を推奨する項目

●HOME フォルダの root 汚染の解消

$ sudo rm -rf ~/.cache ~/.viminfo

●dotfiles で環境構築

clone先Pathは適宜変更のこと(dotfiles="~/.dotfiles")。

  1. github から dotfiles を clone

    $ git clone https://github.com/t-okkn/dotfiles .dotfiles
    
  2. (まだ、全自動じゃないので)設定をする

    $ cd ~/.dotfiles
    $ make install
    

●pacman に色をつける

$ sudo sed -i -r -e 's/^#(Color)$/\1/' /etc/pacman.conf

●yayの導入

  1. yayをリポジトリからcloneする

    $ cd ~
    $ git clone https://aur.archlinux.org/yay.git
    $ cd yay
    
  2. yayをインストール

    $ makepkg -si
    
  3. cloneしたフォルダを削除

    $ cd ../
    $ rm -rf yay
    
  4. 初回更新

    $ yay -Syyu
    

●Reflectorの設定

Reflectorの詳細

  1. Reflectorをインストールする

    $ sudo pacman -S reflector
    
  2. 現状の [/etc/pacman.d/mirrorlist] をバックアップする

    $ sudo cp -a /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.bak
    
  3. 設定ファイルを編集する

    $ 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
    =====
    
  4. サービスの有効化と起動

    $ sudo systemctl enable reflector.service
    $ sudo systemctl enable --now reflector.timer
    

●無線環境を構築する

  1. 無線環境に必要なパッケージのインストール

    $ sudo pacman -S iw wpa_supplicant
    $ yay -S rtl8812au-dkms-git
    

以下準備中・・・

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment