2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[メモ] Raspbery Pi OS 64bit イメージ作成 (2020年冬版)

Last updated at Posted at 2020-12-17

概要

  • Raspberry Pi OSの2020年12月2日(Release date: December 2nd 2020)から、64bitベータ版がオモテから消えましたよね?

  • Raspberry Pi OSイメージ作成スクリプトのpi-genのarm64というブランチで、raspiosの64bitを作成しよう。

  • 現在、Troubleshootingのところで、下のようにあるので、x86_64ではうまく動かないっぽい?

    Please note there is currently an issue when compiling with a 64 Bit O

  • 以前のメモ: [メモ] Raspbian: 最新イメージ作成

  • 結果

    • ラズパイ4BとSSDで、Liteと通常Desktopのイメージが30分程度(APTキャッシュサーバ使用で、初回ではないので、外部からのダウンロード時間は含まれてない、と思う)

環境

手順(概要)

  1. ビルド環境準備
    1. OS (Ubuntu arm64 か、Raspberry Pi OS 64bitベータ版)
    2. dockerインストール
    3. apt-cacher-ng : APTのキャッシュサーバ
  2. RPi-Distro/pi-gen
    1. config ファイル作成
    2. スクリプトをちょいと変更
    3. スクリプト実行

手順(詳細)

注意点

  • build-docker.sh でビルド時、deployフォルダが存在してると、生成物がうまくコピーされないので、削除しておく

ビルド環境準備

  1. ベースOSを焼く

    1. imgファイルを入手
    2. Raspberry Pi Imagerで、
      • CHOOSE OS => Use custom にて、イメージファイルを指定。(zipのままいける。)
  2. dockerインストール

    # Docker
    # https://docs.docker.com/engine/install/debian/#install-using-the-convenience-script
    curl -fsSL https://get.docker.com -o get-docker.sh
    sudo sh get-docker.sh
    sudo usermod -aG docker ${USER}
    
    # docker-compose
    sudo apt update
    sudo apt install -y python3-pip libffi-dev
    sudo pip3 install docker-compose
    
  3. apt-cacher-ng : APTのキャッシュサーバ

pi-gen: イメージ作成

  • キホン (実際には、echo "IMG_NAME='raspios64'" > configの代わりに、configをうまく編集・設定してから、やる)

     # レポジトリをクローン、ついでに、arm64ブランチをCheckout
     git clone https://github.com/RPi-Distro/pi-gen.git -b arm64
    
     cd pi-gen
     git reset --hard # リセット
     git clean -fdx   # クリーン
    
     # config 作成 (必要最小限)
     echo "IMG_NAME='raspios64'" > config
    
     # スクリプト変更 i386のイメージを持ってきてしまうのをなおす
     sed -i -e 's@i386/@@g' build-docker.sh
    
     # ビルドスクリプト実行
     time bash ./build-docker.sh 2>&1 | tee ../build.log
    
     # deployフォルダの中に、zipファイルがある、はず
    
  • config を設定する
    configファイルを編集することで、初期設定ができる。(時間帯、言語、キーボードとか、ラズパイの公式イメージは、英国がデフォルト。)

    • IMG_NAME(必須): 生成物のファイル名に使用される
    • APT_PROXY: aptキャッシュサーバ指定
    • DEPLOY_ZIP: 1:ZIPで出力(既定値) / 0:imgで出力
    • LOCALE_DEFAULT: 言語(既定値:en_GB.UTF-8)
    • KEYBOARD_KEYMAP: キーマップ(既定値:gb)
    • KEYBOARD_LAYOUT: キーレイアウト(既定値:English (UK))
    • TIMEZONE_DEFAULT: タイムゾーン (既定値:Europe/London)
    • FIRST_USER_NAME: ユーザ(既定値:pi)
    • FIRST_USER_PASS: ユーザパスワード(既定値:raspberry)
    • WPA_ESSID WPA_PASSWORD WPA_COUNTRY: Wifi設定
    • ENABLE_SSH: SSH 1:有効 / 0:無効(既定値)
    config例
     IMG_NAME=orenoraspios64
     APT_PROXY=http://172.17.0.1:3142
     DEPLOY_ZIP=0
     LOCALE_DEFAULT=en_US.UTF-8
     KEYBOARD_KEYMAP=us
     KEYBOARD_LAYOUT="English (US)"
     TIMEZONE_DEFAULT="America/Los_Angeles"
     ENABLE_SSH=1
     FIRST_USER_NAME=`ore`
     FIRST_USER_PASS=`orenopasuwa-do`
     WPA_ESSID=wifi-ssid
     WPA_PASSWORD=wifi-no-password
     WPA_COUNTRY=US
     ENABLE_SSH=1
    

