にほんブログ村 IT技術ブログへ
にほんブログ村

Linux ブログランキングへ

2016年08月03日

世界の全ての機器を制覇するOS NetBSD pkgsrc-WIP+debootstrap Debianアプリ動作 その12 #NetBSD

Co-JBDOVUAQOjL2.jpg

今回は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
posted by kapper at 22:10 | Comment(0) | NetBSD
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

にほんブログ村 IT技術ブログへ
にほんブログ村

Linux ブログランキングへ