Linux启蒙之系统裁剪(一)

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.设备驱动裁剪

(未完待续)

你可能感兴趣的:(Linux启蒙之系统裁剪(一))