Category: Gentoo Posted: 2024-03-07
| Categories:
Gentoo
| Tags:
Gentoo ,
RaspberryPI
Gentooで使いたい。GenPi64のプロジェクトだと2024/03だと対応はまだの模様 2023/12 あたりに作成したGenPi64プロジェクトのイメージだとRaspberryPI5では起動しなかった。
この辺の機種ごとの際はラズベリーパイではよくあることではある。
ありがたいことに先人がおり起動したので、私が追加で設定したメモを残す。
手順はext4で起動するようになっている。
私が手順を一通り見て「既存のディスクイメージをベースにカーネルと必要なファイルを更新したら起動するのでは?」と思い試してみた。
が、カーネルが認識するファイルシステムがext4だった(カーネル再構築でbtrfsを認識させればよいような気もする)
私がGenPi64で作成したイメージはルートファイルシステムをbtrfsで構成したため起動しなかった。
素直にext4でルートファイルシステムを構成する。
基本的にこの手順で動作する How to install Gentoo on Raspberry Pi 5 - Gentoo Wiki
私は作業用ディレクトリとして下記にした
WORK=/mnt/gentoo_work
DISK=/dev/sdc
DEST=/mnt/gentoo
mount ${DISK}3 $DEST && mount ${DISK}1 ${DEST}/boot
Gentooオフィシャルの説明 私が追加、変更して作業したこと /lib/modules の git clone は時間がかかる 先にgitをインストールして/lib/modules用のレポジトリをダウンロードしておいた方が良い
–depth=1 で履歴を取らないようにしておくと早い
cd ${WORK}
git clone --depth=1 https://github.com/raspberrypi/firmware.git
openrcではなくsystemdを使いたかった stage3のファイルをopenrcではなくsystgemdを利用した。
ダウンロードは下記のarm64の「systemd」を使った。
Downloads – Gentoo Linux
cd ${WORK}
tar xpf /mnt/gentoo_work/stage3-arm64-systemd-20250824T234925Z.tar.xz --xattrs-include='*.*' --numeric-owner -C ${DEST}/
portage snapshot は jaistからダウンロードした
http://ftp.jaist.ac.jp/pub/Linux/Gentoo/snapshots/
昔からありがとう… 北陸先端科学技術大学院大学さん
Read more... Posted: 2021-10-13
| Categories:
Gentoo
| Tags:
k3s
事前準備 固定 IP 化 swap を無効化 docker のインストールと自動起動 cgroup で CPU とメモリーが有効になっている必要がある Gentoo で OpenRC だと /etc/rc.conf で設定する。
Gentoo側は Cgroup v1 と v2 の設定が選べる(hybrit になるようだ)。 Kubernetes での Cgroup v2 サポートは Docker で Docker Engine 20.10 から実装された模様
2021/10/10 時点の 私の Gentoo の Docker のバージョンを確認した所、20.10.7 だった。
kubernetes は 1.22 から Cgroup v2 をサポートした模様 参考 Kubernetes 1.22 における新機能は?
ただ私がKubernetesをインストールする際に使った k3s.io のバージョンを確認した所、2021/10/24時点で v1.21.5+k3s2 だった。
ので v1 をサポートする設定のままにする。
結局、これが一番はやい。
※ この前に既に Gentoo のパッケージで kubectl をインストールしている場合は削除すること
k3s.io はコマンドがインストールしてあると、そちらを使うように kubectl をインストールしない。
k3s.io 由来の kubectl だと設定なしですぐ kuernetes の api につながるようになっている。
Read more... Posted: 2021-10-13
| Categories:
Gentoo
| Tags:
Gentoo ,
k8n
事前準備 固定 IP 化 swap を無効化 docker のインストールと自動起動 cgroup で CPU とメモリーが有効になっている必要がある Gentoo で OpenRC だと /etc/rc.conf で設定する。
Gentoo側は Cgroup v1 と v2 の設定が選べる(hybrit になるようだ)。 Kubernetes での Cgroup v2 サポートは Docker で Docker Engine 20.10 から実装された模様
2021/10/10 時点の 私の Gentoo の Docker のバージョンを確認した所、20.10.7 だった。
kubernetes は 1.22 から Cgroup v2 をサポートした模様 参考 Kubernetes 1.22 における新機能は?
なぜ失敗しているのか? kubeletやkubeadmのコンパイルは上手くいく。そういう観点でパッケージメンテナの作業は成功している。
kubeletも起動している。kubeadm –dry-runも正常に終了する。が実際にkubeadmで構築する段階で失敗している。
ここまま検証するより、一度、正常に動作しているkubenetesと比較した方が検証が進みやすそうだったので、構築できたk3s.io を用いて検証を続けている。
kubernetes をインストールする gentoo は標準でパッケージが用意されていたので、それでどこまで行けるか確認してみる。
パッケージインストール app-admin/helm がマスクされていたのでマスクを外す。
cat << EOF | sudo tee -a /etc/portage/package.accept_keywords
app-admin/helm **
EOF
cat /etc/portage/package.accept_keywords
sudo emerge --ask --quiet --verbose --verbose-conflicts app-admin/helm sys-cluster/kubeadm sys-cluster/kubectl sys-cluster/kubelet \
app-emulation/flannel net-firewall/conntrack-tools sys-apps/ethtool net-firewall/ebtables net-misc/socat
kubeadm init を –dry-run で実行、エラーが起きない事を確認する sudo kubeadm init --dry-run --pod-network-cidr=10.244.0.0/16
cgroup でエラーが起きた CGROUPS_MEMORY: missing
memory と /proc/cgroup を確認すると memory の enabled を見ると 0 、off になっているようだ。
memory を有効にすることを考える。
Read more... Posted: 2021-10-13
| Categories:
Gentoo
| Tags:
k3s
トラブルシューティングのログ
machine-idがないエラーが出る $ sudo journalctl -r --since today | less
8月 02 00:48:56 k3s-prd-agent-g k3s[364]: W0802 00:48:56.104196 364 info.go:53] Couldn't collect info from any of the files in "/etc/machine-id,/var/lib/dbus/machine-id"
8月 02 00:48:56 k3s-prd-agent-g k3s[364]: E0802 00:48:56.103437 364 info.go:119] Failed to get system UUID: open /etc/machine-id: no such file or directory
machine-idのファイルが存在するか確認する。
sudo ls -l /etc/machine-id /var/lib/dbus/machine-id
ls: '/etc/machine-id' にアクセスできません: そのようなファイルやディレクトリはありません
lrwxrwxrwx 1 root root 15 3月 18 21:43 /var/lib/dbus/machine-id -> /etc/machine-id
ファイルが無かったので作成する。
Read more... Posted: 2021-08-18
| Categories:
Gentoo
| Tags:
Gentoo ,
lsblk ,
parted
partedを起動
GenPi64 /home/demouser $ sudo parted
GNU Parted 3.6
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
セクタ単位に表示を切り替え
空きスペース確認
(parted) print free
Model: SATA SSD (scsi)
Disk /dev/sda: 468862128s
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
63s 2047s 1985s Free Space
1 2048s 524287s 522240s primary fat16 boot, lba
2 524288s 9682946s 9158659s primary btrfs
9682947s 468862127s 459179181s Free Space
resizeは使えない
Read more... Posted: 2021-08-17
| Categories:
Gentoo
| Tags:
distcc ,
docker ,
Gentoo
背景 Gentoo の Docker イメージが作りたい。が、
オフィシャルの gentoo/stage3-amd64 の更新頻度が低い( 2021/08/08 時点で以前のアップデートが 1 年前だった ) portage 用のイメージ gentoo/portage があり、こちらは毎日更新されている。 コマンドや glibc などが置かれているビルド済みの領域は gentoo/stage3-amd64 に置かれているため、実際に使うときには emerge –update –deep –newuse @world とリビルドが必要 リビルドするとイメージのサイズがかなり増える が、できればコンパクトなイメージにしたい。
結論(2021/08/17 時点) docker-slim を使ってイメージをコンパクトにする方法が一番コンパクトになった。
手法 サイズ 備考 ダウンサイジング前 3.04GB 不要なディレクトリの削除 1.8GB emerge が一時的に使うファイル郡 (上記ディレクトリ削除に加えて)不要なパッケージの削除 983MB パッケージ一覧を見ながら不要そうなパッケージを削除 docker-slim 39MB
Dockerfile サンプル ここに公開した
手法の比較 不要なディレクトリ削除は emerge が一時的に使うファイル郡を削除するだけなので安全に使える。
不要なパッケージの削除だが、これはパッケージ名の変更やパッケージ同士の依存関係の変更があると
必須ではないが、都度 Dockerfile の修正が必要になり長期間の運用を考えると、運用コストが上がる。
docker-slim を使った方法が一番コンパクトになった。ただ docker-slim は必要なファイルを動的に解析して必要なファイルのみを残すので、解析できるように準備する必要がある。
RUN emerge –sync でも同様な事はできるので… と思ったが、毎回 emerge –sync に時間が取られるのは無駄。
もし「Docker のキャッシュで古い状態でビルドされるのが嫌だ」という場合でも、キャッシュを使わないオプションで docker build すれば最新の状態でビルドできる。
Read more... Posted: 2021-08-08
| Categories:
gentoo
| Tags:
emerge ,
gentoo
make.confの FEATURES のメモ 私が良く使う、あるいは検討したもの。man make.conf でも確認できる。
Posted: 2021-08-08
| Categories:
Gentoo
| Tags:
distcc ,
Gentoo
distcc サーバーを建てる 概要 ラズパイ Gentoo GenPi64 でのコンパイルに時間がかかるので、
amd64 のマシンの docker 上にクロスコンパイル環境を構築、
distcc デーモンを立てて、ラズパイがクライアント、amd64 が distcc サーバの構成でコンパイルを早くした。
手順 distcc が起動する docker コンテナを作る
distcc への接続確認 telnet コマンドでポート 3632 に接続。
切断は Ctrl + ] を押してから Ctrl + d
$ telnet localhost 3632
Trying ::1...
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
^]
telnet> Connection closed.
GenPi64 distcc クライアント側の設定 GenPi64 は distcc はインストール済みなので emerge は不要。ただし
gcc のプロファイルを揃える distcc サーバーの IP アドレスの追加
は必要。 gcc のプロファイルを確認
Read more... Posted: 2021-08-08
| Categories:
Gentoo
| Tags:
Gentoo ,
依存関係
依存関係のエラーをまとめる 私の短い経験と調査で得られたものを追加していく…
@world の指定は大きすぎる場合がある。 @system で試すと必要なパッケージのアップデートはできるかもしれない。 個別のパッケージでアップデートを試みてみる。 @preserved-rebuild と出たら emerge -1 @preserved-rebuild を行う dispatch-conf を行う マスクされている場合 、マスクされたパッケージをインストールする方法 USE フラグの変更が必要 2021/08/09 perl の gettext が必要との事
checking whether x86_64-pc-linux-gnu-gcc accepts -g... yes
checking for x86_64-pc-linux-gnu-gcc option to accept ISO C89... none needed
checking for library containing dlsym... -ldl
checking for library containing bindtextdomain... none required
configure: error: perl module Locale::gettext required
eix gettext で検索して必要そうなパッケージを追加した
RUN emerge sys-devel/gettext dev-perl/Locale-gettext
2023/06 ToDo 一旦、下記のmaskで自宅のラズパイ全部を最新にする
Read more... Posted: 2021-08-07
| Categories:
Gentoo
| Tags:
Gentoo ,
USEフラグ
/etc/portage/gnupg が無い、というエラーが出る gpg: keyblock リソース'/etc/portage/
gnupg/pubring.kbx': そのようなファイルやディレクトリはありません\n
[GNUPG:] ERROR add_keyblock_resource 33587281\n
[GNUPG:] PLAINTEXT 740 \n
[GNUPG:] NEWSIG\ngpg: 2023年09月03日 07時32分03秒 JSTに施された署名\n
gpg: RSA鍵534E4209AB49EEE1C19D96162C44695DB9F6043Dを使用\n
[GNUPG:] ERROR keydb_search 33554445\n
[GNUPG:] ERROR keydb_search 33554445\n
[GNUPG:] ERRSIG 2C44695DB9F6043D 1 10 01 1693693923 9 534E4209AB49EEE1C19D96162C44695DB9F6043D\n
[GNUPG:] NO_PUBKEY 2C44695DB9F6043D\ngpg: 署名を検査できません: 公開鍵がありません\n
私の場合は /etc/portage/make.conf に –getbinpkg を追加したからだった。
バイナリパッケージの OpenPGP 署名を検証する
Portage は可能であればいつでもバイナリパッケージの署名の検証を試みますが、
そのためにはまず、信頼されたローカル鍵を構成する必要があります。
app-portage/getuto は、ローカルのトラストアンカーをセットアップし、
/etc/portage/gnupg 内の鍵を更新するために使用することができます。
--getbinpkg または --getbinpkgonly を使用すると、Portage は自動的に getuto を呼び出します。
対応方法としては
getutoコマンドをインストール getutoを実行1度実行すると /etc/portage/gnupg ディレクトリが作成され初期化される この初期化が完了すればemergeも正常に進行する パッケージの USE フラグ /etc/portage/package.use/ 配下に置くようにした。
Read more...