-
好像没错呀,我查看了2.3的源码,init.rc确实是从init_sdmmc.rc里面转过来的。我现在这个版本4.0.4是这样定义的:
ifeq ($(BOARD_SDMMC_BSP),true)
source_init_rc_file := $(LOCAL_PATH)/init.smdkv210_sdmmc.rc
else
source_init_rc_file := $(LOCAL_PATH)/init.smdkv210.rc
endif
PRODUCT_COPY_FILES := \
$(source_init_rc_file):root/init.smdkv210.rc \
而且init.smdkv210_sdmmc.rc文件比init.rc文件少了很多内容,这样我就试着将init.rc中on fs部分修改成mount /dev/blkmmc0p2 /system这样。结果还是不行,同样还是找不到ramdisk。
Freeing init memory: 176K
init: /init.rc: 435: invalid option 'symlink'
init (1): /proc/1/oom_adj is deprecated, please use /proc/1/oom_score_adj instead.
init: cannot open '/initlogo.rle'
EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Opts: (null)
EXT4-fs (mmcblk0p3): recovery complete
EXT4-fs (mmcblk0p3): mounted filesystem with ordered data mode. Opts: (null)
EXT4-fs (mmcblk0p4): recovery complete
EXT4-fs (mmcblk0p4): mounted filesystem with ordered data mode. Opts: (null)
init: cannot find '/system/bin/servicemanager', disabling 'servicemanager'
init: cannot find '/system/bin/vold', disabling 'vold'
init: cannot find '/system/vendor/bin/pvrsrvinit', disabling 'pvrsrvinit'
init: cannot find '/system/bin/netd', disabling 'netd'
init: cannot find '/system/bin/debuggerd', disabling 'debuggerd'
init: cannot find '/system/bin/rild', disabling 'ril-daemon'
init: cannot find '/system/bin/surfaceflinger', disabling 'surfaceflinger'
init: cannot find '/system/bin/app_process', disabling 'zygote'
init: cannot find '/system/bin/drmserver', disabling 'drm'
mfc_firmware_request_complete_handler: failed to load MFC F/W, MFC will not working
init: cannot find '/system/bin/mediaserver', disabling 'media'
init: cannot find '/system/bin/dbus-daemon', disabling 'dbus'
init: cannot find '/system/bin/installd', disabling 'installd'
init: cannot find '/system/etc/install-recovery.sh', disabling 'flash_recovery'
init: cannot find '/system/bin/keystore', disabling 'keystore'
init: property (null) has no value for writing to /sys/class/android_usb/android0/iManufacturer
init: property (null) has no value for writing to /sys/class/android_usb/android0/iProduct
init: cannot find '/system/bin/sh', disabling 'console'
android_usb: already disabled
adb_bind_config
warning: `adbd' uses 32-bit capabilities (legacy support in use)
android_work: did not send uevent (0 0 (null))
adb_open
android_work: sent uevent USB_STATE=CONNECTED
android_usb gadget: high speed config #1: android
android_work: sent uevent USB_STATE=CONFIGURE
直接将init.rc用替换init.smdkv_sdmmc.rc,也起不来。
-
我编译出来的源码,out/target/product/smdkv210/root/ 有一个init.rc还有一个是init.smdkv210.rc. 其中init.rc是system/core/rootdir/下面的init.rc转过来的,init.smdkv210.rc是device/下 init.smdkv210_sdmmc.rc转过来的,这样应该是没有问题的呀。 我试过将init.rc里面关于mount fs这段修改成我上面说的那种 mount /dev/mmcblk0p2 /system这种形式,就不会存在:
yaffs: dev is 32505860 name is "mtdblock4" rw
yaffs: yaffs: Attempting MTD mount of 31.4,"mtdblock4"
yaffs: yaffs_read_super: is_checkpointed 1
yaffs: dev is 32505862 name is "mtdblock6" rw
yaffs: yaffs: Attempting MTD mount of 31.6,"mtdblock6"
yaffs: yaffs_read_super: is_checkpointed 0
yaffs: dev is 32505861 name is "mtdblock5" rw
yaffs: yaffs: Attempting MTD mount of 31.5,"mtdblock5"
yaffs: yaffs_read_super: is_checkpointed 0
这种信息。 一旦还原的话,就会存在。
需不需要有传递给kernel的参数?像这样的 CONFIG_BOOTARGS root=/dev/mmcblk0p2
-
我现在的system.img,不是mkyaffs2image编译出来的,应该是mk_ext4这个编译出来的,具体我没深究这个,因为现在直接用file命令查看很容易就看出它是不是ext4格式的,至于楼主您说的ramdisk还是yaffs格式的,这个我还真不会看,因为我烧进sd卡中的也是ramdisk-uboot.img. file 命令查看这个ramdisk-uboot.img好像也是对的,怎么样才能确定ramdisk也做成了ext4格式的呢?:Cry:
-
另外,我的init.rc也改成如下了:应该是没有问题,实在找不到原因了。
on fs
# mount mtd partitions
# Mount /system rw first to give the filesystem a chance to save a checkpoint
#mount yaffs2 mtd@system /system
mount ext4 /dev/mmcblk0p2 /system
chown root /system/bin/pppd
chmod 4755 /system/bin/pppd
chmod 0755 /system/lib/libztewcdma-ril.so
mount ext4 /dev/mmcblk0p2 /system ro remount
mount ext4 /dev/mmcblk0p3 /data nosuid nodev
mount ext4 /dev/mmcblk0p4 /cache nosuid nodev
#mount yaffs2 mtd@system /system ro remount
#mount yaffs2 mtd@userdata /data nosuid nodev
#mount yaffs2 mtd@cache /cache nosuid nodev
-
版主啊,现在按你的方法试了,还是挂载不上文件系统。以前的yaffs2已经没有了,证明system.img已经是ext4格式的,并且file 查看也正确。但是报错如下:
Freeing init memory: 176K
init: /init.rc: 422: invalid option 'symlink'
init (1): /proc/1/oom_adj is deprecated, please use /proc/1/oom_score_adj instead.
init: cannot open '/initlogo.rle'
EXT4-fs (mmcblk0p2): recovery complete
EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Opts: (null)
EXT4-fs (mmcblk0p3): recovery complete
EXT4-fs (mmcblk0p3): mounted filesystem with ordered data mode. Opts: (null)
EXT4-fs (mmcblk0p4): recovery complete
EXT4-fs (mmcblk0p4): mounted filesystem with ordered data mode. Opts: (null)
init: cannot find '/system/bin/servicemanager', disabling 'servicemanager'
init: cannot find '/system/bin/vold', disabling 'vold'
init: cannot find '/system/vendor/bin/pvrsrvinit', disabling 'pvrsrvinit'
init: cannot find '/system/bin/netd', disabling 'netd'
init: cannot find '/system/bin/debuggerd', disabling 'debuggerd'
init: cannot find '/system/bin/rild', disabling 'ril-daemon'
init: cannot find '/system/bin/surfaceflinger', disabling 'surfaceflinger'
init: cannot find '/system/bin/app_process', disabling 'zygote'
init: cannot find '/system/bin/drmserver', disabling 'drm'
init: cannot find '/system/bin/mediaserver', disabling 'media'
init: cannot find '/system/bin/dbus-daemon', disabling 'dbus'
init: cannot find '/system/bin/installd', disabling 'installd'
init: cannot find '/system/etc/install-recovery.sh', disabling 'flash_recovery'
mfc_firmware_request_complete_handler: failed to load MFC F/W, MFC will not working
init: cannot find '/system/bin/keystore', disabling 'keystore'
init: property (null) has no value for writing to /sys/class/android_usb/android0/iManufacturer
init: property (null) has no value for writing to /sys/class/android_usb/android0/iProduct
init: cannot find '/system/bin/sh', disabling 'console'
android_usb: already disabled
adb_bind_config
warning: `adbd' uses 32-bit capabilities (legacy support in use)
android_work: did not send uevent (0 0 (null))
adb_open
android_work: sent uevent USB_STATE=CONNECTED
android_usb gadget: high speed config #1: android
android_work: sent uevent USB_STATE=CONFIGURED
是我的分区问题吗?又该如何分区呢?
-
可是我重新打包的system.img并没有修改驱动方面的东西呀,即使对于生成的out/target/product/smdkv210/system/ 这个目录,什么都不作修改,用mkyaffs2image工具重新打包成system.img,下到板子上,就会出错。
-
嗯~谢谢版主。
另外我还有别的一个问题想请教一下,用的android4.0系统编译出来的system能够正常跑,但是我将system重新用mkyaffs2image打包之后,系统就跑不起来了,是什么原因呢。我重新打包的时候,只是将out/target/product/smdkv210/system/usr/idc/里面的一个文件换了个名字, 即将上s3c_ts.idc换成了sis9200_i2c_touchscreen.idc. 这个文件只是和触摸屏有关的,但是重新打包之后,就出现PVR_K:(Error): BridgedDispatchKM: Driver initialisation not completed yet. [4799, drivers/gpu/pvr/bridged_pvr_bridge.c]。 用原来的就行。
-
好像最后4.0里面有个脚本mkusering.sh,会调用make_ext4fs这个命令,把system做成ext4格式的。我这俩天要调一个touchscreen驱动,调完了才能继续SD卡制作。还是想多向版主请教一些。你说的工具主要都是重新制作system的,但是ramdisk怎么办呢,我最头痛的是ramdisk,看别人工具里都mkext3image这样的工具,我这源码里只有mkyaffs2image。
还有我的uboot好像确实是比较老1.3.4版本的,里面的命令找不到ext4format,只有ext2和ext3,这样应该能通过吧,因为内核选项里有use ext4 for ext2 and ext3.
-
system 6M的肯定起不来呀,可能就像版主说的,2.3的系统存在问题,还是什么的。
-
谢谢版主的解答,我的uboot分区已经是更改了的,原来应该是250M的,但是我用android4.0系统编译出来的system有260M,所以就改了这个:
#ifdef CONFIG_S5PC110
//#define SYSTEM_PART_SIZE (256*1024*1024)
#define SYSTEM_PART_SIZE (384*1024*1024)
#else
#define SYSTEM_PART_SIZE (384*1024*1024)
#endif
//#define USER_DATA_PART_SIZE (350*1024*1024)
#define USER_DATA_PART_SIZE (322*1024*1024)
另外版主说的2.3.1这个版本有问题,给了我一个安慰。因为我用这个版本用制作SD卡镜像的这种方式编译出来的system只有6M。 制作SD卡镜像ramdisk一定要用ext2格式的吗? ramdisk好像是脚本里面自动生成的,制作起来好像也比较麻烦。能不能给点方法怎么去处理?
-
按着版主的说法做了 erase userdata和cache,可是erase system会报错,找不到这个分区。还有把镜像重新打包成ext2格式,这个镜像是ramdisk,而不是system.img?
另外我还想问的就是:把系统制作在sd卡中,其实android代码里就是打开这个宏就可以了,BOARD_SDMMC_BSP := true.还是需要有别的改动?
Freeing init memory: 176K
init: /init.rc: 418: invalid option 'symlink'
init (1): /proc/1/oom_adj is deprecated, please use /proc/1/oom_score_adj instea
d.
init: cannot open '/initlogo.rle'
yaffs: dev is 32505860 name is "mtdblock4" rw
yaffs: yaffs: Attempting MTD mount of 31.4,"mtdblock4"
yaffs: yaffs_read_super: is_checkpointed 1
yaffs: dev is 32505862 name is "mtdblock6" rw
yaffs: yaffs: Attempting MTD mount of 31.6,"mtdblock6"
yaffs: yaffs_read_super: is_checkpointed 0
yaffs: dev is 32505861 name is "mtdblock5" rw
yaffs: yaffs: Attempting MTD mount of 31.5,"mtdblock5"
yaffs: yaffs_read_super: is_checkpointed 0
EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Opts: (null)
EXT4-fs (mmcblk0p3): warning: checktime reached, running e2fsck is recommended
EXT4-fs (mmcblk0p3): mounted filesystem with ordered data mode. Opts: (null)
EXT4-fs (mmcblk0p4): warning: checktime reached, running e2fsck is recommended
EXT4-fs (mmcblk0p4): mounted filesystem with ordered data mode. Opts: (null)
init: cannot find '/system/bin/servicemanager', disabling 'servicemanager'
init: cannot find '/system/bin/vold', disabling 'vold'
init: cannot find '/system/vendor/bin/pvrsrvinit', disabling 'pvrsrvinit'
init: cannot find '/system/bin/netd', disabling 'netd'
init: cannot find '/system/bin/netd', disabling 'netd'
init: cannot find '/system/bin/rild', disabling 'ril-daemon'
init: cannot find '/system/bin/surfaceflinger', disabling 'surfaceflinger'
init: cannot find '/system/bin/app_process', disabling 'zygote'
init: cannot find '/system/bin/drmserver', disabling 'drm'
init: cannot find '/system/bin/mediaserver', disabling 'media'
init: cannot find '/system/bin/dbus-daemon', disabling 'dbus'
init: cannot find '/system/bin/installd', disabling 'installd'
init: cannot find '/system/etc/install-recovery.sh', disabling 'flash_recovery'
init: cannot find '/system/bin/keystore', disabling 'keystore'
init: property (null) has no value for writing to /sys/class/android_usb/android
0/iManufacturer
init: property (null) has no value for writing to /sys/class/android_usb/android
0/iProduct
init: cannot find '/system/bin/sh', disabling 'console'
mfc_firmware_request_complete_handler: failed to load MFC F/W, MFC will not work
ing
android_usb: already disabled
adb_bind_config
adb_open
android_work: did not send uevent (0 0 (null))
android_work: sent uevent USB_STATE=CONNECTED
android_usb gadget: high speed config #1: android
android_work: sent uevent USB_STATE=CONFIGURED
我的系统跑到这里就死掉了,应该还是文件系统没做好,不知道什么原因。
-
你好,楼主,我现在正好也在做这个sd卡,同样是android文件系统起不来,kernel和uboot都正常,能不能给点指导啊?