Tag: Gentoo

SDカードイメージを作成するテスト

背景 新しいバージョンを試したい。 調べてみると、 Build.Dist このツールを使うと自分でSDカードのイメージを作成できるらしい。 更に設定で自分好みのイメージが作れるらしい、凄い。 下記はエラーに対する試行錯誤、そのメモです。 ネットワークのトラブル、pingで疎通ができない。名前解決はできないのだがdigだと名前解決ができる。 名前解決にdnssecを利用するようになった。 /etc/resolv.conf の内容 nameserver 127.0.0.53 options edns0 trust-ad search . edns0: EDNS(Extension mechanisms for DNS)のバージョン0を使用することを示す。 EDNSは、DNSプロトコルを拡張し、より大きなペイロード、改善されたセキュリティ(DNSSEC)、その他の機能をサポート。 trust-ad: DNSSECのAuthenticated Data(AD)フラグを信頼することを示す。 これは、DNSSECにより検証された応答を信頼し、使用することを意味。 DNSSECはサーバ側の時刻を利用する。 ラズパイを長いこと起動していなかったためか、あるいはchronyd, ntpdをインストールして設定が変わったからか、DNSSECが動作しなくなった。 ラズパイの時刻がずれていたので強制的に時刻を合わせる。 dig time.google.com で、googleのNTPサーバのIPアドレスを確認し、nptpdateで合わせる。 $ sudo systemctl stop ntpd $ sudo ntpdate 216.239.35.4 今では systemd-timesyncd, chronydで時刻合わせを設定するようなので、知識をアップデートしたい。 scripts/binfmt.sh でエラーが出る 下記の箇所でエラーが出る。 qemuが必要。 if [ "${cpu}" != "arm" ] ; then if [[ ! -e /proc/sys/fs/binfmt_misc/arm ]]; then echo ":arm:M::\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x28\x00:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xf f\xff\xff\xff\xfe\xff\xff\xff:/usr/bin/qemu-arm:F" >> /proc/sys/fs/binfmt_misc/register fi fi 下記のコマンドでqemuをインストールした。 Read more...

Build.distのメモ

概要 RasberyPi用のGentooであるGenPi64というプロジェクトがある。 ただアップされているイメージが古い、様子。 新しいGentooを試したい。 GenPi64のイメージを作製するには GenPi64/Build.Dist: Build scripts for building GenPi64 images.を使う。 仕組みは非常に合理的というか良くできている、が、うまく動かなかったので仕組みを調べている。 これはそのメモ。 手順 事前準備 必要なパッケージ追加 sudo emerge --ask dev-python/lockfile dev-python/pychroot emerge dev-python/iniparse sudo QEMU_USER_TARGETS="aarch64 arm" QEMU_SOFTMMU_TARGETS="aarch64 arm" USE="static-libs" emerge --changed-use --ask --newuse --quiet app-emulation/qemu quick start https://github.com/GenPi64/Build.Dist/ を git pull し、ディレクトリに移動 sudo -s bash export PROJECT="GenPi64Systemd" . env.sh sh build.sh 仕組み sh build.sh を行った際の進み方 [build.sh)[https://github.com/GenPi64/Build.Dist/blob/559dd933b88a79d9bd5e1efa360b45c7a42ad31d/build.sh#L1] ここから始まる。 環境変数の設定を行ったり、ターゲット(OpenRC, systemdなど)に応じてディレクトリを作製し、プロジェクトごとに用意してあるjsonから動作する。 jsonはincludeと書かれた箇所があり、その場合、該当するjsonを読み込み、対象の作業が膨らんでいく。 このincludeの仕組みは美しいと思う。 GentooであればOpenRCであれ、systemdであれ共通化できる作業はある、それらのタスクは共通化できるように作られている。 また個々のタスクが完了したかチェックする仕組みもあり、成功したタスクについては行わず続きから再開する。 build.shのこの箇所からincludejsonが始まる includejson excecute(manifest)で実行しているようだ。 この辺で環境変数を読み込んでいる ただ実際のemergeの際にはchroot環境で実行されるので環境変数は引き継ぐ意図ではない。 emerge ヒアドキュメントで都度、スクリプトを生成し、実行している Read more...

Gentooでkubernetesのセットアップに失敗した

事前準備 固定 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. Read more...

RaspberryPiでUSBブートを試みる

