U盘中打造属于自己的Linux ——总论篇
作者: 西玛哒 分类: IT悟语, Linux, 老西常谈 标签: 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(下)
U盘中打造属于自己的Linux
(Final) :switch_root转移乾坤
到此 U盘linux就完成了 补遗和说明将在此文处更新。
======================================================
// 更新于 2011年2月21日 修复了链接
// 文章已经陈旧 希望发现BUG者不吝赐教
| anyShare分享到: | |
| |





