Arch Linuxをインストールした


2016/05/14更新

@kotatsu_mi 様からのありがたいお言葉を頂いたので載せておきます.

とのことなので, Wikiコントリビュートしないんですかと煽りながら期待しながら, 各自対応をお願いします.

また, 「systemd-networkd使わずとも最初からNetworkManagerインストールしておけばええやん」的なツッコミもお待ちしています.

# コメント欄やっぱり欲しいな. でも作るのめんどくせ.

突然のArch Linux

聞いて驚け! 私はArch Linuxをインストールした. そうだ. Ubuntu 7.10から8年も使い続けていたそのUbuntuを捨て, Arch Linuxをインストールしたのだ.

といってもUbuntuに嫌気が差したからArch Linuxを入れたのではなく, これは必要に迫られてのものだ.

私はQtでWebコンテンツを表示しようとしていた. Qt 5ではWebEngineというものが導入され, これまでのWebKitがdeprecatedになった. そして, WebKitモジュールは最近のブラウザに比べれば古く, 劣ったものになってしまっていた. それ故に私はQt 5 WebEngineを導入し, そしてPythonでのAPIとして使用していたPyQtをそれに対応させる必要があった.

私は素直にChromiumがまるごと入った太ったWebEngineを時間をかけてコンパイルし, PyQtも同じくコンパイルし, そしてcheckinstallによってインストールした.

しかし, うまく動かない. 元から導入されていたQtやPyQtのモジュール群などとの不整合を起こしたらしかった. QtやPyQtをまるごとcheckinstallしようかとも考えたが, checkinstallに嫌気が差していたのは事実だった. そこまでして不足を補う必要があるかも, もはや曖昧なものになっていた.

そこで, Arch Linuxだ. これは合理的な帰結だ. 必要なものを得るというだけのことだ. しかし, Ubuntuにも愛着があったので, 悩んだ. 私にはマルチブートとか中途半端な選択肢はない.

結局, 私はArch LinuxをメインPCであるThinkPad X220 Tablet上のUbuntuに 上書きインストールすることにした.

手順

ここで, WebEngineを使ったプログラムを共同開発するたけてぃ氏のために, そしてすべてを忘れ去った未来の自分のために自分が踏んだ手順を書いておく.

前準備

まず, Arch Linuxをダウンロードする. 推薦されているBitTorrent Downloadを使用した.

Arch Linux - Downloads

このイメージをUSBメモリ上のFATに展開した. EFIなのでこれだけで十分だった. 有線LANを接続し, 心の準備を整えたら このUSBメモリを挿して起動する.

Arch Linuxが起動したら, 次のコマンドでキーボードレイアウトを設定した.

loadkeys jp106

これでインストール環境は準備できた.

インストール先の用意

/dev/sdb1crypt_LUKSな領域があり, /dev/mapper/archにマップすることにする. /dev/mapper/archはBtrfsで, @, @homeというsubvolumeがある.

ここではUbuntuが入っている@を消去し, @homeからは設定ファイルを抹消, それぞれ/mnt, /mnt/homeにマウントした.

cryptsetup open /dev/sdb1 arch
mount /dev/mapper/arch /mnt
btrfs subvolume delte /mnt/@
btrfs subvolume create /mnt/@
umount /mnt
mount -o subvol=@ /dev/mapper/arch /mnt
mkdir /mnt/home
mount -o subvol=@home /dev/mapper/arch /mnt/home
rm -rf /mnt/home/.*

さらに, EFISTUBを使う予定なので, 次のようにEFI領域へのマウントポイントを作成した. ESPは/dev/sda1で, FATである.

mkdir /mnt/esp
mount -o fmask=0177,dmask=0077 /dev/sda1 /mnt/esp
mkdir /mnt/esp/EFI/arch
mount --bind /mnt/esp/EFI/arch /mnt/boot

インストール

Arch Wikiに沿ってインストールする. (素晴らしいことにArch Wikiの翻訳はほぼ完璧かつ最新なので, 日本語版へのリンクを貼っておく.)

