Archlinuxのインストール

Archlinuxが壊れた

ansibleで環境構築を自動化勉強していたらSDDが壊れたので ひさしぶりにArchlinuxをインストールした。

ちなみにArchlinuxは使い始めて3年目ほど。サーバでも運用中。 安定性は悪くない。ただ、理解して使わないとなかなか大変。

重視しているのは以下

  • パッケージのバージョンを固定できる知識
  • バックアップとリストアできる知識

さて、壊れたOSをUSB起動できるarchlinuxからマウントし、 インストール済のパッケージリストを取得しておく。 (今回の再インストールでは使わないけど思い出すために閲覧した)

pacman -Qq --dbpath /mnt/var/lib/pacman

ちなみにインストールとは?

最近、ボタンを押していってインストールするものばかりで、インストールとは何かわからない人は増えていると思うので、解説。

  1. パーティションの分割 ハードディスクを使用用途に分けて分割する。 主に、起動専用+すべてのファイルを格納する場所の2つ。 そして、swapというメモリをサポートする領域を必要に応じて作る。 それ以外にも、/home /varなど用途によっては分ける場合もある

  2. OSをインストールする これは、作成されたパーティションにOSを配置しているだけ。

  3. ブートローダをインストールする ハードディスクに格納されたOSは、PCが起動されても起動することができないので、 ブートローダと呼ばれる、特殊なプログラムをインストールする必要がある。 PCが起動されると、まず、ブートローダが起動され、ブートローダがOSを起動するからだ。

インストール

  • 最近の一般的なマザーボードに合わせてGPT+EFIでインストールする。
  • パッケージ管理はyaourtとpowerpillを使う
yaourt
AURからのパッケージをインストールできるパッケージ管理ツール
powerpill
pacmanのダウンロードを並列化する

パーティション

こういう場合に便利なコマンド |コマンド|機能| |:--|:--| |lsblk|接続されているディスクを表示する|

作りたい構成は以下

パーティション サイズ フォーマット マウントポイント
/dev/sda1 10G swap
/dev/sda2 512M vfat /boot
/dev/sda3 残り全部 ext4 /
gdisk /dev/sda
> o <-- 新しいGPTを作成
> n <-- 開始セクタはデフォルトでEnter
    <-- 終了セクタは+10G
> n <-- 開始セクタはデフォルトでEnter
    <-- 終了セクタは+512M
    <-- ファイルシステムはEF00
> n <-- 開始セクタはデフォルトでEnter
    <-- 終了セクタは+512M
    <-- ファイルシステムは8200
> w <-- 保存
オプション 機能
o 初期化
n パーティションを作成
w 保存

ファイルシステムの構築

mkswap /dev/sda1
swapon /dev/sda1
mkfs.vfat -F32 -n EFI /dev/sda2
mkfs.ext4 -L arch-root /dev/sda3

基礎システムの構築

# マウントする
mount /dev/sda3 /mnt
# ブート用のマウントポイント
mkdir /mnt/boot
# ブート用のマウント
mount /dev/sda2 /mnt/boot
# 基本システムのインストール
pacstrap /mnt base
# fstabのコピー
genfstab -U -p /mnt | tee /mnt/etc/fstab

ブートローダのインストール

pacman -S grub dosfstools efibootmgr
grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=grub --recheck --debug
# USBにインストールする場合は --removableをつける
grub-mkconfig -o /boot/grub/grub.cfg

再起動して起動したArchlinuxの中で最初にやること

ここから先は僕の個人的な意見がたくさんですが、参考になればと。

メインユーザを作成する

userは任意で変えてください

# sudoをインストールする
pacman -S sudo
# -u ユーザIDを指定
# -m ユーザディレクトリを作成
useradd -u 15000 -m user
# 作成したユーザをパスワード無しsudo
echo "user ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/user
# 作成したユーザがsudoをしてもSSH_AUTH_SOCKがつながるようにする
echo "Defaults:user env_keep += SSH_AUTH_SOCK" >> /etc/sudoers.d/user

以下作業はuserで行う

パッケージマネージャの管理

ミラーリストを最新にする

# ミラー取得パッケージをインストール
sudo pacman -S reflector
# ミラーリストのバックアップを取る
cp /etc/pacman.d/mirrorlist{,.backup}
# ミラーリストを更新する
# --country 国を指定
# --sort ソートする(rateで速度の早いミラー順にしてくれる)
# --save 保存先
reflector --verbose --country 'Japan' --sort rate --save /etc/pacman.d/mirrorlist
# パッケージデータベースの更新とソフトウェアの更新
pacman -Syu

yaourtのインストール

どうしてもAURのパッケージを使う必要は出てくるので以下のようにリポジトリを追加

/etc/pacman.confを編集

# yaourt
[archlinuxfr]
SigLevel = Never
Server = http://repo.archlinux.fr/$arch
# zfs
[archzfs]
Server = http://archzfs.com/$repo/x86_64
# powerpill
[xyne-any]
SigLevel = Required
Server = http://xyne.archlinux.ca/repos/xyne
# base-develはyaourtでインストールするときに使われるビルドツールが含まれる場合が多い
pacman -S yaourt base-devel customizepkg rsync
yaourt -Syu

powerpillのインストール

yaourt -S --noconfirm powerpill

/etc/yaourtrcに以下を追記して、powerpillを使用するようにする

PacmanBin='/usr/bin/powerpill'

良く使うパッケージのインストール

パッケージ検索プログラム

pkgfile 探しているプログラム名で含まれるパッケージを教えてくれるので便利

yaourt -S pkgfile
sudo pkgfile --update
# --neededをつけると重複したパッケージはスキップされる
# --noconfirmをつけると色々聞かれない(要注意!でも楽)
yaourt -S --needed --noconfirm \
    # よくダウンロードするときに使う
    git wget curl rsync \
    # ターミナルを便利にしてくれる
    tmux \
    # zshは便利
    zsh zsh-completions \
    # sshに必要
    openssl openssh 

EDITOR

エディターはneovimという方用にnvimのインストール

# --neededをつけると重複したパッケージはスキップされる
# --noconfirmをつけると色々聞かれない(要注意!でも楽)
yaourt -S --needed --noconfirm python python-pip neovim
mkdir -p ~/.config
touch -p ~/.config/nvim.init.vim
sudo pip install --upgrade neovim