GUI 環境で手軽に使える Linux もだいぶ増えましたが、Linux はやっぱりコマンド操作ですね。
今回は脱初心者を目指して Arch Linux を、コマンド操作でインストールしてみました。
ちょっとエンジニア気分が味わえるかもしれませんよ。
テックキャンプ無料カウンセリングはコチラから
Arch Linux をインストールするにあたって、どうすれば簡単にインストールできるかな?ということであれこれ調べてみました。
ざまざまなサイトや動画で Arch Linux のインストール方法を調べてみると、結局のところいちばんシンプルで漏れのないのが ArchWiki のインストールガイドでした。
なので、基本的には ArchWiki の内容をベースにインストールしていきます。
ちなみに ArchWiki は Arch Linux だけでなく他の Linux でも活用できる情報が満載です。
プロジェクトの几帳面さがよく出ていると思います。
今回は VirtualBox にインストールするため、コチラの記事も参考にしました。
…でも、実際にはほとんど使いませんでしたけれどね。
最低限 Arch Linux が動作する程度にしか設定しませんでしたので、アチコチ端折ってます。
ということで始めます。
インストールの準備
インストールメディアの入手
ArchWiki は日本語にローカライズされたサイトを使いますが、このサイトだとダウンロードページがリンク切れのためダウンロードできません。
なので、本家のサイトからダウンロードします。
VirtualBox にインストールする場合
UEFI モードでのインストールを紹介しているものがほとんどでしたが、今回はあえて BIOS モードの VirtualBox にインストールします。
RAM がたくさんあるホストなので、RAM 容量は 4GB くらいにしておきます。
あとはデフォルトでOKです。
UEFI モードであれば「設定」にある、「システム」>「マザーボード」の拡張機能で「EFIを有効化」にチェックを入れますが、今回は BIOS モードなのでスルーします。
ただし、コア数は多いほうがいいと思うので「プロセッサー」の数は4に設定しておきます。
ストレージに、先ほどダウンロードしたイメージデータをセットしてインストールを始めましょう。
キーボードレイアウト
入力には日本語キーボードを使うため、なにはともあれキーボードレイアウトの変更をします。
デフォルトのキーボードレイアウトは US 配列なので、そのままだと特に記号の入力のときに困ってしまいます。
ということで、キーボードレイアウトを日本語配列にします。
# loadkeys jp106
起動モードの確認
起動した際に BIOS モードだということを確認していますが、
UEFI モードか BIOS モードかをチェックする場合は
インストールの前に、UEFI モードで起動しているか BIOS モードで起動しているかを確認しておきます。
そこらへん、ちゃんと理解して起動していれば、ここもスキップできると思いますが、今回は一応チェックしておきます。
# ls /sys/firmware/efi/efivars
正しく表示されれば UEFI モードで起動しています。
このようにディレクトリが存在しないというエラーが出た場合は BIOS モードで起動してます。
今回はあえて BIOS モードで起動させています。
archwiki では、次の手順としてインターネット接続とシステムクロックの更新について解説されています。
実機にインストールすときは必要かと思いますが、今回は割愛します。
パーティション
インストールするデバイスをフォーマットします。
ライブ環境によって認識されたディスクは、接続方法やデバイスによって /dev/sda や /dev/nvme0n1 、/dev/mmcblk0 というように割り当てられます。
実機にインストールする場合には、lsblk などのコマンドを使ってデバイスを確認してからフォーマットなりインストールしたほうがいいですね。
とにかくフォーマットします。
何度も繰り返しますが、今回は BIOS モードでインストールするためフォーマットは MBR です。
本来だとパーティショニングはちゃんとした設計が必要です。
が、まずは Arch Linux をインストールさせることが優先なので、ざっくり行きます。
ただし、後で UEFI モードでのインストールも考えているので、最低限それっぽいパーティショニングをします。
今回のパーティションは root パーティションと /boot パーティションだけです。
/home や /swap 、/var や /tmp などは用意しません。
# fdisk /dev/sda
Command (m for help): o # create a new empty DOS partition table
パーティションテーブルを用意するとき BIOS モードは MBR なので o です。UEFI モードなら GPT なので g ですね。
Command (m for help): n # add a new partition
ここからは fdisk でのコマンド操作です。
まずブート用のパーティションを用意します。
Select (default p): ↲ # primary
デフォルト「primary」でOKなのでエンターですすめます。
Partition number (1-4, default 1): ↲
1番目のパーティションなので、デフォルトでOK。
First sector (2048-16777215, default 2048): ↲
デフォルトの値でOKなのでエンターですすめます。
Last sector, +/-sectors or +/-size{K , M , G , T , P} (2048-16777215, default 16777215): +512M
ブート用のパーティションサイズは 200~300MB 程度で良さそうなのですが、皆さん 512MB (もしくは 512MiB) くらいに設定したので真似します。
Created a new partition 1 of type 'Linux' and of size 512 MiB .
ということで、まずは1つ目のパーティションの準備ができました。
次にRoot パーティションの準備を始めます。
Command (m for help): n
Select (default p): ↲
Partition number: ↲
First sector: ↲
Last sector: ↲
Created a new partition 2 of type 'Linux' and of size 7.5 GiB .
パーティションの準備が終わったので、設定を書き込んで fdisk を終了します。
Command (m for help): w
パーティションのフォマット
用意したパーティションを初期化します。
# mkfs.ext2 /dev/sda1 #/boot は ext2 または vfat がおすすめです。理由は調べてみてください。
# mkfs.ext4 /dev/sda2 #Linux の定番フォーマットです。ルートパーティションはこれです。
ファイルシステムのマウント
初期化したパーティションを、読み書きできるようマウントします。
/mnt は CD-ROM などのファイルシステムの一時的なマウントポイントです。
ちなみに同じ CD-ROM でもデータだけのやつなんかは /media にマウントされます。USB とかもここにマウントされます。
# mount /dev/sda2 /mnt #まずはルートパーティションをマウント。
# mkdir /mnt/boot #マウントしたパーティションにブート用のディレクトリを作成します。
# mount /dev/sda1 /mnt/boot #作成したブート用パーティションに、ブート用に用意したパーティションをマウントします。
これでインストールの準備が整いました。
インストール。
ミラーの選択
インストールされるパッケージは定義されているミラーサイトからダウンロードされます。
定義されているファイルにはたくさんのミラーがあり、上の方に書かれているミラーから優先的にダウンロードされます。
つまり近くのミラーサイトがファイルの上に書かれていれば、ダウンロードの待ち時間が短くて済むことになります。
なので、定義されているファイルを確認して、必要とあれば編集します。
というか編集が必要です。
# vim /etc/pacman.d/mirrorlist
任意のエディタでファイルを編集します。今回は vim を使ってファイルを編集します。 vim の使い方は調べてください。(あとでブログの方に簡単にまとめるかもしれませんが…期待しないでください)
日本のミラーはけっこう下の方にあるので、これをいちばん上まで持ってきます。
ときどき表示が違うことがあります。
そんな時は、特に編集しなくても問題ありませんでした。
必須パッケージのインストール
Arch Linux を動作させるのに必要なパッケージをインストールしていきます。
最低限 base パッケージと Linux カーネル、一般的なハードウェアのためのファームウェアをインストールします。
加えて、環境に応じて必須パッケージに含まれないデバイスファイルやネットワーク関連のパッケージ、テキストエディタなどもインストールしておきます。
特にネットワーク関連のパッケージが入っていないと、インストール後に何もできなくなってしまいます。
困るどころの騒ぎじぁなかったので、一緒にインストールしておきます。
ちなみにエディタは vim です。
# pacstrap /mnt base linux linux-firmware base-devel vim dhcpcd
システムの設定
fstab の生成
fstab の生成をします。
fstab はディスクパーティションや、いろいろなブロックデバイス、リモートファイルをどうやってファイルシステムにマウントするかを記述するファイルです。
genfstab コマンドを使って fstab を生成します。
# genfstab -U -p /mnt >> /mnt/etc/fstab
オプションの「-U」は UUID というソフトウェア上でオブジェクトを識別するための識別子を与えることができる機能です。
「-p」オプションは疑似ファイルシステムをスキップするとのことですが、よくわかりません。でも付けといたほうが良さそうなので付けます。
chroot
/mnt 以下のディレクトリをルート権限で操作します。
# arch-chroot /mnt
実行するとプロンプトの表示が変わります。
タイムゾーン
タイゾーンの設定とハードウェアクロックの設定を行います。
時間がズレていても構わない人はスキップしても大丈夫です。
が、ボクは嫌なのでちゃんと設定します。
# ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
オプションの「-s」はシンボルリンクを作成します。
シンボルリンクとはWindowsでいう「ショートカット」のUNIX系OS版の呼び方。
オプションの「-f」をつけると、リンクファイルと同じ名前のファイルがあっても強制的に上書きします。
hwclock は機能とオプションの設定があり「–systohc (or -w)」はシステムクロックからハードウェアクロックを設定するものです。
# hwclock -w -u
or
# hwclock --systohc --utc
デフォルトでローカルタイム (-l) っぽいです。
UTC (協定世界時) に合わせたい場合には「–utc (or -u)」をつけるといいみたいです。
ローカリゼーション
次に、言語設定のためのファイルを生成します。
# locale-gen
言語設定のファイルを編集して、デフォルトとなる en_US.UTF-8 UTF-8 と、使うロケールをアンコメントします。
コダシマは日本人なので ja_JP.UTF-8 UTF-8 も使います。
# vim /etc/locale.gen
言語の環境変数を設定するファイルを作成します。
# echo LANG=en_US.UTF-8 > /etc/locale.conf
初期段階では文字化けなどのトラブルを避けるため、デフォルトの en_US.UTF-8 を設定します。
念の為、以下のコマンドも実行する方もいるようです。
# export LANG=en_US.UTF-8
キーマップも設定しておきます。
# echo KEYMAP=jp106 > /etc/vconsole.conf
ネットワーク設定
まずはホスト名を設定します。
好きなホスト名を設定しましょう。
# echo (hostname) > /etc/hostname
決めたホスト名を hosts にも記述します。
# vim /etc/hosts
127.0.0.1 localhost
::1 localhost
127.0.1.1 (hostname).localdomain (hostname)
固定 IP などを使っている場合には「127.0.1.1」のところに、該当するアドレスを指定します。
Initramfs
通常は pacstrap で Linux カーネルをインストールしたときに mkinitcpio が実行されるため、この項目にある initramfs の作成は必要ありません。
が、 LVM やシステムの暗号化、RAID 環境ならば mkinitcpio.conf を編集して initramfs を再生成する必要があるようです。
Root パスワード
ルートパスワードを設定します。
# passwd
ブートローダー
Arch Linux を起動させるためのブートローダーをインストールします。
が、その前に、マシンのプロセッサによってマイクロコードのアップデートを有効にする必要があるようです。
今回は VirtualBox にインストールしていますが、それでもプロセッサは intel のものなので、intel のマイクロコードをインストールします。
# pacman -S intel-ucode
ブートローダーのインストールをします。
BIOS と UEFI 両方に対応しているブートローダーが良いので、今回は GRUB をインストールします。
# pacman -S grub
Syslinux も良さそうですが、GRUB よりも手数が多いので、今回はパスします。
BIOS モードでインストールするので、ターゲットは i386-pc になります。
# grub-install --target=i386-pc --recheck /dev/sda
デバイスマップの再探査 (–recheck) も、皆さんやっているようなので、安全を第一に考え、オプションを追加しました。
次は GRUB の設定ファイルを用意します。
# grub-mkconfig -o /boot/grub/grub.cfg
or
# grub-mkconfig --option=/boot/grub/grub.cfg
オプションの「-o」をつけると出力する設定ファイル名を指定できます。
あと、インストールが終わって、再起動後にネットワークが使えないとか最悪すぎるので、先に設定しておきます。
# systemctl enable dhcpcd.service
再起動
これで最低限必要と思われる設定が終わったので、chroot 環境から抜けます。
# exit
システムを安全に終了させるため、パーティションを手動でアンマウントします。
# umount -R /mnt
オプションの -R は再帰的にアンマウントするというもの。
再帰的という表現は一言で言い表すのは至難の業ですが、ざっくり言うと /mnt 以下のディレクトリやファイルに対して、その都度 umount を再度呼び出して実行するといったところでしょうか?
よくわかりませんが。
これで一通り終わりました。
reboot でいきなり再起動もいいのですが、VirtualBox のイメージデータを外したいので、再起動ではなくシャットダウンをします。
# shutdown -h now
オプションの「-h」はマシンの電源を切るものです。
なので、このコマンドは今すぐマシンの電源を切る命令です。
ちなみに「-r」を指定すると再起動になります。
インストール後
ちゃんとログインもできたので、ベースとなる Arch Linux はインストールできました。
でもやっぱり GUI 環境がほしいので、ここから最低限の GUI 環境を構築していきます。
とりあえず root でログインします。
システム管理
ユーザーとグループ
まず、root 権限のままだと、誤ってシステムを壊しかねないので、普段遣い用のユーザーを設定します。
# useradd -m (username)
オプションの「-m」もつけて、ホームディレクトリも一緒に作成します。
追加するユーザーのパスワードも設定しておきましょう。
# passwd (username)
管理者権限
管理者権限を使う場合には su と sudo があります。
su は、exit しない限り管理者権限なので、root でログインしているのと大差ないです。
それに対して sudo は一時的にひとつのコマンドに対して管理者権限を与えるため、su よりもその範囲は狭いです。
なのでシステムを壊さないよう(?) sudo をインストールします。
# pacman -S sudo
で、ユーザーにもインストールした sudo を使えるよう、設定ファイルにユーザーを追加します。
# vim /etc/sudoers
(username) ALL=(ALL) ALL
グラフィカルユーザーインターフェース
ディスプレイマネージャ
定番のクロスデスクトップディスプレイマネージャ LightDM をインストールします。
Greeter も一緒にインストールする必要があるようですね。
# pacman -S lightdm lightdm-gtk-greeter
ちゃんとインストールできたか、一応確認しておきましょう。
# ls -1 /usr/share/xgreeters/
で、インストールした Greeter に変更するため、設定ファイルを編集します。
# vim /etc/lightdm/lightdm.conf
~
[Seat:*]
#greeter-session=example-gtk-gnome #書き換え前
↓
greeter-session=lightdm-gtk-greeter #書き換え後
systemctl を使って LightDM デーモンを有効にします。
# systemctl enable lightdm.service
ディスプレイサーバー
Xorg は X window system のリファレンス実装。
ざっくり言うと GUI 環境のベースになるプログラムです。
# pacman -S xorg-server xorg-apps
実機にインストールする場合には、先にビデオドライバーのインストールが必要ですが、今回はスキップします。
コマンドを実行すると Enter a selection (default=all) と聞かれます。
基本的には全部必要なので、そのままエンターすすめます。
デスクトップ環境
いよいよ大詰め。
デスクトップ環境をインストールします。
好きなのを選びましょう。
今回は Xfce を選びました。
Xfce は最強だよねー。
Xfce デスクトップに最低限必要なパッケージをインストールします。
# pacman -S xfce4 xfce4-goodies
これも基本的に全部必要なので、デフォルトですすめていきます。
インストールが終わったら再起動して動作確認してみましょう。
Enlightenment もいいよね。
# pacman -S enlightenment terminology
日本語化
日本語化するためには、日本語フォントとロケール、インプットメソッドを設定する必要があります。
フォント
色々なフォントのインストールをしたいところですが、まずは最低限 IPA フォントをインストールしておきます。
$ sudo pacman -S otf-ipafont
個人的には Noto フォントのほうが好きです。
$ sudo pacman -S noto-fonts-cjk
ロケール
ロケールに対応しているプログラムやライブラリに使われ、テキストのレンダリングや日時と日付、正しい地域の通貨の表示などの決まり事が設定されます。
$ sudo vim /etc/locale.gen
「en_US.UTF-8 UTF-8」をコメントアウトして「ja_JP.UTF-8 UTF-8」だけ残します。
編集が終わったらファイルを保存して、ロケールを生成します。
$ sudo locale-gen
今設定されているロケールと環境設定を確認しておきましょう。
$ locale
現時点ではまだ「en_US.UTF-8」のままですね。
なので、システム全体のロケールを設定しましょう。
$ sudo vim /etc/locale.conf
「LANG=en_US.UTF-8」を「LANG=ja_JP.UTF-8」に書き換えます。
書き換えたら、設定を反映させます。
$ sudo localectl set-locale LANG=ja_JP.UTF-8
インプットメソッド
日本語入力のためのインプットメソッドをインストールしましょう。
今回は日本語入力に fcitx-mozc を使います。
$ sudo pacman -S fcitx-im fcitx-mozc fcitx-configtool
パッケージのインストールが終わったら、ホームディレクトリに「.pam_environment」ファイルを作成します。
~/.pam_environment
GTK_IM_MODULE DEFAULT=fcitx
QT_IM_MODULE DEFAULT=fcitx
XMODIFIERS DEFAULT=@im=fcitx
コマンドだけで操作する場合は、
$ sudo echo -e GTK_IM_MODULE DEFAULT=fcitx\\nQT_IM_MODULE DEFAULT=fcitx\\nXMODIFIERS DEFAULT=@im=fcitx >> /home/(ユーザー名)/.pam_environment
ここまで終わったら再起動して、動作確認してみましょう。
動作確認
無事に日本語表示されるようになりました。
んで、日本語入力してみる前に fcitx の設定を変更しておきましょう。
US キーボードを削除するだけで良さげです。
まとめ。
ということで、今回は Arch Linux のインストールから日本語化までやってみました。
脱初心者を目指す方には、ちょっぴり参考になったかもしれません。
最低限の機能だけしかない状態ですが、自力でここまでくるとチョット感慨深いです。
これで、ここからまたイロイロなことに挑戦できる環境が整いました。
Linux に興味を持って、これからステップアップなどを考えている方は、
この動画を参考に、是非チャレンジしてみてはいかがでしょうか?