nano /etc/pacman.d/mirrorlist
pacstrap /mnt base
genfstab -p /mnt >> /mnt/etc/fstab
arch-chroot /mnt
nano /mnt/etc/fstab # ちょっとだけ編集. やらなくてもよい.
echo root3-X220t > /etc/hostname
ln -s /usr/share/zoneinfo/Japan /etc/localtime
nano /etc/locale.gen
locale-gen
echo LANG=ja-JP.UTF-8 > /etc/locale.conf
echo KEYMAP=jp106 > /etc/vconsole.conf
: crypt_LUKSのためにHOOKSの中のfilesystemの前にencryptと追記.
nano /etc/mkinitcpio.conf
mkinitcpio -p linux
passwd
exit

次に, ブートできるようにEFIエントリに追加する.

efibootmgr -c -l '\EFI\arch\vmlinuz-linux' -L 'Arch Linux' -u 'cryptdevice=/dev/sdc1:arch root=/dev/mapper/arch rootflags=subvol=@ initrd=/EFI/arch/initramfs-linux.img'

cryptdiskではパーティション構成が変更されても問題ないようにUUIDなどを設定すべきだが, UUIDを書いたら長すぎたのかファームウェアが正常に動作しなくなってしまったのでこうした.

また, より新しいマシンではSecure Bootがあるかもしれない. そういった場合には, 鍵を追加する, shimを使う, Secure Bootを無効にする, などの対応が必要だ.

終わったらpoweroffで電源を切り, メディアを取り外す.

ユーザーの作成

まずはrootで起動する.

起動したら, 最初にやることはユーザーの追加だ. rootは心臓に悪い.

useradd -d /home/root3 -M root3
passwd root3

ユーザーを追加したらとっととexitでroot抜けて, 作ったユーザーでログインする. しかし, 当然のことながらこのあともrootでの作業が続く.

インターネット接続

当然のようにsuでrootになる.

su

さて, 現状では最低限のものしかないので不便極まりない. 追加でソフトウェアをインストールするために, まずはインターネットにつなぐ. 使うのはsystemd-networkdだ.

lspci -v | grep -i ethernet

これにより, e1000eなるカーネルモジュールで有線LANが提供されていることがわかった. これでdmesgを検索する.

dmesg | grep e1000e

デバイスファイルはenp0s25らしい. これを元に設定ファイルを作成する.

nano /etc/systemd/network/enp0s25.network
[Match]
Name=enp0s25


[Network]
DHCP=both

あとはサービスを開始するだけだ. Ubuntuばかり使っていたからserviceと手が滑る.

systemctl start systemd-networkd

続けてsystemd-resolvedを設定する. DHCPでどう設定するのかわからなかったので, Google先生の力を借りた. 仮の設定なので問題ないだろう.

nano /etc/resolv.conf
namespace = 8.8.8.8

同じくサービスを開始する.

systemctl start systemd-resolved

sudo

これでインターネットに自由にアクセスできるようになった. rootをもっと安全に使うため, sudoを導入する.

pacman -S sudo

次に, sudoersを書き換える. rootにsudoを許可する設定があるが, これに習い作ったユーザーにsudoを許可する. viは使わない.

EDITOR=nano visudo

これが済んだらexitでrootから抜ける.

gnome

GUIがないと辛いのでgnomeをインストールする. 同時にextraをインストールするか聞かれるが, 私はすべてインストールした. ログインにはgdmを使う.

sudo pacman -S gnome

gdmを開始する. sudo systemctl start gdm

Ctrl-Alt-F1などでセッションを切り替え, gdmでログインする. 端末を立ち上げて設定の続きを行う.

次回以降でgdmが自動起動するようにgdmを有効にする.

sudo systemctl enable gdm

NetworkManager

先にしたネットワークの設定は暫定だ. 簡単にネットワークの設定ができるようにNetworkManagerをインストールする.

sudo pacman -S network-manager-applet

インストールしたら, systemd-networkdやsystemd-resolvedを殺し, NetworkManagerを起動, 有効にする.

sudo systemctl stop systemd-networkd
sudo systemctl stop systemd-resolved
sudo systemctl start NetworkManager
sudo systemctl enable NetworkManager

開発環境の導入

ようやく準備が整った. あとはpacmanで導入するだけだ.

sudo pacman -S qt5-webengine python-pyqt5 git

インストールしたら目的のソフトウェアをダウンロードし, 動作を確認する.

git clone https://github.com/173210/daisy.git
cd daisy
sudo python setup.py install
daisy

一言

面倒くせえ.

[top]