Liteイメージだけ作りたい。

  • build-docker.shを実行する前に、↓をする
touch ./stage3/SKIP ./stage4/SKIP ./stage5/SKIP
rm -rfv ./stage3/EXPORT* ./stage4/EXPORT* ./stage5/EXPORT*
  • 説明
    • 下の、機械翻訳したところみると、stageX(X=0,1,2,3,4,5)フォルダごとにすすむ。
    • stage2で、Lite、stage4で、通常デスクトップ版、stage5がFullといってるイメージ
    • stage*/のフォルダ内に、SKIPというファイルがあると、処理されずに次のステージにいく。
    • EXPORT_IMAGEという設定ファイルがあると、そこでの結果をimgに出力する

パッケージを追加したい

  • うまい段階のstageX/00-install-packages/ フォルダの中の、00-packages または、00-packages-NR に、記述する。
  • ``-NRのほうは、--no-install-recommends`オプション付きとのこと。
    • stage4/00-install-packages/00-packageに、fcitx-mozcとか、追加してみてはどうだろうか?

その他

  • deployフォルダの削除は忘れずに



メモ)2020-12-16 (一部)日本語訳 ~ www.DeepL.com/Translator(無料版)で翻訳

  • image画像と訳されてたところを、イメージに変更

How the build process works (ビルドプロセスの仕組み)

以下のような手順でイメージを構築していきます。

  • すべてのステージディレクトリを英数字順にループします。

  • このステージディレクトリに "SKIP"というファイルが含まれている場合は、次のディレクトリに移動します。

  • prerun.sh スクリプトの実行。これは通常、ステージ間でビルドディレクトリをコピーするために使用されます。

  • 各ステージのディレクトリでは、各サブディレクトリをループして、それに含まれるインストールスクリプトをそれぞれ実行してください。これらのスクリプトには、先頭に 2 桁の数字を入れて名前を付ける必要があります。いくつかの異なるファイルやディレクトリがあり、ビルドプロセスの異なる部分を制御するために使用できます。

    • 00-run.sh - unix シェルスクリプト。実行可能にする必要があります。
    • 00-run-chroot.sh - イメージのビルドディレクトリの chroot で実行される unix シェルスクリプト。実行するためには実行可能にする必要があります。
    • 00-debconf - このファイルの内容は、ロケールなどを設定するために debconf-set-selections に渡されます。
    • 00-packages - インストールするパッケージのリスト。1 行に複数個、スペースで区切って書くことができます。
    • 00-packages-NR - 00-packages と同じですが、apt-get の --no-install-recommends -y パラメータを使ってインストールされます。
    • 00-patches - quilt を使って適用されるパッチファイルを含むディレクトリ。もし 'EDIT' という名前のファイルがディレクトリ内にある場合、ビルドプロセスは bash セッションで中断され、パッチを作成/修正できるようになります
  • ステージディレクトリに "EXPORT_NOOBS"または "EXPORT_IMAGE"というファイルがある場合、このステージをイメージのリストに追加して生成します。

  • 指定したステージのイメージを生成する

詳細については、build.shを調べてみることをお勧めします。


Stage Anatomy (ステージの詳細)

Raspbian Stage Overview(概要)

Raspbian のビルドは論理的にわかりやすく、モジュール化するためにいくつかの段階に分けられています。これは初期の複雑さの原因となりますが、メンテナンスを簡素化し、より簡単なカスタマイズを可能にしています。

  • Stage 0 - bootstrap
    このステージの主な目的は、使用可能なファイルシステムを作成することです。これは主に debootstrap を使用することで達成されます。これは Debian システム上で base.tgz として使用するのに適した最小限のファイルシステムを作成します。この段階では、apt の設定も行い、debootstrap が見逃した raspberrypi-bootloader をインストールします。ミニマルコアはインストールされていますが、設定はされていません。

  • Stage 1 - truly minimal system (真のミニマムシステム)
    このステージでは、/etc/fstab のようなシステムファイルをインストールしてシステムを起動可能にし、ブートローダを設定し、ネットワークを操作可能にし、raspi-config のようなパッケージをインストールします。この段階では、システムはローカルコンソールに起動し、そこからシステムの設定やインストールに必要な基本的なタスクを実行する手段を持っています。これは、システムができる限り最低限のものであり、伝統的な意味では、おそらくまだ実際には使えないでしょう。それでも、最低限のことをしたいのであれば、これは最低限のことであり、残りの部分はシステム管理者として自分で合理的に行うことができます。

  • Stage 2 - lite system
    このステージでは Raspbian-Lite イメージを生成します。最適化されたメモリ機能のインストール、timezone と charmap のデフォルト設定、fake-hwclock と ntp のインストール、無線 LAN と bluetooth のサポート、dphys-swapfile、その他ハードウェア管理のための基本的な機能のインストールを行います。また、必要なグループを作成し、πユーザに sudo と標準コンソールのハードウェア権限グループへのアクセス権を与えます。
    基本的なPythonやLuaパッケージ、build-essentialパッケージなど、ミニマムなシステムでの開発にはあまり意味のないツールがいくつかあります。pi-gen と一緒である必要はありませんが、これらはより重要なパッケージと一緒にまとめられています。これらは Raspbian のターゲット層にとっては理解できるものですが、もし本当にミニマルなものと Raspbian-Lite の中間のものを探していたならば、ここからトリミングを始めることになります。

  • Stage 3 - desktop system
    ここでは、X11とLXDE、Webブラウザ、開発用のgit、RaspbianのカスタムUIの強化など、完全なデスクトップシステムを手に入れることができます。これは基本的なデスクトップシステムで、いくつかの開発ツールがインストールされています。

  • Stage 4 - Normal Raspbian image
    4GB のカードに収まるように設計されています。これはシステムドキュメントのように、Raspbian を新しいユーザに優しいものにするためのほとんどのものをインストールする段階です。

  • Stage 5 - The Raspbian Full image
    Raspbianのフルイメージ。より多くの開発ツール、メールクライアント、Scratchのような学習ツール、sonic-piのような専門的なパッケージ、オフィスの生産性など。

Stage specification (仕様)

指定したステージまでビルドしたい場合(ライトシステムの場合はステージ2までビルドするなど)、インクルードしないようにしたい./stageディレクトリにSKIPという名前の空のファイルをそれぞれ配置します。

そして、SKIP_IMAGES という空のファイルを ./stage4 と ./stage5 (ステージ2までビルドする場合)、または ./stage2 (ミニマムシステムをビルドする場合) に追加します。

# Example for building a lite system ライトシステムの構築例
echo "IMG_NAME='Raspbian'" > config
touch ./stage3/SKIP ./stage4/SKIP ./stage5/SKIP
touch ./stage4/SKIP_IMAGES ./stage5/SKIP_IMAGES
sudo ./build.sh  # or ./build-docker.sh

lite システムの上に (例えば) 更なる設定を構築したい場合は、./stage3./stage4 の内容を削除して、同じフォーマットで独自の内容に置き換えることもできます

Skipping stages to speed up development (ステージをスキップして開発を加速させる)

特定のステージでの作業であれば、推奨される開発プロセスは以下のようになります。

  • EXPORT_*ファイルを含むディレクトリにSKIP_IMAGESというファイルを追加します(現在はstage2、stage4、stage5)
  • ビルドしたくないステージにSKIPファイルを追加します。例えば、ライトイメージをベースにしている場合、ステージ3、4、5に追加します。
  • build.sh を実行してすべてのステージをビルドします。
  • ビルドに成功した初期のステージにSKIPファイルを追加します。
  • ラストステージの修正
  • sudo CLEAN=1 ./build.sh を使って、最後のステージだけを再構築します。
  • イメージに満足したら、SKIP_IMAGES ファイルを削除して、テスト用にイメージをエクスポートします。
2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?