2015年12月8日火曜日

玄箱用クロスコンパイル環境の構築

今回玄人志向 玄箱(KURO-BOX)のクロスコンパイルを行うのに当たってクロスコンパイルの環境を構築しました。具体的には Debian Wiki に紹介されている通りの内容です。
CrossCompiling - Debian Wiki
https://wiki.debian.org/CrossCompiling
sbuild - Debian Wiki
https://wiki.debian.org/sbuild

sbuild の概要

この Debian Wiki で紹介されている方法は sbuild という一種の仮想環境上で、コンパイルを行うターゲット(CPU)に合わせた環境を整えて、通常のクロスコンパイルを行うものでした。sbuild の環境から抜け出すと通常の Debian のシステムへ戻り、クロスコンパイル中に行った様々な作業は、ユーザ・ディレクトリの部分を除いて全て消去されてしまいます。このことから母体となる Debian システムを汚すことなくクロスコンパイルが行えるようになっています。

sbuild の環境構築

sbuild の環境を作るに当たって、私は念の為に新しくデスクトップ環境のない状態の Debian Jessie をインストールしたマシンを用意しました。クロスコンパイルのためにプロセッサなどの環境変数を操作することから、システムが破壊される可能性を考慮してのことです。sbuild の環境を構築するに当たっては、熟慮して sbuild の環境の構築に当たってください。なお作業は、一般ユーザで行います。

まず最初に sbuild をインストールします。
$ sudo apt-get install sbuild

次に sbuild の作業環境を作成します。/srv/schroot ディレクトリへ rootfs の圧縮ファイル(.tgz) が作られます。この作られた sbuild の環境は、直接操作することがありません。全て sbuild のコマンドから操作します。
$ sudo sbuild-createchroot --make-sbuild-tarball=/srv/chroots/jessie-sbuild.tgz jessie /srv/chroots/jessie http://httpredir.debian.org/debian/

動作確認

sbuild の作業環境が存在しているのか?確認してみます。
$ schroot -l
chroot:jessie-i386-sbuild
source:jessie-i386-sbuild

試しに sbuild の環境へログインしてみます。環境へ移行するのに多少時間がかかります。この sbuild の作業環境の中で各種のコマンドを操作して、感触を掴んでください。そしてログアウトするには、 "exit" または "Ctrl + D" です。
$ schroot -c jessie-i386-sbuild
(jessie-i386-sbuild)user@kurobuilder:~$

sbuild の作業環境の整備

この sbuild の作業環境では wget や sudo 、vi といった非常によく使用するコマンドがインストールされていないことに気づいたかと思います。これらは apt-get install でインストール可能ですが、sbuild の作業環境を抜け出すたびにリセットされてしまいます。恒久的にコマンドをインストールしたり、/etc の設定値を変更したい場合には、次の sbuild のシェルで設定可能です。シェルへ移行するには、かなり時間が掛かります。
$ sudo sbuild-shell jessie-i386-sbuild
I: /bin/sh
#

この sbuild-shell の中で作業した内容は、そのまま保存されます。私は次のソフトウェアをインストールしました。なお大きなソフトウェアをインストールすると、それだけ sbuild の作業環境のファイルが肥大化します。sbuild の環境へ移行するのに余計に時間が掛かるようになります。出来るだけ最小限度の追加をお奨めします。
# apt-get update
# apt-get install sudo
# apt-get install vim
# apt-get install wget

/etc/apt/sources/list を編集しました。最下段の青文字部分を追加しました。
# vi /etc/apt/sources.list

deb http://httpredir.debian.org/debian/ jessie main
deb-src http://httpredir.debian.org/debian/ jessie main
deb http://emdebian.org/tools/debian/ jessie main

sudo の設定を行いました。青文字部分の user を追加しました。私の場合、パスワード無しで特権ユーザとしての作業ができるようにしました。
# visudo
# User privilege specification
root    ALL=(ALL:ALL) ALL
user    ALL=(ALL) NOPASSWD:ALL
# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL
このシェルから抜けるログアウトするには "exit" または "Ctrl + D" です。

以上で sbuild の作業環境の整備は終了です。


0 件のコメント:

コメントを投稿