目次

Arch Linux のインストールから、Arch Linux を普段使っていく上で役立つ Tips を紹介します。

はじめに

私が Linux を本格的に使い始めたのは Manjaro Linux からでした。

Manjaro Linux というのは、Arch Linux をベースに GUI デスクトップを追加した Linux ディストリビューションです。インストールのしやすさとパッケージマネージャーの使いやすらから定評があります。また、Arch Linux ベースの OS はローリングリリースを採用しており、アップデートが早いことが特徴的です。

方針について

当記事の方針の一つは、著者が後々利用しやすいように作っていく方針です。

一部、表現等に正確ではないものも含まれると思いますが、この記事では正確さよりも分かりやすさを重視します。もし正確な情報が欲しければ、ArchWikiなど参照してください。

なお、内容が充実してきたら別ページにも保存するかもしれません。

著者のレベル

著者はコンピュータやLinuxについては全くの初心者です。一緒に勉強していきましょう。

Linux など

いきなり専門用語を連発してしまいましたが、分からない人用に簡潔ではありますが、それぞれの単語のイメージするところを紹介します。

Linux とは Linux カーネル(kernel) を意味したり、WindowsやMacのような一般的な OS とは異なる OSS(オープンソース・ソフトウェア) の無料 OS を意味したり、Linux ディストリビューションという Linux カーネルを使って開発されている様々な種類の Linux OS を意味したりします。

ここで、カーネルというのはアプリとハードをつなぐ役割を担っている OS を動かすための必須の仕組み、機能をイメージすると分かりやすいです。

ローリングリリースとは、常にアップデートされる仕組みのことです。

パッケージマネージャーとは、アプリを管理するためのアプリのことで、インストールしたり、削除したりすることを簡単にしてくれます。

Arch Linux の特徴

Arch Linux も Linux ディストリビューションの一つで、その特徴の一つはシンプルにあります。

シンプル故に、何をするにしても自分でやらなければなりません。特に、環境の構築はユーザーに任されています。

Arch Linux 自体は、パッケージマネージャーであるpacman及び、Arch Linuxのベース・パッケージであるbase, base-develでできています。

Arch Linux と似た Gentoo Linux

ここで、Arch Linux はよく Gentoo Linux と比較されます。

ここで、Gentoo Linux は Chrome OS Linux のベースにもなっているハッカークラスのユーザーに人気の OS です。

Gentoo Linux は ローリング・リリースを採用している点及び、シンプルさ、つまり、環境構築は全てユーザーが行う点では Arch Linux に似ています。

違いと言えば、Gentoo Linux のほうが対応アーキテクチャが多いことと、基本パッケージのビルドを自分のマシンで行うかどうかです。

Arch Linux は基本パッケージを既にビルドされた状態でダウンロードし、インストールします。その為、Gentoo Linux に比べてインストール時間が非常に短いです。

ただし、これは、どちらの OS もやろうと思えばできることです。例えば、Arch Linux もパッケージを独自ビルドすることは可能です。また、Gentoo Linux も GRP(Gentoo Reference Platform) という仕組みを使ってあらかじめビルド(コンパイル)されたパッケージを用いて、インストールを素早く行うことができます。

私は、どちらかと言うと Arch Linux のほうが便利だと思ってこっちを使っています。それは、性能の低いマシンなどにもインストールすることがあり、その場合、ビルド時間が非常に長くなってしまう Gentoo Linux は基本的には向いていないと考えるからです。USB や Android などにもインストールして使います。

ただし、Arch Linux が動かないマシンには、対応アーキテクチャの関係で Gentoo Linux を選択するだろうと思います。

Arch Linux を選択するのに向いているユーザー

基本的には、Arch Linux を使ってみたいという方なら、誰でも向いているというのが個人的な考えです。

ただし、幾つかのアドバイスが必要だと思うので、それについて説明します。

まず、環境構築に興味がない人には向いていないだろうと思います。

なぜなら、Arch Linux はボタンを押したらインストールできるというものではないからです。

自分でコマンドを叩き、欲しいパッケージを選んでインストールしないと起動しません。その際に叩くコマンドも、基本的なものではあるものの非常に多いです。特にデスクトップをある程度使えるくらいまでにしようと思ったら、叩くコマンドは多くなります。したがって、構築する環境によっては非常に時間と手間がかかります。

次に、CL(コマンドライン) を日頃から使っていない人には Arch Linux は向いていないかもしれません。

CLI を日頃から使っているユーザーは迷うことがないし、もしハマることがあったとしても、大抵は自力で問題を解決できると思われます。しかし、そうでないユーザーは、ハマったら抜けられないかもしれませんし、訳がわからないということになるかもしれません。この場合はやはり時間が勿体無いと思われます。また、トラウマになってしまうこともあるかもしれません。

Arch Linux インストール関連

基本的には、インストールガイドを読めばOKです。

インストールディスクのダウンロードと作成

まずはArch Linuxのインストールディスクを作成します。インストールディスクと本体は全くの別物です。例えば、インストールディスクでのデフォルトシェルは/bin/zshですが、本体はbin/bashです。その他に様々な違いがあります。

