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

接上篇: 处理U盘至usb-hdd模式;

接下来,我们要做的就是进行U盘的格式化操作,

首先,我们要选择一个BootLoader,你可能会问,为啥格式化需要先考虑BootLoader呢?这要跟BL的挑剔性说起。

我们知道,BootLoader一般安装在MBR中,用于引导,这就决定了它必须正确识别文件系统,这样才能读取存在硬盘上的配置文件

先简介一下几个比较著名的BootLoader

:LILO 比较老的BL,支持大部分文件系统。

:SysLinux 一般用于嵌入式,安装的硬盘文件系统一般为FAT

:Grub 主流的BL,支持大部分文件系统。

我们的很多工具盘的引导用的都是Grub,因为她十分的强大,因此我们打算采用它作为我们的BL。

这里对于Syslinux一笔带过,它是嵌入式中常用的一个引导程序,使用也比较方便。后文中将会对比的提出使用方法。

之后就是常见的文件系统:

:FAT家族 我们见得多了,没吃过猪肉也见过猪跑,我就不介绍了,特性和其主子Windows一样……..

FAT在嵌入式中常用,SysLinux就安装在FAT环境下。

:Linux文件系统格式

ext2 曾经辉煌的GNU默认文件系统,性能较好,缺点:掉电崩溃,数据经常丢失。

ext3 现行正在主流的文件系统,解决了掉电丢失问题。

回想我们的需求,我们希望将系统从内存中交换引导,因此我们使用ext2文件系统就可以满足我们的需要,当然是用ext3是很好的,ext2与ext3兼容性较好,可以方便的相互转换。

总结之前的内容,我们决定在ext2环境下使用Grub作为引导程序。

实现:

一、 格式化

进入宿主Linux 打开terminal(之后的工作默认都是在terminal中完成的,图形化的东西没啥用其实。。。)

在这里说明一下 之后的操作默认在root权限下进行

1
2
3
4
5
sudo su
输入你的password:.......    // 这个地方没有回显
#                                   //说明进入root权限了
// 使用的命令(软件)有些提示没有安装,需要执行
apt-get install (程序名) //从程序管理器中自动下载安装

采用cfdisk作为分区工具。

插入U盘,Linux一般会识别并自动挂载,在分区格式化之前,要先将U盘解除挂载

1
2
3
4
5
6
7
8
9
10
11
fdisk -l //列出所有的磁盘信息,这时候如果你的硬盘是IDE的盘,那么一般你宿主机的硬盘会识别为
/dev/hdax    (x=1,2,........) //这里说下磁盘在dev下的命名,h表明为IDE,s为sata,d表示disk 后面的为硬盘编号,a表示第一块,依次类推。我的宿主机硬盘为SATA的,所以识别为/dev/sda(x) 因此 U盘被当成了SATA盘,接在后面被识别为 /dev/sdb(x)
df -l  //查询挂载情况 看看你的U盘被挂在在何处 这里以/media/disk为例
umount  /media/disk
umount /dev/sdb(x) //作用相同,挂载的盘x要全部卸载
cfdisk /dev/sdb            //注意 是给硬盘分区。若是之前这个盘为FAT或其他格式使用过,它可能会报出什么分区表&\*(……%\**&…… 云云,这是我们可以先吧分区表清空。
fdisk /dev/sdb   

#d   选择1-4删除原有的所有分区
#w  写分区表
#q   退出

之后就可以正常进入分区了。(不可以的话,额… 查查你U盘自身的问题吧)
之后的有“图形界面” 操作比较方便应该。
分区随便,需要的是一个起于beginning的分区,有bootflag(可启动),大小有你最后要实现的Linux规模决定,这里建议大家分一个区,不差钱儿…….

我慷慨的贡献了2G的U盘给它,type可以选择Linux (代号 83) 记住一定要执行 Write 选项,否则就白做了!

1
mkfs.ext2   /dev/sdb1      #格式化为ext2格式(对于syslinux格式化,基本相同,上面在type中选择FAT后 执行 mkdosfs /dev/sdb1 就可以了)

至此,格式化过程就全部完成了。
现在我们的U盘空的如同连上四节大课之后的胃一样…

二、 BootLoader的安装与初级设置

我们先找宿主机分析一下,一个BootLoader一般需要什么东西。BootLoader在什么地方找呢?猜对了,/boot

我在我的Linux中 /boot 下有一个名为 grub 的文件夹 起作用十分的明显,就是说,grub引导需要/boot/grub 中的文件。

其实其中起作用的文件只有那么几个,之前的分析我们知道,grub 引导服从 stage1->stage1.5->stage2 这个过程,同时还需要遵照配置文件grub.conf 中的规则,因此我们需要的文件就是:

stage1; stage2; e2fs_stage1_5(就是支持ext2的stage1.5文件,有人说没用)

  • 这几个文件一般人搞不定,因为它们涉及很多底层操作,我这个菜鸟必然不敢动,直接拷贝的干活…..
    grub.conf
  • 引导配置,可以自行设置,是我们实现引导的基础。
  • 当然 我们尝鲜要紧 里面的东西先放放再说。
    现在我们要正式对U盘下手了….. 首先建立一个今后一直要用的挂载点,自己方便就好,我的是/mnt/usb
1
2
3
mkdir /mnt/usb
mount /dev/sdb1 /mnt/usb
cd /mnt/usb   #进入u盘目录

这时候你ls下 可能只有lost+found孤零零的躺在那里(若发现一堆东西,请迅速离开,不知道咋离开的点右上角的X…)

1
2
3
4
mkdir boot
mkdir boot/grub
cp -dpR /boot/grub/{stage1,stage2,e2fs\_stage1\_5} boot/grub           #复制必要文件
touch boot/grub/grub.conf             #先弄一个空文件

这样 必要的文件就准备好了 下一步是安装grub
宿主linux中,一般都会安有grub 的shell环境。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
grub

grub >  root (hd1,0)

#//\---|\---|\---|--

####   这里的(hd1,0) 不同于之前的磁盘表示,是设备号

####   在设备划分中,没什么IDE啊SATA的,都是磁盘hard disk

####   磁盘计数和数组类似 从0开始

####   那么hd1 表示 第二块磁盘 0 表示该磁盘的第一个分区

####   root 就是置为操作对象之意......

#### //\---|\---|\---|\---|-

grub >  setup (hd1,0)

#### ........................(没用)

#### Succeed ! Done!   / Failed!

#### 看看你是否安装成功....

grub > quit                  #  退出。

如果上面的succeed了 那么你的BootLoader已经安装完毕了,虽然现在没有任何配置,不可能正常引导,但是启动后应该可以找到grub程序了。
插入u盘 开机,进入bios设置,选择从usb-hdd启动。

进入 出现grub的引导提示信息。

补充: vmware 中实现u盘引导的方法:

vmware的启动非常快,来不及加载u盘,依次我们绕过,将u盘模拟为虚拟硬盘使用。

随便新建一个虚拟机,删除原有的硬盘,在配置中点击ADD添加设备,选择硬盘,并“使用物理磁盘”之后选择PD1 就应该是你的u盘了,之后就可以用这个虚拟机验证启动。

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

posted on 2019-08-23 09:37  guanxi0808  阅读(552)  评论(0)    收藏  举报

导航