【问题】
在用buildroot-2009.08,但是,在make之后,虽然
project_build_arm/uclibc/下面会有root文件夹,有对应的rootfs文件,但是其
project_build_arm/uclibc/root/dev/下面的设备文件,都是普通文件:
-rw-r----- 1 root root 0 2010-01-29 16:53 project_build_arm/uclibc/root/dev/mtdblock1 -rw-r----- 1 root root 0 2010-01-29 16:53 project_build_arm/uclibc/root/dev/mtdblock2 -rw-r----- 1 root root 0 2010-01-29 16:53 project_build_arm/uclibc/root/dev/mtdblock3
而不是此类的设备文件:
brw-r----- 1 root root 31, 2 2010-01-29 16:58 project_build_arm/uclibc/root/dev/mtdblock2
【解决办法】
注意到,在make的时候,显示的:
echo "/home/eric/buildroot/buildroot-2009.08/build_arm/host_dir/usr/bin/makedevs -d target/generic/device_table.txt /home/eric/buildroot/buildroot-2009.08/project_build_arm/uclibc/root"
所以,先去删除已经生成的那些普通文件:
[root@linux-41lh buildroot-2009.08]$rm project_build_arm/uclibc/root/dev/* -rf
再去单独调用此工具去生成对应的 device file:
[root@linux-41lh buildroot-2009.08]$/home/eric/buildroot/buildroot-2009.08/build_arm/host_dir/usr/bin/makedevs -d target/generic/device_table.txt /home/eric/buildroot/buildroot-2009.08/project_build_arm/uclibc/root rootdir=/home/eric/buildroot/buildroot-2009.08/project_build_arm/uclibc/root table='target/generic/device_table.txt'
就可以正常生成设备文件了:
[root@linux-41lh buildroot-2009.08]$ls project_build_arm/uclibc/root/dev/* -l crw-rw-rw- 1 root root 5, 1 2010-01-29 16:58 project_build_arm/uclibc/root/dev/console crw-r----- 1 root tty 29, 0 2010-01-29 16:58 project_build_arm/uclibc/root/dev/fb0 crw-r----- 1 root tty 29, 1 2010-01-29 16:58 project_build_arm/uclibc/root/dev/fb1 。。。 brw-r----- 1 root root 31, 2 2010-01-29 16:58 project_build_arm/uclibc/root/dev/mtdblock2 brw-r----- 1 root root 31, 3 2010-01-29 16:58 project_build_arm/uclibc/root/dev/mtdblock3 。。。
如果上面不删除旧的那些普通文件就直接调用mkdev生成新的设备文件,那么就会显示文件已存在,而无法创建。所以,总的来说,貌似是buildroot对mkdev的调用有问题。
其根本原因,后来搞清楚了,详情参考:
【workaround】buildroot下面make编译,最后生成的rootfs中的特殊的设备文件,实际是普通文件
转载请注明:在路上 » 【已解决】buildroot-2009.08中的mkdev制作rootfs的设备文件 好像有问题