tiny 210 编译出错解决/init: line 103: can't open /r/dev/console: no such file

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://blog.csdn.net/piaozhiye

环境是ubuntu 11.04,tiny210 的默认配置编译。


/init: line 103: can't open /r/dev/console: no such file

[    3.185580] Kernel panic - not syncing: Attempted to kill init!
原因是因为友善提供的生成文件系统的脚本中 genrootfs.sh: 16function mvapk出错,其功能是向文件系统增加一些文件,向我们提供的命令,
在生成rootfs没有使用就直接注册掉就OK了。 
./genrootfs.sh: 16: Syntax error: "(" unexpected

修改后的如下:
     1	#!/bin/sh
     2	
     3	PRODUCT=smdkv210
     4	
     5	echo -n "Generating rootfs for Android..."
     6	rm -fr rootfs_dir
     7	cp -a out/target/product/${PRODUCT}/root/ rootfs_dir 
     8	cp -a out/target/product/${PRODUCT}/system/* rootfs_dir/system
     9	cp -a out/target/product/${PRODUCT}/data/* rootfs_dir/data
    10	chown root:root rootfs_dir -R
    11	chmod 755 rootfs_dir/system/etc/dhcpcd/dhcpcd-run-hooks
    12	chown 1014:2000 rootfs_dir/system/etc/dhcpcd/dhcpcd-hooks -R
    13	chown 1000:1000 rootfs_dir/data -R
    14	echo "...done"
    15	#function mvapk(){
    16	#echo "move android apps..."
    17	#	mv $1 rootfs_dir/mnt/apps
    18	#	echo "    $1"
    19	#echo "move android apps done"
    20	#}
    21	if [ "${PRODUCT}" = "smdkv210" ]; then
    22		echo -n "Create device file..."
    23		mkdir rootfs_dir/dev/input
    24		mknod rootfs_dir/dev/tty c 5 0
    25		mknod rootfs_dir/dev/console c 5 1
    26		mknod rootfs_dir/dev/fb0 c 29 0
    27		mknod rootfs_dir/dev/pointercal c 10 119
    28		mknod rootfs_dir/dev/input/event1  c 13 65
    29		mknod rootfs_dir/dev/ts-if c 10 185
    30		mknod rootfs_dir/dev/touchscreen c 10 180
    31		mknod rootfs_dir/dev/touchscreen-1wire c 10 181
    32		mknod rootfs_dir/dev/s3c2410_serial0 c 204 64
    33		mknod rootfs_dir/dev/s3c2410_serial3 c 204 67
    34		echo "...done"
    35	
    36		echo -n "Install prebuilt packages..."
    37		if [ -f vendor/samsung/common/busybox-bin.tgz ]; then
    38			tar xf vendor/samsung/common/busybox-bin.tgz -C rootfs_dir/system
    39			ln -sf /system/busybox/bin/busybox rootfs_dir/system/bin/sh
    40			mkdir -p rootfs_dir/bin && ln -sf /system/busybox/bin/sh rootfs_dir/bin/sh
    41		fi
    42		if [ -f vendor/samsung/common/iwtools-bin.tgz ]; then
    43			tar xf vendor/samsung/common/iwtools-bin.tgz -C rootfs_dir/system/bin
    44		fi
    45		echo "...done"
    46	
    47		echo -n "Install kernel modules and firmware..."
    48		if [ -f vendor/samsung/smdkv210/firmware.tgz ]; then
    49			tar xf vendor/samsung/smdkv210/firmware.tgz -C rootfs_dir/system/etc
    50		fi
    51		if [ -f vendor/samsung/smdkv210/kernel-modules.tgz ]; then
    52			tar xf vendor/samsung/smdkv210/kernel-modules.tgz -C rootfs_dir/system/lib
    53			find rootfs_dir/system/lib/modules/ -name modules.* \
    54					-o -name source -o -name build | xargs rm -rf
    55		fi
    56		echo "...done"
    57	
    58		echo -n "Install proprietary-open files..."
    59		[ -f FriendlyARMData.tgz ] && tar xf FriendlyARMData.tgz -C rootfs_dir
    60		echo "...done"
    61	
    62	
    63	    cp vendor/friendly-arm/mini210/rootdir/* rootfs_dir/ -af
    64	
    65		chown 1000:1000 rootfs_dir/data/app -R
    66		chmod 775 rootfs_dir/data/app
    67		chmod 664 rootfs_dir/data/app/*.apk
    68	
    69	    find rootfs_dir/ -name CVS -type d  | xargs rm -rf
    70	fi
    71	


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
tinyxml2中,您可以使用`Attribute`和`SetAttribute`函数来获取和设置指定元素下的属性值。以下是一个示例代码: ```cpp #include <iostream> #include <tinyxml2.h> using namespace tinyxml2; int main() { XMLDocument doc; doc.LoadFile("example.xml"); // 加载XML文件 // 获取根节点 XMLElement* root = doc.FirstChildElement("root"); if (root == nullptr) { std::cerr << "Failed to load root element." << std::endl; return 1; } // 获取指定元素下的属性值 XMLElement* element = root->FirstChildElement("child"); if (element != nullptr) { const char* attributeValue = element->Attribute("attribute"); if (attributeValue != nullptr) { std::cout << "Attribute value: " << attributeValue << std::endl; } else { std::cerr << "Failed to get attribute value." << std::endl; return 1; } } else { std::cerr << "Failed to find child element." << std::endl; return 1; } // 设置指定元素下的属性值 element->SetAttribute("attribute", "new_value"); // 保存修改后的XML文件 doc.SaveFile("example.xml"); return 0; } ``` 在上述代码中,我们首先使用`LoadFile`函数加载XML文件。然后,我们使用`FirstChildElement`函数获取根节点。接下来,我们使用`FirstChildElement`函数获取指定元素(例如"child")。然后,我们使用`Attribute`函数获取该元素的属性值,并将其打印出来。如果要设置属性值,您可以使用`SetAttribute`函数来更新属性值。最后,我们使用`SaveFile`函数保存修改后的XML文件。 请确保您已经安装了tinyxml2库,并将其包含在您的项目中。您还需要将示例代码中的`example.xml`替换为您要操作的实际XML文件的路径。 希望对您有所帮助!如有任何疑问,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值