Ubuntu 上で、ARM 版 Raspbian (buster) の隔離された開発環境を作成する方法(qemu-debootstrap 使用)
【概要】Ubuntu 24.04 上に、qemu-debootstrap を使用して ARM 版 Raspbian (buster) の隔離された開発環境を構築する方法を解説する。schroot の設定による一般ユーザでの利用、SSH リモートログイン環境の構築までを扱う。
【目次】
【サイト内の関連ページ】
前準備
Ubuntu のシステム更新
Ubuntu でシステム更新を実施するには、以下のコマンドを実行する。
# パッケージリストの情報を更新
sudo apt update
# インストール済みのパッケージを包括的に更新 (依存関係も考慮)
sudo apt full-upgrade
# 変更をシステム全体に確実に反映させるために再起動
sudo shutdown -r now
隔離された開発環境の構築
- 必要なパッケージのインストール:qemu-user-static、debootstrap、schroot
# パッケージリストの情報を更新 sudo apt update sudo apt -y install qemu-user-static debootstrap schroot
- ARM 版 Raspbian (buster) 環境の構築
armhf 版 Debian 環境の構築手順は、別ページを参照すること。
環境構築の設定内容:
- アーキテクチャ:armel
- バージョン:Raspbian Debian 10 ベース (buster)
- 使用ディレクトリ:/home/raspbian
- インストールバリアント:buildd
- ダウンロード元:https://archive.raspbian.org/raspbian
環境構築の完了までしばらく時間を要する。
sudo rm -rf /home/raspbian sudo mkdir /home/raspbian sudo qemu-debootstrap --foreign --arch armel --variant buildd --include=ca-certificates,apt,wget,sudo,vim-tiny,debootstrap buster /home/raspbian https://archive.raspbian.org/raspbian
- 構築完了の確認
- アーキテクチャの確認:ARM 版 Raspbian (buster) 環境で「uname -m」を実行
sudo chroot /home/raspbian uname -m exit
- 構築した環境(chroot 環境)の動作確認
ここでは、nano エディタのインストール、C プログラムの作成、ビルド、実行を行う。
- 管理者権限で chroot 環境に入り、「uname -m」でアーキテクチャを確認
sudo chroot /home/raspbian uname -m
- nano エディタのインストール
apt update apt upgrade apt install nano
- 動作確認用のプログラム作成:エディタで以下のコードを入力し、「/tmp/hello.c」として保存
#include<stdio.h> int main() { printf("Hello,World!\n"); printf("sizeof(size_t)=%ld\n", sizeof(size_t)); return 0; }
- プログラムのコンパイルと実行
cd /tmp gcc -o a.out hello.c ./a.out
- 環境からの退出
exit
- 管理者権限で chroot 環境に入り、「uname -m」でアーキテクチャを確認
schroot の設定
一般ユーザでも chroot が実行できるよう、schroot の設定を行う。
- /etc/schroot/chroot.d/raspbian の設定内容
「directory=/home/raspbian」は実際の構築ディレクトリに合わせて設定する。
「kaneko」は、使用を許可するユーザ名に変更する(複数ユーザはカンマ区切りで指定)。
[raspbian] description=Debian GNU/Linux 10 (Buster) type=directory directory=/home/raspbian root-users=kaneko users=kaneko
- schroot の動作確認
schroot -c raspbian -p bash uname -m exit
- 管理者権限での動作確認
schroot -c raspbian -p bash -u root uname -m exit
リモートログイン環境の構築
新規ユーザの作成
SSH リモートログイン用のユーザを作成する。
- ユーザ名:ai
- ユーザID:1234
- ホームディレクトリ:/home/ai(仮想マシン用ディレクトリとは別に設定する)
sudo adduser --uid 1234 --home /home/ai ai
再設定する場合は「sudo deluser ai」でアカウントを削除後、再度実行する。
chroot 環境内のユーザ設定
chroot 環境内での sudo 実行権限を持つユーザアカウントを作成する。
ホスト環境のパスワードと同一である必要はないが、ユーザID、ホームディレクトリ、ユーザ名は一致させる必要がある。
sudo chroot /home/raspbian
rm -rf /home/ai
deluser ai
adduser --uid 1234 --ingroup sudo --home /home/ai ai
exit
/home/raspbian/etc/sudoers の設定
chroot 環境内での sudo 実行を可能にするための設定である(不要な場合は省略可能)。
/home/raspbian/etc/sudoers に「Defaults visiblepw」を追記する。
適切な権限を設定する。
sudo chmod 444 /home/raspbian/etc/sudoers
sudo chmod 444 /home/raspbian/etc/sudoers.d/*
ディレクトリ権限の設定
SSH リモートログイン用の権限設定を行う。所有者を root に、権限を「755」に設定する。
sudo chown root:root /home
sudo chmod 755 /home
sudo chown root:root /home/raspbian
sudo chmod 755 /home/raspbian
sudo chown root:root /home/raspbian/home
sudo chmod 755 /home/raspbian/home
sudo chown root:root /home/raspbian/home/ai
sudo chmod 755 /home/raspbian/home/ai
/etc/ssh/sshd_config の設定
SSH リモートログイン時の chroot 実行設定を行う。/etc/ssh/sshd_config に以下を追記する。
「ChrootDirectory=/home/raspbian」は実際の構築ディレクトリに合わせて設定する。
Match User ai
X11Forwarding yes
AllowTcpForwarding yes
ChrootDirectory /home/raspbian
sshd の再起動
sudo service sshd reload
SSH ログインのテスト
ssh ai@localhost
ログインできない場合は、/etc/ssh/sshd_config の設定および「ディレクトリ権限の設定」を確認する。