您的位置:首页 > 其它

ubuntu 启动盘制作

2009-10-13 15:19 288 查看
1.启动盘的制作&构建一个小系统

准备:

制作系统:ubuntu 8.10(我的是8.10,各个版本应该都可以)

可启动的U盘一个

前言:

本节利用ubuntu现成的文件创建一个可U盘启动的linux小系统

分区:

#sudo fdisk /dev/sdb /*在创建分区前,可以使用d命令删除所有分区:d回车1,d回车2,d回车3,d回车4,*/

Command (m for help):n /*n 新建分区*/

Command action

e extended

p partition (1-4)

p /*p 创建主分区*/

Partition Number (1-4):1 /*1 创建第一个主分区*/

First cylinder ......: /*回车 采用默认值*/

Using default value 1

Last cylinder .....: /*回车 整个U盘分为一个区*/

using default value xxx

Command (m for help):a /*a 激活分区*/

Partition Number (1-4):1 /*1 激活第一分区*/

Command (m for help):p /*p 查看一下操作后分区信息*/

......

Command (m for help):w /*分区并退出*/

格式化:

sudo mkfs.ext3 /dev/sdb1 /*格式化为ext3分区*/

sudo mount -t ext3 /dev/sdb1 /mnt /*加载分区到/mnt*/

准备grub启动文件:

sudo mkdir -p /mnt/boot/grub/

sudo cp /usr/lib/grub/i386-pc/* /mnt/boot/grub/

/*有用的文件是stage1 e2fs_stage1_5 stage2三个文件*/

sudo cp /boot/grub/menu.lst /mnt/boot/grub/ /*当模板,后续要编辑一下*/

准备内核:

sudo mkdir /boot/myboot/

sudo cp /vmlinuz /initrd.img /mnt/boot/myboot/

修改启动菜单:

sudo vi /mnt/boot/grub/menu.lst

#file start

default 0

timeout 10

title myboot

kernel /boot/myboot/vmlinuz

initrd /boot/myboot/initrd.img

#end file

grub安装:

sudo umount /mnt

sudo grub

grub>root (hd1,0) /*grub硬盘设备总是hd的,下标为0开始,ubuntu系统为hd0,U盘为hd1*/

grub>setup (hd1)

grub>quit

#################################################

以下是网络上找到的更详细的说明,供参考

grub> root (hd0,1) (A)

root (hd0,1)

Filesystem type is ext2fs, partition type 0x83

grub> setup (hd0) (B)

setup (hd0)

Checking if "/boot/grub/stage1" exists... yes

Checking if "/boot/grub/stage2" exists... yes

Checking if "/boot/grub/e2fs_stage1_5" exists... yes

Running "embed /boot/grub/e2fs_stage1_5 (hd0)"... 15 sectors are embedded. (C)

succeeded

Running "install /boot/grub/stage1 (hd0) (hd0)1+15 p (D) (hd0,1)/boot/grub/stage2 /boot/grub/menu.lst"... succeeded

Done. (E)

grub> quit

A:设置装有stage1,stage1.5.stage2的硬盘分区

B:安装GRUB至MBR

C:'embed'命令是嵌入stage1.5到硬盘MBR后的扇区上,这儿把stage1.5写入MBR后的15个扇区.扇区数目

根据stage1.5的大小而不同

D:安装stage1到MBR上

E:'p'告知GRUB,stage2和menu.lst的位置

#####################################################

好了这样一个U盘就可以启动一个linux 系统了。

最后一个地方会停一点时间,然后进入(initramfs)系统了。

2. 启动基本流程说明

系统启动,最开始启动了grub的,grub通过菜单启动了vmlinuz(内核),然后内核解压initrd.img

到内存,并形成一个根文件系统,并运行根目录下的init程序。

在ubuntu中init是一个脚本,它会启动一套很复杂的脚本,我没有花太多时间理解它,其中加载

所有必要的驱动,是很重要的功能,因此initrd.img中包含了很多驱动模块,系统进行选择性的加载。

还有系统初始化完毕后,它会卸载掉ram根文件系统,从内核root参数中,读取根设备,建立基于

硬盘上,也就是我们平时登录系统后看到的系统。root 参数在menu.lst中描述,示例如下:

kernel /boot/myboot/vmlinuz root=/dev/sdb1 rw

你可以在grub菜单的时候按“e”建重新编辑kernel这一样,然后在按“b”,引导系统,会看见一个出错

信息,系统还是进入了initramfs模式。因为u盘的根目录下只有grub,没有其他任何数据,即root=

指定的分区中没有init文件无法启动新的根文件系统。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: