Gentoo ラズパイ関連

August 24, 2021

gentoo-on-rpi-64bit 初期セットアップ

ココに書いてあるものをなぞった このページにラズパイで Gentoo を便利に稼働させる細かいノウハウがあるので一読した方が良い。これを作った sakaki- 氏すごい。 Gentoo 一般についてはGentoo Linux amd64 ハンドブック:Gentoo での作業にまとまっている。

条件

  • Linux マシン( Ubuntu 21.04 ) で行った。
  • 解凍に zstd が必要
  • Xfce, LibreOffice, VLC, Kodi, GIMP などを含むデスクトップ環境を選択した(ライトイメージもある)
  • ライトイメージの場合、解凍されたファイル名も異なるので読み替えが必要

手順

SD カードが刺さっているパスを確認する

SD カードを Linux マシンに刺した上で /var/log/syslog を確認するか lsblk で確認する。

$ sudo lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0 223.6G  0 disk
├─sda1   8:1    0   300M  0 part /boot/efi
└─sda2   8:2    0 223.3G  0 part /
sdb      8:16   1  28.9G  0 disk
├─sdb1   8:17   1   255M  0 part
└─sdb2   8:18   1  28.6G  0 part

私の場合は /dev/sdb で認識されていた。

イメージのダウンロード、解凍、書き込み

※ SD カードが認識されているパスによってコマンドが変わるので注意 私は /dev/sdb だった。

作業用ディレクトリ作成

tmpdir=$(date +%Y%m%d%H%M) && mkdir $tmpdir && cd $tmpdir

デスクトップ版をダウンロードと展開

wget -c https://packages.genpi64.com/genpi-aarch64-desktop-latest.img.zst
zstd -d genpi-aarch64-desktop-latest.img.zst -o genpi-aarch64-desktop-latest.img
sudo dd if=genpi-aarch64-desktop-latest.img of=/dev/sdb bs=1M status=progress; sudo sync

ライト版をダウンロードと展開

wget -c https://packages.genpi64.com/genpi-aarch64-lite-latest.img.zst
zstd -d genpi-aarch64-lite-latest.img.zst -o genpi-aarch64-lite-latest.img
sudo dd if=genpi-aarch64-lite-latest.img of=/dev/sdb bs=1M status=progress; sudo sync
ラズパイに SD カードと LAN ケーブル、電源とディスプレイ、キーボードを接続して起動、ログイン

ssh demouser@IP アドレス でログインできる。

id: demouser pass: raspberrypi64 でログインできる。

  • ssh で外部から作業した方が捗るので IP アドレスを確認する。
  • デフォルトで sshd が起動しているので IP アドレスが分かっているならいきなり ssh ログインで良い。
  • 外部から ssh demouser@IP アドレス でログインできることを確認する
アカウント追加

Gentoo を使い始める

初回起動時にキーボードや wifi 設定を変えられるアプリが起動しているので必要に応じて変更 ( Application => Setting => RPi Config Tool からでも開ける )

ユーザーの追加と削除( オプション )

ユーザー名は適宜変更

sudo useradd --create-home --groups "adm,disk,lp,wheel,audio,video,cdrom,usb,users,plugdev,portage,cron,gpio,i2c,spi" --shell /bin/bash --comment "tin-machine" tin-machine
sudo passwd tin-machine

ssh 鍵のコピーを ssh クライアントから行う

ssh-copy-id tin-machine@10.10.254.21

新しく作ったユーザーでログインし sudo できることを確認、 元あった demouser の削除

sudo userdel --remove demouser
ロケール設定

下記は sudo -s で root になってから行う。

echo 'ja_JP.UTF-8 UTF-8' >> /etc/locale.gen
locale-gen
locale_num=$(eselect locale list | grep ja_JP.utf8 | awk '{print $1}' | sed -e 's/\[//' -e 's/\]//')
eselect locale set $locale_num && . /etc/profile
echo -e 'LINGUAS="ja"\nL10N="ja"' >> /etc/portage/make.conf

参考 LINGUAS

タイムゾーン設定
cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
echo "Asia/Tokyo" > /etc/timezone
swap 追加

1GB の swap 領域を作成する例。

mkdir /var/cache/swap/
cd /var/cache/swap/
truncate -s 0 ./swapfile
chattr +C ./swapfile
btrfs property set ./swapfile compression none
dd if=/dev/zero of=swapfile bs=128M count=8
mkswap ./swapfile
chmod 0600 ./swapfile
swapon ./swapfile
echo '/var/cache/swap/swapfile swap swap defaults 0 0' >> /etc/fstab

参考 Btrfs 特有の問題がある Btrfs だと copy-on-write や圧縮機能をオフにしないと swap ファイルが作れない。 なるほど。逆に失敗してくれるのはよく出来てる。

最新にアプデ

/etc/portage/make.conf で使用する CPU 数を減らす

MAKEOPTS="-j16 -l16"

16 コア利用する、となっているが gcc のコンパイルに失敗するので 5 プロセス程度に留める ↓ 2021/07/18 に Github の問題提起されているされているので、将来的に値が変わるかも

MAKEOPTS="-j5 -l5"

アップデート ここを参考にした

sudo emerge --sync
sudo dispatch-conf     # portageが書き換える設定を確認して反映
sudo emerge --ask --update --deep --newuse --with-bdeps=y @world

portage のレポジトリの状況によっては @world でのアップデートに失敗する事もある。 その場合はアップデートする範囲を狭くする意図で @system で行ってみると上手くいく場合がある。

sudo emerge --ask --update --deep @system
NTP 設定

オフィシャル

sudo emerge net-misc/ntp
rc-update add ntpd default
rc-service ntpd status
ホスト名

sudo vi /etc/conf.d/hostname

オプショナルな設定

NFS用
sudo emerge net-fs/nfs-utils
ブラウザ
emerge @preserved-rebuild
sudo emerge www-client/firefox
その他
sudo emerge net-misc/youtube-dl

Profile picture

Written by tin-machine 技術関連のメモ Twitter