初心者がArchLinux環境構築の内容を噛み砕いて説明してみる
前置き
ArchLinuxに手を出した理由
- 環境設定の苦手意識から逃れたい!
- とにかくOSいじりに慣れたい!
- 色々自分で設定しないといけないArch Linuxなら強制的にOSいじりに慣れるだろう!
浅はかですねぇ。。
必要な前提知識多すぎない!?
- 何言ってるかわからない。
- 前提知識が多すぎて全然追いつかない。
- 調べてもキリがない。
- 結局何も進まない。
こんなふうに私同様、向上心はあるけど心折られた人たちの力になれれば幸いです。
※ 私はArch信者のサポーターがいたからどうにかなっただけです。一人じゃ無理でした。
環境構築の偉大なる参考資料
https://qiita.com/TsutomuNakamura/items/b60518f8788e5e998744
この記事に沿って設定すれば概ね環境構築はできます。
私の記事では、その中からそもそも何してるの?の解説を入れていきます。
設定中に躓いたポイント集
まず何をやるかわからない、流れを掴めない
ざっくりした流れは以下の通り
- パーティショニングから行う(メモリの使用領域を設定する)。既に存在する場合は削除してから実施する。
- パーティションしたものをフォーマットする。
- 作ったパーティションに対して、インストールするためのデバイスからアクセスできるよう認識させる(マウント)。
- インストールするときの言語を設定(mirrorの選択)。
- OSの起動を制御をするファイル設定する(boot Loaderの設定)。
- マウントを切って、再起動をする。
インストール画面に遷移できない(UEFI(BIOS)画面が出せない)
- インストールのデータがあるデバイス(USBやCD-ROM)の差した後、設定画面にいくにはハードの起動画面中にF2ボタンを押下する(タイミングがシビア)。
- なお、ハードのメーカーによってBIOS画面に遷移できるボタンは違うらしい(大体がF2ボタンらしいが、調べる必要はある)。
- UEFI(BIOS)画面が表示された後、システムの起動順序を変更する。変更前は現在入っているOSが1位となっているはずなので、インストールのデータがあるデバイスを1位にする。
- 保存して起動することで、ようやくインストール画面に遷移される。
パーティションがうまく設定されない
# sgdisk -Z /dev/sda
- ちなみに設定するコマンドは以下の通り(あくまで一例)。
# sgdisk -n 1:0:512M -t 1:ef00 -c 1:"EFI System" /dev/sda # sgdisk -n 2:0: -t 2:8300 -c 2:"Linux filesystem" /dev/sda
パーティションのフォーマットがうまくいかない
フォーマットを削除したとはいえ、区画を削除しただけなので、前のマウントの設定が残っているときがある。
マウントの設定をなかったことにする。
# umount /dev/sda2
- その後の設定内容が以下の通り(念の為)。
# mount /dev/sda2 /mnt # mkdir /mnt/boot # mount /dev/sda1 /mnt/boot
Linux filesystemに使うパーティションのフォーマットって結局何がいいの?
- ex4はよく使われているが、処理が早いのでPCのスペックに余裕があるのであればxfsのほうがいい。それを踏まえた一例は下記の通り。
# mkfs.vfat -F32 /dev/sda1 # mkfs.xfs /dev/sda2
mirrorの設定ってどうするの
- インストーラにvimが標準設定されているため、vimを使って編集する。
- Japanの設定内容(3つ存在)を検索して、mirrorlistのファイル先頭に配置する。
- vim勉強中なので全てコマンドを記載。
# vim /etc/pacman.d/mirrorlist // viの検索コマンドは/なので、Japan検索は以下の通り /Japan // 文頭にカーソルを合わせてから範囲選択モード v // 文末まで移行 $ // 行頭(行の文頭)まで移行 0(^) // 戻る u // 範囲選択をしてから行切り取り d // 貼り付け p // ファイルの頭に行く gg // 保存して閉じる :wq
boot loader っていくつかあるの?そのときのboot loaderの設定はどうするの?
- boot loaderとして様々あるが、今回はシンプルかつ壊れにくいsystemd-bootを使用する。
- 以下に一連のコマンドを記載する。
// インストール(※ systemd-bootは(Linuxを動かす基本的なプログラムがあるbaseかbase-develに入っている)systemdパッケージの一部なので、明示してインストールする必要はない。vimは使い勝手がいいので入れる) # pacstrap /mnt base base-devel vim // インストールデータがあるデバイスから、OSを入れる先のデバイスに移動。rootディレクトリを/mntに変更 # arch-chroot /mnt // タイムゾーンの設定の読む先を指定 # ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime // ハードウェアクロックの設定 # hwclock --systohc --utc // ロケールの設定 # vim /etc/locale.gen // コマンドモードで、アンコメントにする。 /en_US.UTF-8 UTF-8 もしくは /ja_JP.UTF-8 UTF-8 カーソルを#にあわせてxで削除 :wqで保存 # locale-gen # echo LANG=en_US.UTF-8 > /etc/locale.conf # echo LANG=ja_JP.UTF-8 > /etc/locale.conf // 日本語キーボードの場合、下記コマンドも必要 # echo KEYMAP=jp106 > /etc/vconsole.conf // ホストネームの設定 # echo (設定するmyhostname) > /etc/hostname # vim /etc/hosts 127.0.0.1 localhost ::1 localhost 127.0.1.1 (設定したmyhostname).localdomain (設定したmyhostname) // ワイアレスの場合、ネットワーク設定も必要(コマンドは割愛) // Initramfsの設定 # mkinitcpio -p linux // intelのおまじない 詳細はマイクロコード # pacman -S intel-ucode // systemd-boot の EFI ブートマネージャのインストール(当フローで言うとsda1のパーティションがEFI Systemを指定したため) # bootctl --path=/boot install // ローダーの設定 # vim /boot/loader/loader.conf // 現存するdefaultは削除 default arch timeout 4 editor no // ローダーの追加 # vim /boot/loader/entries/arch.conf title Arch Linux linux /vmlinuz-linux initrd /intel-ucode.img initrd /initramfs-linux.img // rootディレクトリがデバイスのどこにいるのかを記述(arch.confに対してUUIDを出力) # blkid -o export /dev/sda2 | grep ^UUID >> /boot/loader/entries/arch.conf # vim /boot/loader/entries/arch.conf // 下記内容をarch.confに追記 options root=(出力されたUUID) rw // Root パスワードの設定 # passwd // user・パスワードの追加 # useradd -m (設定するusername) # passwd (設定したusername)
設定が終わったら?
- 再起動の必要がある。その前にマウントの解除を忘れないこと。
# exit // インストールのためのデバイスと、インストール先のデバイスのマウントを解除する # umount -R /mnt # reboot
よく使うコマンドまとめ
デバイスの状態を表示
結局なんなの?集
デバイスブロックとパーティションの違い
- デバイスブロックは物理的な区画であり、自分で設定可能なのはブロックサイズ(メモ書きの大きさのような物)のみ。容量を指すサイズは変更できない。当記事でいうとsda自体がデバイスブロック。
- パーティションは論理的な区画であり、自由に設定可能。当記事でいうパーティションの設定はデバイスブロックであるsdaの中のパーティション(sda1, sda2)を設定する過程がある。
EFI SystemとLinux filesystem、役割の違い
boot loaderってなに?
マウント(mount)ってなに?
小ネタ
- ダウンロード後、ArchLinuxを立ち上げsudoコマンドを実行すると、小言のようなメッセージの中にスパイダーマンの名言が混ざりこんでいる。
- 初めてのsudoコマンドでしか確認できないメッセージらしいので、見逃さないでほしい。
最後に
他にもGUI設定に苦しんだり、そもそも基本コマンドがわからず苦しんだり、カーネルぶっ壊して復旧ができなかったりと、色々ネタが尽きないので小出しにしてみます。
長々とした記事を最後まで読んでいただきありがとうございました!