
今回はNetBSDでdebootstrapを用いてDebianパッケージを動作させます。
疑似Linuxのchroot環境でDebianを動作します。
NetBSDには基本的なアプリがpkginとpkgsrcで動きますが、
chromium-browserとかどうしてもビルドが大変なパッケージは
Debian方が多くて特殊なアプリも動きます。
debootstrapはpkgsrc-WIPにあるパッケージで動作しますし
アーキテクチャ非依存なので謎デバイスでも多分動きます。
是非試してみましょう。
●pkgsrc-WIP+debootstrap
pkgsrc-WIPは進行中パッケージで非公認ですが動作します。
前回のブログを参照してみてください。
世界の全ての機器を制覇するOS NetBSD 進行中アプリ登録 pkgsrc-WIP その11
debootstrapは非Debianの環境でdebianをChrootなどで動かす仕組みで
Debianの環境を新規に作る際によく使われます。
NetBSDの場合はpkgsrc-WIPのパッチでLinuxエミュレーションを
使ってchroot環境をNetBSD上で再現します。
つまりDebian公式のdebootstrapそのままでは動きません。
パッチが必要です。
またpkgsrc-WIPの指定ではちょっとファイル設定が古いので
makeした際にそのままではリンク先にFileがありません、と落ちます。
少し設定を変更する必要がありそうです。
●Debootstrapのインストール
pkgsrc−WIPのインストール方法は上リンク先にて割愛します。
既に入っているものとしてお願いします。
まずフォルダに移動
root権限を想定しています。
cd pkgsrc/wip/deboostrap/
ここでいつも通りmakeしてもエラーがでます。
Makefileファイルを編集します。
vi Makefile
ここの9行目のubuntu-archive-keyring_2012.05.19-5_all.debで
リンク先にファイルが無いって言われますのでdebianのサーバを見てみます。
リンク先はこちらです。
http://ftp.se.debian.org/debian/pool/main/u/ubuntu-keyring/
ubuntu-archive-keyring_2012.05.19-1_all.deb
ubuntu-archive-keyring_2012.05.19-2〜bpo70+1_all.deb
ubuntu-archive-keyring_2016.05.13-1_all.deb
古いファイルと新しいファイルにdebファイルが分かれています。
確かにMakefileに書かれているファイル名はサーバにありません。
どれかにファイル名を指定しなおしましょう。
今回はせっかくなので最新版を使います。
ファイル名は直ぐにバージョンUPしてサーバの上で変わるので毎回要確認。
Makefileを修正して保存してからmake
make
make install
これでdebootstrapのバイナリがインストールされます。
さてここからDebianパッケージを入れます。
その前にまずOSのアーキテクチャを確認して指定しましょう。
NetBSDのアーキテクチャとDebianのアーキテクチャを
何故か同じにしないとバイナリエラーが出て動きません。
debootstrap --arch=i386 wheezy /emul/wheezy
cp /usr/pkg/share/debootstrap/libfakesyscall-i386.so /emul/wheezy
cp /etc/hosts /emul/wheezy/etc/hosts
cp /proc/mounts /emul/wheezy/etc/mtab
cp /etc/resolv.conf /emul/wheezy/etc/resolve.conf
mount -t procfs -o linux proc /emul/wheezy/proc
chroot /emul/wheezy /bin/bash
export LD_PRELOAD=/libfakesyscall-i386.so
ついでにdbusを/etc/fstabに追記
vi /etc/fstab
一行追加。
/var/run/dbus/ /emul/wheezy/var/run/dbus/ none rbind 0 0
保存します。
chrootコマンド入力まで入れればDebian環境です。
kapperのNetBSDはi386なのでそれを指定していますが、
amd64やarmhfの場合は上コマンドを修正してください。
同じインテルやARMだからといって適当に指定しないでください。
今回は教科書通りWheezyを指定しますが一応Jessieも動きます。
もしHDDランプが止まったまま途中でインストールが止まっていたら、
Enterキーを押して動かしてください。
しかし何故かJessieではapt系が入っていませんので謎?使えません。
apt-get update
apt-get upgrade
apt-get install (パッケージ名)
こんな感じでaptを使ってアプリを入れましょう。
chrootから出る時はexitコマンドで。
慣れれば簡単かと。
●まとめ
NetBSD環境でもDebianパッケージがchrootで使えます。
何故か挙動的にjessieは変なのでwheezyを推奨します。
慣れた身としてはDebianのバイナリパッケージが非常に便利です。
NetBSDではビルドできない、動かないアプリが沢山ありますし。
debootstrapの解説は世の中に沢山ありますのでググってみて。
こんな簡単にDebianがNetBSD上で動いてしまうとは・・・
pkgsrc-WIPの作者さんに感謝です。
慣れればソースコードを見て自分でNetBSDに移植するのもありかと。
実際はLinuxが対応していない謎デバイスでは特に重宝しますかも。
タグ:NetBSD
【NetBSDの最新記事】
- 世界の全ての機器を制覇するOS NetB..
- 世界の全ての機器を制覇するOS NetB..
- 世界の全ての機器を制覇するOS NetB..
- NetBSD コマンドスキルチェック 作..
- 世界の全ての機器を制覇するOS NetB..
- 世界の全ての機器を制覇するOS NetB..
- 世界の全ての機器を制覇するOS NetB..
- 世界の全ての機器を制覇するOS NetB..
- 世界の全ての機器を制覇するOS NetB..
- 世界の全ての機器を制覇するOS NetB..
- 世界の全ての機器を制覇するOS NetB..
- 世界の全ての機器を制覇するOS NetB..
- 世界の全ての機器を制覇するOS NetB..
- 世界の全ての機器を制覇するOS NetB..
- 世界の全ての機器を制覇するOS NetB..
- 世界の全ての機器を制覇するOS NetB..
- 世界の全ての機器を制覇するOS NetB..
- 世界の全ての機器を制覇するOS NetB..
- 世界の全ての機器を制覇するOS NetB..
- 世界の全ての機器を制覇するOS NetB..