TOUGH BOOK CF-18 に繋いだUSBハードディスクにGentoo Linuxをインストールする。
ども、BobbyQuineです。今回はGentoo Linux。こいつを超強い(物理)なPC、TOUGH BOOK CF-18にインストールしてみました。ただし、仮に自分のパソコンでGentoo Linuxを使いたい、使ってみたいという方が訪れたのであれば悪いことは言いません、今すぐにGentoo公式インストールハンドブックに行ってください。僕のことですからどこかしら抜けている可能性もありますし、時代による移り変わりもあります。公式ハンドブックを見るに当たって、僕が今回インストールした時点では一部ページが日本語に翻訳されていない箇所があります。英語が不得意な方はgoogle翻訳さんにまるごとページを翻訳してもらったほうがぶっちゃけ楽です。
とりあえず今回も。やるなら自己責任でお願いします。
インストールディスクの作成
インストールするに当たって、まず母艦はPanasonic CF-S9 + Arch Linuxでやっていきます。
まずはここ↓↓からディスクイメージをダウンロード。今回、僕はX86のminimalCDでやっていく。
https://www.gentoo.org/downloads/
で、ダウンロードが終わったら適当なDVDrwを入れて
$ growisofs -dvd-compat -Z /dev/sr0=install-x86-minimal-20180221T214502Z.iso
まぁこの辺のツールの使い方はググってください。あとファイルの整合性調べておきたい人なんかは公式ページを確認のこと。
Live USBを作る場合
USBにLivediscイメージを焼き込む場合は
# sudo fdisk -l
で書き込み先のデバイスを確認。今回は/dev/sdb
# sudo dd if=imagename.iso of=/dev/sdb
LiveDiscの起動
今度はTOUGH BOOKにUSBDVDドライブ繋いでそいつにLiveDVDいれてBoot。このとき、ブート優先順位についてDVDを最優先にしておく。
起動途中にkeyboardの選択があるのでjp106である22番を入力してEnter。なお、こいつはしばらくほっとくとusキーボードのまま起動してコマンド待機するようになる。キーボード選択を逃してしまった方は慌てずに
# loadkeys jp106
でロードできる。で、毎度おなじみpingコマンドでネットに繋がっているか確認しておこう。なお、今回は有線でやっている。
パーティション分け
今回はこの前ジャンクを買ったときについてきた240GBHDDにインストールしていく。
boot、root、homeの3つのパーティションを作る。また、スワップ領域は作らない。
そしてGPTで作る。
# parted /dev/sda
(parted) mklabel msdos
(parted) mkpart primary ext4 2MiB 512MiB
(parted) mkpart primary ext4 512MiB 50GiB
(parted) mkpart primary ext4 50GiB 100%
このとき最初の2MB位を開けておく。
で、その後作ったすべてのパーティションをext4でフォーマットする。
# mkfs.ext4 /dev/sda1
# mkfs.ext4 /dev/sda2
# mkfs.ext4 /dev/sda3
まぁ察されるとは思いますが、1が/boot、2が/、3が/home。
マウント
注意すべきなのはここでマウントポイントがArchのときと違い/mnt/gentooであること。
# mount /dev/sda2 /mnt/gentoo
時刻の確認&設定
公式ページの時刻関係を斜め読みした感じだとちゃんとあってないとうまく行かないことあるよ的なこと書いてあった気がしたので
時刻確認
# date
時刻設定
# date MMDDhhmmYYYY
なおこのとき自分の住んでいる国での時間ではなく、世界標準時かなんかで設定する(UTC).
stageballのダウンロードとインストール(展開)
ルートディレクトリ下にあるディレクトリ&ファイル郡を入れる作業。まず、ダウンロード元は公式には色々とミラーだとかなんだとか書いてあったのですが先程のISOをダウンロードしたページにstageball3のダウンロードボタンがあったのでそのリンクURLを用いた。なお、コレはある程度の期間で更新されるので自分でリンクされているファイルは確認してください。
# cd /mnt/gentoo
# wget http://distfiles.gentoo.org/releases/x86/autobuilds/20180221T214502Z/stage3-i686-20180221T214502Z.tar.xz
# tar xpf stage3-i686-20180221T214502Z.tar.xz
コンパイルオプション
そもそもGentooLinuxはすべてのソフトウェアについて、ソースをダウンロードしてきてローカルでコンパイルすることでそのハード及び環境に最適化するようにというコンセプトがある。そのコンパイル時にどのような操作をさせるかを記述しておくのが/etc/portage/make.confである。
# nano -w /mnt/gentoo/etc/portage/make.conf
MAKEOPTS="-j2"
CXXFLAGS="${CFLAGS}"
を追加した。これらはそれぞれ並列させる数、C++の最適化フラグ。詳しくはハンドブック見てください。
ミラーリストの追加
portageでソースコードをDLするときのサーバーを物理的に近いやつにしといた方が早いので設定しとく。
# mirrorselect -i -o >> /mnt/gentoo/etc/portage/make.conf
# mkdir --parents /mnt/gentoo/etc/portage/repos.conf
# cp /mnt/gentoo/usr/share/portage/config/repos.conf /mnt/gentoo/etc/portagerepos.conf/gentoo.conf
DNS情報のコピー
# cp --dereference /etc/resolv.conf /mnt/gentoo/etc/
# mount --types proc /proc /mnt/gentoo/proc
# mount --rbind /sys /mnt/gentoo/sys
# mount --make-rslave /mnt/gentoo/sys
# mount --rbind /dev /mnt/gentoo/dev
# mount --make-rslave /mnt/gentoo/dev
# chroot /mnt/gentoo /bin/bash
# source /etc/profile
# export PS1="(chroot) $PS1"
/boot、/homeのマウント
ここでこれらをマウントしておく。
# mount /dev/sda1 /boot
# mount /dev/sda3 /home
このとき、chrootしたことを忘れないように。
Webからのebuildスナップショットのインストール
# emerge-webrsync
# emerge --sync
プロファイルの選択
# elselect profile list
で選択可能なリスト表示。" * " マークがついてるのが現在の。
# eselect profile set [番号]
で選択。今回僕はx86/17.0/desktopを選択。
@worldセットの更新
プロファイルについて新しいものを選択したので更新しとく(任意)。なお、initシステムにsystemdを導入しようと考えている方はこれ必須。なお、今回僕はinitシステムにOpen-RCを使う。
# emerge --ask --update --deep --newuse @world
これは選択したプロファイル及び環境によってまちまちだがdesktopなんかを選択してると半日近くかかった。
USE変数の設定
ソースコンパイル時のこの昨日を使用する/使用しないということを設定する。コレによりそのソフトウェアにおいて必要のない機能を削ることができる。
# less /usr/portage/profiles/use.dosc
で使えるUSEフラグの確認。
# nano -w /etc/portage/make.conf
USE="なんちゃら かんちゃら ・・・"
って感じ。僕は
USE="X aac flac mp3 x264 mp4 dvd cdr alsa cxx ffmpeg gtk wifi cjk"
としといた。
タイムゾーンの設定
# echo "Asia/Tokyo" > /etc/timezone
# emerge --config sys-libs/timezone-data
ロケールの設定
コメントアウトを外す。ロシア語は項目になかったので追加した。
# nano -w /etc/locale.gen
# locale-gen
# eselect locale list
# eselect locale set [番号]
このときja_JP.utf8にしちゃったら案の定エラー文とかが" ■ "になってしまったのでen_US.utf8で。あとは環境リロード。
# env-update && source /etc/profile && export PS1="(chroot) $PS1"
カーネル及びその周辺の設定
マニュアル設定でやっていきます。詳しくはGentoo公式ハンドブックを見てください。特に必須項目等もありますので。
https://wiki.gentoo.org/wiki/Handbook:X86/Installation/Kernel
# emerge --ask sys-kernel/gentoo-sources
# ls -l /usr/src/linux
# cd /usr/src/linux
# make menuconfig
セッティングがおわったら
# make && make modules_install
# make install
# emerge --ask sys-kernel/genkernel
# genkernel --lvm --mdadm --install initramfs
# emerge --ask sys-kernel/linux-firmware
vimのインストール
使い慣れないnanoはめんどくなったのでここでvimを入れとく。
# emerge --ask --verbose vim
fstabの作成
fstabは起動時にデバイスをどのようにマウントしていくかみたいなことが書いてある。
UUIDの確認をする。
# blkid
このときの出力結果を使う。こいつが長いのでいっそ
# blkid >> /etc/fstab
とでもしてあとからいらない部分消して使う感じで良いと思う。とりあえず今回は例として下のようなUUIDであったとする。
/dev/sda1 UUID=aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa
/dev/sda2 UUID=bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb
/dev/sda3 UUID=cccccccc-cccc-cccc-cccc-cccccccccccc
長いのでここより先それぞれaaaa、bbbb、ccccと略すことにする。
# vim /etc/fstab
UUID=aaaa /boot ext4 noauto,noatime 0 2
UUID=bbbb / ext4 noatime 0 1
UUID=cccc /home ext4 noatime 0 2
ホストネームの設定
# vim /etc/conf.d/hostname
hostname="yourHostname"
# vim /etc/hosts
127.0.0.1 localhost.localdomain localhost
::1 localhost.localdomain localhost
127.0.1.1 yourHostname.localdomain yourHostname
# emerge --ask --noreplace net-misc/netifrc
# ip link
で有線で使われている名前(ここではeth0としておく)を調べる。
# vim /etc/conf.d/net
config_eth0 = "dhcp"
起動時に自動的にネットワークに繋がるようにする
# cd /etc/init.d
# ln -s net.lo net.eth0
# rc-update add net.eth0 default
PCMCIA
TOUGH BOOK にはPCカードスロットがついているので
# emerge --ask sys-apps/pcmciautils
ルートパスワード
# passwd
キーボード設定
# vim /etc/conf.d/keymaps
keymap="us"となっているところをjp106に変える。
システムロガー
# emerge --ask app-admin/sysklogd
# rc-update add sysklogd default
ファイルのインデックス
# emerge --ask sys-apps/mlocate
ファイルシステムツール
ext2,3,4
# emerge --ask --verbose sys-fs/e2fsprogs
vfat(fat32とか)
# emerge --ask --verbose sys-fs/dosfstools
dhcpクライアント
# emerge --ask net-misc/dhcpcd
ワイヤレス関係はまたそのうち。とりあえずは有線で運用するので。
ブートローダー(GRUB2)のインストール
ブートローダーも色々と選択できるが今回はとりあえずデフォルトのGRUB2で。
また、今回はBIOSでありUEFIではない。パーティションにはGPTを使っているがそもそもCF-18にはUEFIはない。
# emerge --ask --verbose sys-boot/grub:2
# grub-install /dev/sda
# grub-mkconfig -o /boot/grub/grub.cfg
システムのリブート
とりあえずchrootから出る。
# exit
# umount -l /mnt/gentoo/dev{/shm,/pts,}
# umount -R /mnt/gentoo
# reboot
リブート時、起動優先順位を変えるかディスクを取り除くかして起動。無事起動したら成功。あとはstage~.tar.xzを削除したり一般ユーザー作成したりして終わり。
ここまで読んでくださった方、ありがとうございます。ぶっちゃけこの記事はなんとなくインストール手順の雰囲気をつかむためには役にたつかもしれませんが実際には個人的な単なる備忘録です。公式ハンドブックとgoogle翻訳を用いてインストールすることを強く推奨します。