背景 SD カードが壊れた。最近のラズパイは HDD ブートに対応しているので HDD ブートで Gentoo を起動した。 作業としては通常の RaspberrypiOS で起動、(新しいラズパイなら不要だと思うが私は必要だった)ファームウェアのアップデートを行い、 Genpi64 のイメージをダウンロード、HDD に書き出し、起動した。ハマるポイントは無く、意外とスムーズに起動した。 2021/09/28 RaspberryPi 4B で確認した。 Raspberry Pi 2B、3A+、3B、3B+の場合、手順は異なるかもしれない。 手順 ファームウェアが古い場合はアップデート HDD ブートはファームウェアが「2020-09-03」以降である必要がある。 参考 [SDカード不要? 「Raspberry Pi 4」をUSBブートさせる方法について https://gadgetrip.jp/2021/05/raspberry_pi4_usb_boot/ ラズパイ4を完全 USB Boot 化 コマンド 効果 vcgencmd bootloader_version 現在のブートローダーのバージョンを確認 rpi-eeprom-update アップデートがあるか確認 sudo rpi-eeprom-update -a アップデート ファームウェアのバージョンを確認するため rpi-imager をRaspberrypiOS のページからダウンロードして、SD カードに書き込み起動する。 ラズパイ4を完全 USB Boot 化を参考にさせていただきファームウェアのアップデートを行った。 Read more...

Gentoo ラズパイ関連

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. Read more...

GenPi64でrootパーティションの拡張

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) unit s 空きスペース確認 (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...

Softether関連

ソースからインストール 環境 gentto raspi64に Softether をインストール 手順 git clone https://github.com/SoftEtherVPN/SoftEtherVPN_Stable.git cd SoftEtherVPN_Stable ./configure && make -j5 && sudo make install インストール後のファイル構成 /usr/{vpnbridge, vpnclient, vpncmd, vpnserver} ディレクトリが作成され、 例えば/usr/vpncmd配下には hamcore.se2, vpncmd など必要なファイルが設置される。 2021/08時点では設定ファイルもこのディレクトリ配下にいくつか置かれている。 この hamcore.se2のパーミッションは -rw------- 1 root root 2009296 8月 18 12:33 hamcore.se2 なので、rootで実行する必要がある。 sudo vpncmd rootで実行しないと下記のエラーがでた。 -- Alert: SoftEther VPN Kernel -- Fatal Error: The file "hamcore.se2" is missing or broken. Please check hamcore.se2. (First, reboot the computer. If this problem occurs again, please reinstall VPN software files. Read more...

Gentoo distccd Docker

背景 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 が一時的に使うファイル郡を削除するだけなので安全に使える。 Read more...

make.confのメモ

make.confの FEATURES のメモ 私が良く使う、あるいは検討したもの。man make.confでも確認できる。 usepkg ローカルで使用可能なパッケージの利用を試みる バイナリーパッケージガイド - Gentoo Wiki getbinpkg リモートのバイナリパッケージホストからバイナリパッケージをダウンロード バイナリーパッケージガイド - Gentoo Wiki buildpkg インストールするたびにバイナリパッケージを作成する バイナリーパッケージガイド - Gentoo Wiki binpkg-multi-instance パッケージディレクトリを新しい形にする portage-3.0.15以降はデフォルとなので不要 バイナリーパッケージガイド - Gentoo Wiki parallel-fetch 同時に複数回呼ばれた場合、プロセス間の干渉を防ぐ Project:Portage/FAQ - Gentoo Wiki parallel-install インストール時、キメの細かいロックを使用して高度な並列化を行う、更に並列化を行う場合はebuild-lockを無効化する man make. Read more...

distccのサーバ/クライアント設定

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...

Gentoo Linuxで依存関係のあれこれを残す

依存関係のエラーをまとめる 私の短い経験と調査で得られたものを追加していく… @world の指定は大きすぎる場合がある。 @system で試すと必要なパッケージのアップデートはできるかもしれない。 個別のパッケージでアップデートを試みてみる。 @preserved-rebuild と出たら emerge -1 @preserved-rebuild を行う dispatch-conf を行う マスクされている場合、マスクされたパッケージをインストールする方法 USE フラグの変更が必要 configure で失敗 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...

Gentoo周りのメモ

パッケージの USE フラグ /etc/portage/package.use/ 配下に置くようにした。 以下、chromecast できるのは vlc であって、mpv ではないので、不要になったがメモ echo 'media-video/mpv bluray dvb pulseaudio raspberry-pi' > /etc/portage/package.use/mpv sudo emerge --ask --newuse --verbose media-video/mpv echo 'media-sound/mpg123 -sdl' > /etc/portage/package.use/mpg123 echo 'media-libs/libmpeg2 -sdl' > /etc/portage/package.use/libmpeg2 echo 'media-video/vlc chromecast upnp' > /etc/portage/package.use/vlc 「このコマンドはどのパッケージだろう?」を検索する equery belongs -e ファイルパス を使う ラズパイ上で hub コマンド(github 用のコマンド)をインストール !!! All ebuilds that could satisfy "dev-vcs/hub" have been masked. !!! One of the following masked packages is required to complete your request: - dev-vcs/hub-2. Read more...