- # 下载 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
参考博客:
参考手册:buildroot手册
在 buildroot 中,默认的 root 用户,可以使用 make menuconfig 来配置;密码在下面菜单设置;
- System configuration --->
- () Root password
在手册中,提到可以使用 BR2_ROOTFS_USERS_TABLES 来指定多用户表;
1. 在任意路径添加一个 users_table.txt
或者采用官方的建议:创建一个 board/公司名/项目名/ 目录,把 users_table.txt 放入该目录;
If additional user accounts have to be created, create board/
2. 使用 make menuconfig 来配置路径;
3. 使用 make savedefconfig 来将修改的配置写入 imx6ullevk_defconfig 文件中;
4. 参考手册在 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 &"
5. 编译 make all
由于我在 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
关键字为:BR2_ROOTFS_OVERLAY
buildroot 会把指定目录下的文件拷贝到文件系统中;