1. 环境
# 下载 buildroot
git clone git://git.buildroot.net/buildroot.git
# 查看所有分支
git branch -a
我使用分支为:remotes/origin/2022.02.x
# 切换分支命令
git checkout -b 2022.02 remotes/origin/2022.02.x
# 使用的 ubuntu 环境为:
liangtao:opt$uname -a
Linux ubuntu 5.4.0-131-generic #147~18.04.1-Ubuntu SMP Sat Oct 15 13:10:18 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
使用的单板配置为:imx6ullevk_defconfig
2. 添加多用户配置
参考博客:
Buildroot根文件系统权限表、用户表、设备管理
参考手册:buildroot手册
在 buildroot 中,默认的 root 用户,可以使用 make menuconfig 来配置;密码在下面菜单设置;
System configuration --->
() Root password
在手册中,提到可以使用 BR2_ROOTFS_USERS_TABLES 来指定多用户表;
- 在任意路径添加一个 users_table.txt
或者采用官方的建议:创建一个 board/公司名/项目名/ 目录,把 users_table.txt 放入该目录;
If additional user accounts have to be created, create board/<manufacturer>/<boardname>/users_table.txt and add that path to BR2_ROOTFS_USERS_TABLES.
- 使用 make menuconfig 来配置路径;
使用 make savedefconfig 来将修改的配置写入 imx6ullevk_defconfig 文件中;
参考手册在 users_table.txt 中创建系统用户;
例:
- 818 USB 818 * - - - USB group
USER1 823 USER1 823 ! /home/USER1 /bin/sh USB USER1 app
USER2 824 USER2 824 ! /home/USER2 /bin/sh USB USER2 app
规则如下:
** - 818 USB 818 * - - - USB group**
解释:
- 没有用户名,只创建用户组
818 用户名 id,即 UID,不会生效;
USB 用户组名
818 用户组 id,即 GID
- 不允许登录
无指定家目录
无指定 shell
无其它用户组
USB group 简单的 commit
USER1 823 USER1 823 ! /home/USER1 /bin/sh USB USER1 app
解释:
USER1 用户名为 USER1
823 用户名 id,即 UID
USER1 同名组名
823 用户组 id,即 GID
! 不允许登录
/home/USER1 指定家目录为 USER1,该目录 buildroot 会自动帮你创建
/bin/sh 指定 shell 为 /bin/sh
USB 指定 USER1 除了 USER1 组外,还属于 USB 组
USER1 app 简单的 commit
至于 USER1 指定 shell 为 /bin/sh 的原因:我指定过为 /bin/false,这样通过如下命令执行应用不成功,所以指定了 shell;
su -l USER1 -c "/home/USER1/app &"
- 编译 make all
3. 修改节点权限
由于我在 buildroot 中配置的动态节点创建的方式为 mdev;
System configuration --->
/dev management (Dynamic using devtmpfs + mdev) --->
所以我可以通过修改 /etc/mdev.txt 文件来修改 /dev/ 下的节点权限;
其它方式可以查看手册 6.2 /dev management
mdev 编写规则参考:mdev的使用以及mdev.conf的规则配置
我的 mdev.txt 文件如下:
# system all-writalbe devices
full 0:0 666
null 0:0 666
ptmx 0:0 666
random 0:0 666
tty 0:0 666
zero 0:0 666
# serial port devices
ttymxc[1-7] 0:0 666
# misc devices
sd[a-z][0-9] 0:0 666 @/etc/hotplug.sh
sd[a-z] 0:0 666 $/etc/hotplug.sh
4.将自己的文件编译进 buildroot 文件系统中
关键字为:BR2_ROOTFS_OVERLAY
buildroot 会把指定目录下的文件拷贝到文件系统中;
版权归原作者 liangtao_1996 所有, 如有侵权,请联系我们删除。