# download iso
$ export url=http://ftp.jaist.ac.jp/pub/Linux/ArchLinux/iso/latest
$ export file=`curl -sL ${url} | grep '.iso<' | sed -n 's/.*href="\([^"]*\).*/\1/p'`
$ export sum=${url}/md5sums.txt
$ export dl=${url}/${file}
$ export curl -sOL ${dl}

# check md5sum
$ curl -sLO ${sum}
$ md5sum -c md5sums.txt

# write usb
$ sudo dd bs=4M if=./${file} of=/dev/sdx && sync

ここで、md5sumはファイルが改ざんされていないかを調べるためのコマンドです。セキュリティ的には別々の場所に保存し、ファイルをダウンロードする都度チェックを行いますが、ファイルと同じ場所にハッシュ値が置かれることもあります。

シェルスクリプト

$ export b=b
$ export h=host
$ export u=user
$ export a="jq net-tools git zsh tmux go ctags"

$ cp -rf /etc/pacman.d/mirrorlist /etc
$ zsh -c "cat /etc/mirrorlist | grep -A1 Japan >! /etc/pacman.d/mirrorlist"
$ sed -i 's/--//g' /etc/pacman.d/mirrorlist
$ pacman-key --refresh-keys
$ pacman -Sy
$ fdisk -l
$ parted /dev/sd${b} \
	-s mklabel gpt \ 
	-s mkpart primary ext2 0 200 \
	-s mkpart primary ext4 200 100% \
	-s p
$ mkfs.vfat /dev/sd${b}1
$ mkfs.ext4 /dev/sd${b}2
$ mount /dev/sd${b}2 /mnt
$ pacstrap /mnt base base-devel grub dhcpcd efibootmgr
$ genfstab -p /mnt >> /mnt/etc/fstab

$ echo -e '[archlinuxfr]\nSigLevel = Never\nServer = http://repo.archlinux.fr/$arch' >> /mnt/etc/pacman.conf
$ echo -e 'Defaults env_keep += "HOME"\n%wheel ALL=(ALL) ALL' >> /mnt/etc/sudoers
$ echo -e '%wheel ALL=(ALL) NOPASSWD: /usr/bin/pacman -Syu --noconfirm, /usr/bin/yaourt -Syua --noconfirm, /usr/bin/reboot, /usr/bin/poweroff' >> /mnt/etc/sudoers
$ echo $h > /mnt/etc/hostname
$ echo -e 'en_US.UTF-8 UTF-8\nja_JP.UTF-8 UTF-8' >> /mnt/etc/locale.gen
$ echo 'LANG=ja_JP.UTF-8' > /mnt/etc/locale.conf

$ arch-chroot /mnt /bin/bash -c "
	pacman-db-upgrade
	grub-install --force --recheck /dev/sd${b}
	grub-mkconfig -o /boot/grub/grub.cfg
	systemctl enable dhcpcd
	pacman -S archlinux-keyring --noconfirm;

	useradd -m -G wheel -s /bin/bash $u

	ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
	timedatectl set-timezone Asia/Tokyo
	timedatectl set-ntp true
	hwclock --systohc --utc
	hwclock --systohc
	echo root:root | chpasswd
	echo $u:root | chpasswd

	pacman -Sy yaourt --noconfirm
	update-ca-trust
	pacman -Sy $a --noconfirm
"

$ reboot

コマンド解説

では、以下より詳細な解説を行います。なお、上記コマンドの一部の不要な部分を省略することがあるかもしれません。

まずはポイントから。以下のコマンドを使用すると、Arch Linuxのインストールを自動化できます。手動でやる場合はこのようなワンライナーではなくcfdiskarch-chrootを単体で使いますが、自動化スクリプトを作成する場合はこのようなワンライナーを使えます。ディスクはインストールするものを選択します。気をつけましょう。ここでは本体sdaではなくsdbにインストールしています。

# ディスクパーティションを作成する
# fdisk, cfdisk
$ parted /dev/sdb \ # sdb
	-s mklabel gpt \ # gpt
	-s mkpart primary ext2 0 200 \ # 0M - 200M
	-s mkpart primary ext4 200 100% \ # 200M - 残り全部
	-s p

# chrootで実行するコマンドの記述
$ arch-chroot /mnt /bin/bash -c "
	pacman-db-upgrade
"

Kernelからの情報取得

Kernelから吐かれた情報を取得することができます。Kernelから吐かれる情報は/sys/classなどに置いてあります。基本的にハードに関する情報で、コマンドから取得するよりも遥かに効率的です。

#!/bin/zsh
export DISPLAY=:0.0
export XAUTHORITY=/home/`whoami`/.Xauthority
export battery_level=`cat /sys/class/power_supply/BAT0/capacity`
export battery_status=`cat /sys/class/power_supply/BAT0/status`
echo -e "$battery_level\n$battery_status"

Arch Linux アプリ関連

基本的には、アプリ一覧が便利です。