Android内核和普通Linux根文件系统的配合

roamer888 2012-05-01 12:35:50
请问一下,在一个Android平台上,我不想用Android平台自带的根文件系统(主要是太复杂),而用一个在其他嵌入式Linux根文件系统,这中间需要对个这个根文件系统作特殊的配置吗?

现在这种融合的系统基本上能跑起来,但是网络接口上有点问题,在TCP传输一阵子之后,系统会完全死掉,串口上没有任何输出信息,core dump也没有,很郁闷。

麻烦各位高人指教一下!先谢过了!
...全文
559 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
yangf_2008 2013-04-09
  • 打赏
  • 举报
回复
arm linux 平台下是否可以调用android下动态库
roamer888 2012-05-04
  • 打赏
  • 举报
回复
最近发现,如果限制了网络传输速率,则不会死机。之前没有限速时,CPU占用率很高,95%以上;限速之后, CPU占用率低了一些。
不限速这种情况下,会不会是其他的进程/线程没有机会被执行而把系统挂死?ps一下,系统有如下进程:
# ps
PID USER TIME COMMAND
1 root 0:02 [swapper]
2 root 0:00 [kthreadd]
3 root 0:00 [ksoftirqd/0]
4 root 0:00 [watchdog/0]
5 root 0:00 [events/0]
6 root 0:00 [khelper]
9 root 0:00 [netns]
13 root 0:00 [async/mgr]
14 root 0:00 [pm]
17 root 0:00 [suspend]
163 root 0:00 [sync_supers]
165 root 0:00 [bdi-default]
167 root 0:00 [kblockd/0]
176 root 0:00 [khubd]
179 root 0:00 [kseriod]
184 root 0:00 [kmmcd]
194 root 0:00 [cfg80211]
286 root 0:00 [khungtaskd]
287 root 0:00 [kswapd0]
334 root 0:00 [aio/0]
343 root 0:00 [crypto/0]
932 root 0:00 [mtdblock0]
937 root 0:00 [mtdblock1]
942 root 0:00 [mtdblock2]
947 root 0:00 [mtdblock3]
952 root 0:00 [mtdblock4]
957 root 0:00 [mtdblock5]
962 root 0:00 [mtdblock6]
967 root 0:00 [mtdblock7]
971 root 0:00 [imapx200_ssim0.]
996 root 0:00 [gadget]
1002 root 0:00 [file-storage]
1027 root 0:00 [binder]
1042 root 0:00 [mmcqd]
1045 root 0:00 {linuxrc} init
1064 root 0:00 [flush-1:0]
1083 root 0:00 /usr/sbin/inetd
1097 root 0:00 -/bin/sh
1112 root 0:00 ps
roamer888 2012-05-04
  • 打赏
  • 举报
回复

另外,1号进程是swapper,而init的进程号是1045,这是不是有问题啊?1号进程应该是init才对吧?
CyberLogix 2012-05-03
  • 打赏
  • 举报
回复
但是网络接口上有点问题,在TCP传输一阵子之后,系统会完全死掉,串口上没有任何输出信息,core dump也没有,

这个是否是ROOTFS有关联,应该是网络库的问题或者其他方面的问题
roamer888 2012-05-02
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]
bionic C库,是android默认使用的C库,跟内核没有关系。如果没有修改,NDK中交叉编译使用的C库也是bionic。
在linux下跑android可以吧android看作是一个应用程序,他需要的库在/system/lib下,应该和你文件系统的/lib不冲突,也不能冲突。
android用了ramdisk机制,如果你不想用,完全可以绕过。kernel参数中root= 你现在的文件系统……
[/Quote]

谢谢你,解释的很清楚。
我用的也是ramdisk作为rootfs,但是我自己的ramdisk,压缩包大概有3MB,包含busybox、库、各种配置文件,以及我的应用程序。Android自带的ramdisk很小,只有100多KB,当然它会mount其他文件系统,如system和userdata。
我相当于完全抛弃了Android的文件系统,而使用自己的rootfs和库。我的应用程序也是基于这些库编译,所以不存在和Bionic C库冲突的问题,而且我还试过采用-static编译应用程序,仍然会出现问题。
看来得试试其它办法了。
念茜 2012-05-02
  • 打赏
  • 举报
回复
bionic C库,是android默认使用的C库,跟内核没有关系。如果没有修改,NDK中交叉编译使用的C库也是bionic。
在linux下跑android可以吧android看作是一个应用程序,他需要的库在/system/lib下,应该和你文件系统的/lib不冲突,也不能冲突。
android用了ramdisk机制,如果你不想用,完全可以绕过。kernel参数中root= 你现在的文件系统的根位置,相当与用你现在的文件系统做android的ramdisk
CyberLogix 2012-05-01
  • 打赏
  • 举报
回复
在initrc中配置根文件系统构建自己的rootfs
念茜 2012-05-01
  • 打赏
  • 举报
回复
android用的不是glibc而是bionic C库,android的网络操作依赖libnetutils。不同的C库有可能产生不同影响。
用ulimit打开core dump文件或者抓包,试试看吧
roamer888 2012-05-01
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
在initrc中配置根文件系统构建自己的rootfs
[/Quote]

这种做法是用的Android自带的根文件系统,然后把自己的文件系统mount在某个目录下?

我现在是直接把我的文件系统作为Android内核的根文件系统来使用,整个系统基本上跑起来了,只是有个应用程序跑起来有点不正常。

谢谢你的回复!
roamer888 2012-05-01
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
android用的不是glibc而是bionic C库,android的网络操作依赖libnetutils。不同的C库有可能产生不同影响。
用ulimit打开core dump文件或者抓包,试试看吧
[/Quote]

请问这个bionic C库是编译在内核里边的吗?可以修改内核配置(重新编译内核)使其支持glibc吗?如果不能,可以在Android下编译我现在的应用程序吗(NDK能做到?)?非常感谢你的回复,让我收益匪浅。

我的根文件系统是普通Linux的,/lib目录下的目前库文件也是普通Linux交叉编译的,目前有如以下文件
ld-2.5.so libc.so.6 libm.so.6 librt.so.1
ld-linux.so.3 libgcc_s.so.1 libpthread.so.0

80,352

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