首页 > 代码库 > 制作LFS(LinuxFromScratch),并u盘启动

制作LFS(LinuxFromScratch),并u盘启动

此为避坑指南
详细教程看项目地址。

这次buid lfs的用时为3天。
build lfs需要非常好的耐心。

项目地址:http://www.linuxfromscratch.org/
版本为7.6

用来制作lfs的系统是centos-6.5-minimal (运行在Mac OSX上的VirtualBox中的虚拟机上)
(用其它如gentoo或ubuntu或许会更好,我只是懒下载)

首先把要求安装的软件装上http://www.linuxfromscratch.org/lfs/view/stable/prologue/hostreqs.html
没特别说明的话,一般可以比指定的版本高一点

跟着教程一句句执行命令
建议全程复制粘贴,当然需要看清每句都做了什么。

建议不要随便改其中的命令,如挂载点跟着使用/mnt/lfs

从wget-list上下载所有源码包及补丁,下载后一定要验证md5,http://www.linuxfromscratch.org/lfs/view/stable/chapter03/introduction.html

然后会用系统(centos)的工具链来buid出一个临时的工具链
build临时工具链的时候可以选择用make -j8来加速编译,j后面跟cpu数x2,centos有4个cpu,
但后面真正buid lfs的时候别使用速

上面下载中包括不少补丁,在build临时工具链的时候可以打上,但注意一点是有时候打了补丁后,
会因为需要的额外库文件找不到而编译失败,这时候可以不打补丁再编译一次。

后面build lfs的时候会有些测试会没通过,这因不同系统不同软件版本而异,不要太纠结。

编译linux内核的时候可以用make -jX加速下。

最后要放到u盘上启动的话,首先是指u盘格式化,分区,假设只要一个分区,在centos显示为/dev/sdb1
则可以这样在u盘上装grub:
mkdir -v /mnt/target
mount /dev/sdb1 /mnt/target
grub-install --root-directory=/mnt/target /dev/sdb

然后在grub.cfg上的设置就是:
set root=(hd0,1)
linux /boot/vmlinuz..... root=/dev/sda1 rootdelay=8
上面只是重点的地方,其它照教程写,这里为sda是因为用u盘启动时u盘会是sda,
虽然现在普遍为scsi设备,用的都是sdx,但grub规定了上面那里root=(hd0,1)需要为hdx。

注意上面的rootdelay=8必需,否则启动vfs可能会报错不能挂载root filesystem。

还要注意/etc/fstab里对应修改。

然后就可以把u盘插到电脑上在bios中选择u盘启动了。

假如不幸启动后没有系统选择界面而是一个grub>命令行,可以这样做,
假设电脑上没连接其它硬盘等hdd设备,只有u盘:
root (hd0,0)
kernel /boot/vmlinux-...... root=/dev/sda1 rootdelay=8
boot
上面的vmlinux-...忘记了可以按tab,假如root (hd0,0)正是u盘的root的话,应该会有文件名提示的。
还有一点可能会有疑惑的地方,
上面的grub.cfg中(hd0,1)表示第一个磁盘上的第一个分区,
下面这里grub命令行(hd0,0)也表示第一个磁盘的第一个分区,
对,很奇葩的设定,一个从1开始数,一个从0开始数。


制作LFS(LinuxFromScratch),并u盘启动