Android(安卓)系统初探
Android 系统初探时 间:2009年7月 姓 名:赵舜东 |
实验目的:针对Google 的Android 系统进行初步的分析 实验环境:Red Hat Enterprise Linux Server release 5.3+Android 0.2 实验步骤: 一、android系统简介及下载 二、在虚拟机中运行使用 三、对系统进行初步分析
实验内容: 一、android系统简介及下载
(一)Android系统简介(摘自百度百科) android一词的本义指“机器人”,同时也是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件。 Android 是Google开发的基于Linux平台的开源手机操作系统。它包括操作系统、用户界面和应用程序 —— 移动电话工作所需的全部软件,而且不存在任何以往阻碍移动产业创新的专有权障碍。Google与开放手机联盟合作开发了 Android,这个联盟由包括中国移动、摩托罗拉、高通、宏达电和 T-Mobile 在内的 30 多家技术和无线应用的领军企业组成。Google通过与运营商、设备制造商、开发商和其他有关各方结成深层次的合作伙伴关系,希望借助建立标准化、开放式的移动电话软件平台,在移动产业内形成一个开放式的生态系统。 (二)Andriod 软件层次结构 (三)应用程序架构 Android 运行在 Linux 内核上。Android 应用程序是用 Java 编程语言编写的,它们在一个虚拟机(VM)中运行。需要注意的是,这个 VM 并非您想象中的 JVM,而是 Dalvik Virtual Machine,这是一种开源技术。每个 Android 应用程序都在 Dalvik VM 的一个实例中运行,这个实例驻留在一个由 Linux 内核管理的进程中,如下图所示。 二、在虚拟机中运行
三、对系统进行初步分析
(一)查看系统构成
[root@UnixHot ~]# mount -o loop liveandroidv0.2.iso /mnt [root@UnixHot ~]# cd /mnt [root@UnixHot mnt]# ls 该LiveCD共10个文件 boot.cat cmdline data.sqs initlogo.rle isolinux.bak isolinux.bin isolinux.cfg kernel ramdisk system.sqs [root@UnixHot mnt]# mkdir /usr/local/src/android [root@UnixHot mnt]# cp -r * /usr/local/src/android/ [root@UnixHot mnt]# cd /usr/local/src/android/ [root@UnixHot android]# ls -l total 178976 -r-xr-xr-x 1 root root 2048 Jul 27 23:40 boot.cat -r-xr-xr-x 1 root root 86 Jul 27 23:40 cmdline -r-xr-xr-x 1 root root 1396736 Jul 27 23:40 data.sqs -r-xr-xr-x 1 root root 49756 Jul 27 23:40 initlogo.rle -r-xr-xr-x 1 root root 76 Jul 27 23:40 isolinux.bak -r-xr-xr-x 1 root root 14336 Jul 27 23:40 isolinux.bin -r-xr-xr-x 1 root root 162 Jul 27 23:40 isolinux.cfg -r-xr-xr-x 1 root root 2191184 Jul 27 23:40 kernel -r-xr-xr-x 1 root root 2113331 Jul 27 23:40 ramdisk -r-xr-xr-x 1 root root 177246208 Jul 27 23:40 system.sqs 1.[root@UnixHot android]# file boot.cat boot.cat: data 2.[root@UnixHot android]# file cmdline cmdline: ASCII text 3.[root@UnixHot android]# file data.sqs data.sqs: Squashfs filesystem, little endian, version 3.1, 0 bytes, 8 inodes, blocksize: 131072 bytes, created: Tue May 19 00:24:03 2009 4.[root@UnixHot android]# file initlogo.rle initlogo.rle: 5.[root@UnixHot android]# file isolinux.bak isolinux.bak: ASCII text, with CRLF line terminators 6.[root@UnixHot android]# file isolinux.bin isolinux.bin: data 7.[root@UnixHot android]# file isolinux.cfg isolinux.cfg: ASCII text, with CRLF line terminators 8.[root@UnixHot android]# file kernel kernel: Linux kernel x86 boot executable RO-rootFS, root_dev 0x801, swap_dev 0x2, Normal VGA 9.[root@UnixHot android]# file ramdisk ramdisk: gzip compressed data, from Unix, last modified: Fri Jul 3 00:35:37 2009, max compression 10.[root@UnixHot android]# file system.sqs system.sqs: Squashfs filesystem, little endian, version 3.1, 0 bytes, 321 inodes, blocksize: 131072 bytes, created: Fri Jul 3 19:17:43 2009 通过使用file命令查看文件类型,发现三个文本文件 1.[root@UnixHot android]# cat isolinux.bak default android 引导启动项 label android kernel kernel append initrd=ramdisk 2.[root@UnixHot android]# cat isolinux.cfg default android label android kernel kernel append initrd=ramdisk console=tty0 console=ttyS1,115200n8 console=tty0 androidboot.hardware=eee_701 vga=788 3.[root@UnixHot android]# cat cmdline console=tty0 console=ttyS1,115200n8 console=tty0 androidboot.hardware=eee_701 vga=788 设置了ttyS1串口的波特率等信息
(二)查看squashfs 压缩格式的文件
system.sqs和data.sqs为squashfs 类型文件,下面我们把这两个压缩文件解开:
1.下载squashfs4.0.tar.ga [root@UnixHot ~]# wget http://ncu.dl.sourceforge.net/project/squashfs/squashfs/ \ squashfs4.0/squashfs4.0.tar.gz [root@UnixHot ~]# mv squashfs4.0.tar.gz /usr/local/src [root@UnixHot ~]#cd /usr/local/src 2.解压软件包[root@UnixHot ~]#tar xvf squashfs4.0.tar.gz [root@UnixHot ~]# cd squashfs4.0/squashfs-tools/ 3.编译软件包 [root@UnixHot squashfs-tools]# make 4.编译好会生成mksquashfs和unsquashfs两个命令,下面使用unsquashfs解压包 [root@UnixHot android]#/usr/local/src/squashfs4.0/squashfs-tools/unsquashfs data.sqs [root@UnixHot android]# ls -R squashfs-root/ squashfs-root/: app location squashfs-root/app: ApiDemos.apk squashfs-root/location: gps squashfs-root/location/gps: location nmea properties
5.解压system.sqs [root@UnixHot android]# mv squashfs-root/ data [root@UnixHot android]# /usr/local/src/squashfs4.0/squashfs-tools/unsquashfs system.sqs [root@UnixHot android]# mv squashfs-root/ system 该目录是系统启动后的根目录
(三)查看initrd 这个img文件
[root@UnixHot android]# gunzip < ramdisk > init [root@UnixHot android]# mkdir initrd [root@UnixHot android]# cd initrd [root@UnixHot initrd]# cpio -ivmd < ../init [root@UnixHot initrd]# ls bin default.prop init init.goldfish.rc init.rc init.rc.bk2 lib sbin system data dev init.eee_701.rc initlogo.rle init.rc.back init.rc.bk3 proc sys
实验答疑:zhaoshundong@hotmail.com
相关作品:http://www.unixhot.com http://www.bosshot.com |
更多相关文章
- Android4.1.1下关于采用File.createTempFile创建的临时文件存放
- Android:StatFs类 获取系统/sdcard存储空间信息
- Android手机隐藏命令大全
- android—AOSP、AOKP、CM的区别
- 【源代码】基于Android和蓝牙的单片机温度採集系统
- adb shell 查看系统属性(用来判断特殊的操作系统)
- Android(安卓)6.0运行时权限 (危险权限)
- Android+本地记事本(上)------实现登陆注册
- Android(安卓)危险权限、权限组列表和所有普通权限