西格玛向量™

U盘中打造属于自己的Linux ——总论篇

作者: 西玛哒   分类: IT悟语, Linux, 老西常谈   标签:    评论: 4

操作系统是日常生活中和电脑打交道的人们最离不开的东西了,而操作系统大部分时候都不是属于自己的,毕竟微软的瘟到死是商业产品。好在GNU救了我们,Linux用开源让我们能够有机会深入了解操作系统的核心。
之前就想过,希望能在U盘里面揣上一个属于自己的随身操作系统,感觉是一件十分有面子的事情,怎奈不知如何实现,去年搞定了量产事件,将WinPE安到了U盘上,虽然好用,然一知半解总觉得不爽。
最近朱大神留了关于U盘linux的作业,这才鼓起勇气想在U盘上写个Linux试试,怎料此路艰辛,自开始制作已经月余,至今算是有了雏形,对于我这个菜鸟来说可谓是一波N折,却也真的是收获良多。
近日同组同学多有询问,也想借此机会复习一下,分享经验,于是懒洋洋的动手开始胡言乱语一篇,仅供参考。
诸位路过之神若有斧正、指教之处我将感激不尽…..
——是为前记

一、    需求分析:
2.0时代U盘的速度毕竟无法和你电脑里的SATA硬盘的传输速度相提并论,所以直接从U盘分区里启动是不现实的,其实正常Linux的启动也是通过内存交换启动。所以对于U盘的限制不是很严重。一个状态尚佳的U盘,1G足矣(什么?64的?你可以考虑当文物卖掉…..)
我们的需求是 : 1、 电脑可以从U盘引导。
2、 引导程序在内存中创建临时系统
3、 临时系统完成引导工作后,将权力交给写在U盘分区中的真正的文件系统。启动完成。
我们实现所需的东西:
1、    U盘1个
2、    装有Linux的机器,建议使用虚拟机
3、    网络! 速度不能太教育网……..
4、    时间和耐心。
二、    实现方式:
首先复习一下Linux的启动过程:
(参考文献:朱大神的Linux课程课件06_Linux的启动和关闭)
1、    BIOS   从某个设备引导  ->  HDD 或其他格式的可引导U盘
读取硬盘最开始的512B(MBR+DPL) 初始化引导程序
2、    Boot Loader  引导程序: 著名的Grub 或是Lilo 或syslinux;
Stage1-> stage1.5->stage2(参数) -> 用户菜单
选择&&引导kernel(内核)
3、    Kernel 编译好的内核文件:    /boot/vmlinuz
一般如下格式:bzImage(x86平台 >1M)
zImage  (<640k)
BootLoader对内核进行解压,三段工作…(此处省去N行….)
4、    Initrd  由Kernel调用initrd临时文件系统:
Initrd -> init (按/etc/inittab进行启动,大部分的init为/sbin/init)
启动服务: /etc/init.d/ rcS       :启动
rc 0 / 1 / …  :级别N的服务
rcK      : 停止
5、    Switch_root  initrd中的临时文件系统 调用switch_root 命令
Initramfs -> switch_root -> dev/sda/ (U盘下的root)

分析后我们知道,U盘linux的核心部分为 内核 initrd 以及在U盘/ 下的root文件系统。
内核可以通过下载源码,自行编译进行获得,并且可以定制和裁剪,非常方便。
Initrd文件系统可以直接从宿主linux中拷贝initrd.img 文件进行测试,但是为了学习目的,我们将尝试自己写一个临时文件系统。我们有一个强大的助手: 一个叫做busybox的软件包,可以解决文件系统的大部分功能。
U盘下的系统就好说了,其实可以完全拷贝的,这样就可以启动U盘linux了。

如果你觉得很乱,不要紧,着仅仅是原理部分,接下来的几章将分布实现相关功能:
一、    U盘的前期准备工作:格式化和量产。

U盘中打造属于自己的Linux (一)U盘的前期处理(上):量产

U盘中打造属于自己的Linux (一)U盘的前期处理(下):格式化与初级BootLoader设置

U盘中打造属于自己的Linux (二)BootLoader和内核(上):BootLoader高级设置

二、    灵魂所在:Linux内核编译。

U盘中打造属于自己的Linux (二)BootLoader和内核(下):初识内核 -

U盘中打造属于自己的Linux (三) :内核编译(上)MakeFile

U盘中打造属于自己的Linux (三) :内核编译(中)大刀向内核的头上砍去 –

U盘中打造属于自己的Linux (三)
:内核编译(下)initrd简介与内核配置

三、    内存里的Linux: initramfs文件系统step by step。

U盘中打造属于自己的Linux (四) :自己写 initrd step by step(上)

U盘中打造属于自己的Linux (四)
:自己写 initrd step by step(下)

四、    后期处理和补遗: 跑起Linux。

U盘中打造属于自己的Linux
(Final) :switch_root转移乾坤


到此 U盘linux就完成了 补遗和说明将在此文处更新。

======================================================

// 更新于 2011年2月21日   修复了链接

// 文章已经陈旧  希望发现BUG者不吝赐教

anyShare分享到: U盘中打造属于自己的Linux ——总论篇
          
05-25
2009
loading...