Linux启蒙之系统裁剪(一)
近日里,项目压力有所缓解,闲暇之余思索着总结一下自己近几年来在Linux上的一些学习心得,期望能有所提升。计划实现一个小的课题:完成自主操作系统shell访问的常规操作。
这个课题对Linux的融会贯通有所帮助,也提供一套系统快速移植的方法,很适合初学者。做这个课题需要掌握内存管理、进程调度、文件系统的基础知识,大概分为几个步骤:
- 一.系统裁剪
- 二.内存管理设计
- 三.进程调度设计
- 四.文件系统设计
- 五.串口驱动实现
- 六.中断设计
- 七.常用命令移植和设计
- 八.系统完善和调优
一.系统裁剪
为了裁剪得更痛快一些,这次课题选在Android智能手机上做。裁剪工作分为:安卓代码裁剪、设备驱动裁剪、平台无用代码裁剪。裁剪后得到代码最小集合,这个代码集合是维持Linux基础功能的核心所在。
手机平台选用某某arm平台,裁剪前的代码框架为:
yuziming@ubuntu:~/Linux_Demo$ ls
abi auto_dts_gen.log bootable build_hi6250.log cts development docs ets frameworks kernel libnativehelper ndk packages platform_testing sdk tools
art bionic build build_kirin.sh dalvik device Document external hardware libcore Makefile out pdk prebuilts system vendor
1.安卓代码裁剪
这部分裁剪工作就是无脑删删删,剖去Android的框架,获取底层Linux的精华。
删除目录为:
目录 | 说明 |
---|---|
/packages | 安卓应用宝 |
/abi | 应用二进制接口 |
/art | 安卓5.0以后的虚拟机 |
/dalvik | 安卓标准Java虚拟机 |
/platform_testing | 平台测试 |
/cts | 安卓兼容性测试套件 |
/ets | Framework分模块测试 |
/ndk | 应用嵌套c/c++支撑 |
/pdk | 本地开发套件 |
/sdk | 软件开发包 |
/docs | 参考文档目录 |
/tools | 工具文件 |
/Document | 参考文档 |
保留目录为:
目录 | 说明 |
---|---|
kernel | Linux内核代码 |
libnativehelper | 动态库,实现JNI库的基础 |
frameworks | 架构层 |
external | 安卓使用的一些开源模组文件 |
hardware | 部分厂家开源的硬件适配HAL代码 |
system | 底层文件系统库、应用及组件 |
libcore | java核心库 |
build | 存放系统编译规则及generic等基础开发包配置 |
bionic | 系统C库文件 |
bootloader | 启动引导相关代码 |
prebuilts | 预编译的一些资源 |
device | 设备相关代码 |
vendor | 厂商定制代码 |
以上代码虽然保留,但并非全部有用,大部分是build系统建立了依赖,删除后会报编译错误,所以暂时保留。
.
2.设备驱动裁剪
(未完待续)