OpenBlockS266でSELinux

タグが5つも付いてしまった。長いなぁ。
それはともかく、OpenBlockSでSELinuxに挑戦。


ターゲットは、家でBフレッツ接続(PPPoE)+ファイアウォールとして動作しているOpenBlockSで、数ヶ月前に数年ほったらかしの状態 (Linux From Scratchのバージョン5.1 orz) だったものからBuildrootによるBusyBox+uClibcの環境に変更したものです。
Linux From Scratch は構築するのも大変だったし、OpenBlockSのFlash ROMには収まりきらずCFカードが必要だったので、それからすると、Buildrootによる環境はmake一発でファームの構築できるし、CFカードはいらないし、とても楽です (特に、OpenSSHとか必要なもののバージョンの追従が楽です)。


で、その次、ということで、同じ環境をSELinuxで動かして見ようと挑戦。
Buildrootにlibselinux(libsepolもふくむ)の構築を追加して、試験しながらビルド出きるように修正。
しかしどうもTLS(Thread Local Storage)に関するエラーが発生してうまく行かない。
う〜ん。どうしよう。と、"libselinux tls"でググって見ると、組み込みネットにこんな記事が!

しかもid:himainuさんの記事ではないですか。こんな所にも。
ふむふむ、"EMFLAGS+= -D__thread="をつければ良いと。
無事、構築成功!
おかげで、構築までこぎつけました。ありがとうございます。> himainuさん。
さて次はポリシーか。


その後、この記事を読み進めると、P.4くらいで、「表4のようなオプションを最低限有効にする必要があります.」
ん?表4?ありません…。
その先も「…ボード上に作成する必要があるのは,表5の三つのファイルです.」
表5もないし…

これって、もしかしてInterfaceに載ってた記事ですか?
今引越し間近なので、もうダンボールの中にしまってしまいました…


まぁ、いいや。先に進もう。
で、seedit-2.2.0.1.tar.gzをダウンロードして、展開して、makeして…
カーネルのpolicyバージョンが23なので、seedit-cross.shの中の"POLICYVER=21"を23に変更すればいいのかな?

$ ./seedit-load -d
seedit-load: Success
Input file open error:/usr/share/seedit/sepolicy/confined_domains$

何かエラーが出たぞ?
でもpolicy_rootにはそれらしいファイルが出来てるし、いいのかなぁ。

$ du -a policy_root/
48 policy_root/policy/policy.23
56 policy_root/policy
8 policy_root/users/local.users
8 policy_root/users/system.users
24 policy_root/users
8 policy_root/contexts/dbus_contexts
8 policy_root/contexts/userhelper_context
8 policy_root/contexts/default_contexts
8 policy_root/contexts/initrc_context
8 policy_root/contexts/files/file_contexts.homedirs
12 policy_root/contexts/files/file_contexts
28 policy_root/contexts/files
8 policy_root/contexts/customizable_types
8 policy_root/contexts/default_type
84 policy_root/contexts
4 policy_root/fcdiff
176 policy_root/
$

これらをOpenBlockSにコピー。また、/etc/selinux/configに"SELINUXTYPE=seedit"を記述。
その後、"load_policy"を動かしてみる。

# load_policy
SELinux: Could not open policy file <= (null).23: No such file or directory
load_policy: can't load policy: No such file or directory
#

"(null).23"?
パス文字列を取得できてないようですねぇ。なぜだ?
BusyBoxの方がおかしいか?


眠いので、今日はここまで。