用buildroot创建文件系统时,遇到了一些问题:
1,配置时,没有勾选root用户,进到系统后,很命令提示要Root权限。网上搜了下,/bin/busybox这个文件有个s权限,使用 chmod a-s /bin/busybox命令,去掉这个s权限,则不会提示要root权限了。
有没有办法,配置buildroot,使生成的文件不用再考虑以上步骤?
2,进入文件系统后,就一个#命令提示符,没有路径显示。群友指出和PS1相关,在/etc/profile里,查找并修改为:export PS1='\w # ',生效该文件后,命令提示符前有路径了,但是cd ~后,在#前不显示~。这个在之前官方bsp里是可显示~的,虽然都是回到根目录下。
有没有办法,配置buildroot,使生成的文件,不用再考虑以上步骤?
3,进入到uboot时,屏幕有白色背景和红色nuvoton图标,以及uboot版本信息;
进入kernel时,有黑色背景及白色调试信息(我这里可能是屏线问题显示的绿色字符);
进入rootfs后,屏幕保持kernel时的调试信息,但不会再显示通过串口发送的调试信息了。
如何设置,使进入rootfs后,屏幕仍可以显示交互的调试信息?
4,buildroot勾选yaffs2文件系统,则output/images里有rootfs.tar文件和rootfs.yaffs2文件。直接烧录rootfs.yaffs2文件,则挂载rootfs失败。将rootfs.tar解压后,然后利用mkyaffs2命令制作镜像文件再烧录,可正常进入文件系统。
请问,为何生成的rootfs.yaffs2文件不能直接烧录进去?
最近编辑记录 Gentlepig (2019-07-17 11:38:39)
离线
感谢二位解答。
离线
1. 你可以手动生成文件系统, 使用 fakeroot: https://whycan.cn/t_2179.html
或者像全志官方bsp一样, 把 fakeroot 整合到 buidroot: https://whycan.cn/t_1014.html4. 应该是 buildroot 的 mkfs.yaffs2 参数和你手动执行的不一致。
mkyaffs2 --inband-tags -p 2048 rootfs rootfs_yaffs2.img
这是手动制作yaffs2文件镜像用到的命令。
而在bulidroot配置时,只找到了
Filesystem images --->
\[*\] yaffs2 root filesystem
没有找到参数设置相关的选项。
离线
jiangming1399 说:1. 勾上root用户。
2. 可能与ash的配置有关。不推荐把home目录设置到/,建议放到/root或/home/$(USER)目录下。
3. 本质上屏幕和串口不是同一个输出设备,没有很方便的方法做到两个同时输出:只能将串口和屏幕二选一作为默认输出设备。1. 请教怎么勾上 root 用户
3. 他问的应该是, 第一个进程跑起来之后, 就不能用 fb 看log了。
配置buildroot时的system configuration下有个Enable root logged with password,应该是选这个。
Makefile里没找到mkyaffs2这个单词。
buildroot目录里倒是有这个命令:
#:~/nuc970bsp/applications/NUC970_Buildroot$ find . -name mkyaffs2
./output/build/host-yaffs2utils-0.2.9/mkyaffs2
./output/host/usr/bin/mkyaffs2
------------------------------
grep命令搜到了,可能是这个:
./fs/yaffs2/yaffs.mk: $(HOST_DIR)/usr/bin/mkyaffs2 --all-root $(TARGET_DIR) $@
对比我手动用的:mkyaffs2 --inband-tags -p 2048 rootfs rootfs_yaffs2.img
--------------------------------------------
比较这两个mkyaffs2的help:
mkyaffs2 0.2.9_20120815 - A utility to make the yaffs2 image
Usage: mkyaffs2 [-h|--help] [-e|--endian] [-v|--verbose]
[-p|--pagesize pagesize] [-s|sparesize sparesize]
[-o|--oobimg oobimage] [--all-root] [--yaffs-ecclayout]
[--nuc970-ecclayout][-i|--inband-tags]
dirname imgfile
Options:
-h display this help message and exit.
-e convert endian differed from local machine.
-v verbose details instead of progress bar.
-p pagesize page size of target device.
(512|2048(default)|4096|(8192|16384) bytes)
-s sparesize spare size of target device.
(default: pagesize/32 bytes; max: pagesize)
-o oobimage load external oob image file.
--all-root all files in the target system are owned by root.
--yaffs-ecclayout use yaffs oob scheme instead of the Linux MTD default.
--nuc970-ecclayout use nuc970 oob scheme instead of the Linux MTD default.
-b nuc970-bch The BCH algorithm is used to select the ECC algorithm
for data protecting.
(0:BCH_T4(default)|1:BCH_T8|2:BCH_T12|3:BCH_T15|4:BCH_T24)
--inband-tags Using in-band tags.
mkyaffs2 0.2.9 - A utility to make the yaffs2 image
Usage: mkyaffs2 [-h|--help] [-e|--endian] [-v|--verbose]
[-p|--pagesize pagesize] [-s|sparesize sparesize]
[-o|--oobimg oobimage] [--all-root] [--yaffs-ecclayout]
dirname imgfile
Options:
-h display this help message and exit.
-e convert endian differed from local machine.
-v verbose details instead of progress bar.
-p pagesize page size of target device.
(512|2048(default)|4096|(8192|16384) bytes)
-s sparesize spare size of target device.
(default: pagesize/32 bytes; max: pagesize)
-o oobimage load external oob image file.
--all-root all files in the target system are owned by root.
--yaffs-ecclayout use yaffs oob scheme instead of the Linux MTD default.
最近编辑记录 Gentlepig (2019-07-17 14:25:29)
离线
哈,两年半后再次编译nuc972 buildroot,又遇到了同样的问题,竟然搜到了之前的求助帖。
关于第二个问题,现在还是修改/etc/profile文件,/u显示用户名,/h显示主机明,/w显示路径。
其实,如果能在buildroot里设置修改完就好了。
现在又多了个问题。发现之前构建的根文件系统里/sbin目录下有reboot命令,这次我构建的根文件系统里,没有reboot这个命令。
群友说这个是busybox实现的,但我在make busybox-menuconfig里搜reboot,没搜到相关。
那么,如何增加reboot命令呢?
-------------------------------------
哈,不知道动了哪里,现在有reboot命令了。
最近编辑记录 Gentlepig (2023-01-18 09:04:37)
离线