7

Beagle Bone ボード用の Linux システムを下から構築しています。バニラ カーネルをコンパイルし、基本的なルート ファイル システムを構築しましbusyboxた。システムは U-boot で起動されますが、rootfsは Linux PC 上にあり、NFS 経由でエクスポートされます。

/path/to/rootfs  10.42.0.17(rw,wdelay,no_root_squash,no_subtree_check,sec=sys,rw,secure,no_root_squash,no_all_squash)

U ブートbootargsは次のとおりです。

bootargs console=ttyO0,115200n8 root=/dev/nfs rw nfsroot=${serverip}:/path/to/rootfs,v3,tcp ip=dhcp

suroot 以外のユーザーのために作業しようとしたときに問題が発生しました。問題を回避するために、インターネット上の人々はバイナリのsuidビットを設定することを提案しています。busyboxその後:

$ sudo chmod u+s busybox 

および検証:

$ ls -la
...
-rwsr-xr-x  1 myuser myuser 1882976 Jan 13 21:47 busybox
...

$ stat -c "%a %n" busybox 
4755 busybox

エラーが発生しました。カーネルが起動し、通常のメッセージがすべて表示されますが、最後にスタックしてlogin行が表示されません。ブート シーケンスの最後の数行を次に示します。

[    3.776185] IP-Config: Complete:
[    3.779656]      device=eth0, hwaddr=c8:a0:30:c5:80:e9, ipaddr=10.42.0.17, mask=255.255.255.0, gw=10.42.0.1
[    3.789877]      host=10.42.0.17, domain=, nis-domain=(none)
[    3.795822]      bootserver=10.42.0.1, rootserver=10.42.0.1, rootpath=
[    3.802492]      nameserver0=10.42.0.1
[    3.871575] VFS: Mounted root (nfs filesystem) on device 0:15.
[    3.879903] devtmpfs: mounted
[    3.883713] Freeing unused kernel memory: 380K (c07ef000 - c084e000)

フラグを削除すると、正常に戻ります。

....
[    3.862291] Freeing unused kernel memory: 380K (c07ef000 - c084e000)

10.42.0.17 login: 

Beagle Bone ボード自体で実行中のシェル内からフラグを設定すると、実行直後にシェルが応答を停止しchmodます。NFS が rootfs をエクスポートする方法に関係していると思われますが、推測にすぎないため、適切な説明と可能な解決策が役立つでしょう。

4

1 に答える 1

0

いくつかの調査の後、私は自分の質問に自分で答えます。答えはとても簡単です。上記が機能するためには、busyboxバイナリの所有者がroot:root. 最も簡単な解決策は、所有権を変更することです。

于 2015-06-04T11:45:46.240 に答える