`
zengxx1989
  • 浏览: 295538 次
  • 性别: Icon_minigender_1
  • 来自: 湖南
社区版块
存档分类
最新评论

在Windows上构建Linux系统——后传二:用光盘部署目标系统

阅读更多
在部署用Windows系统构建的CLFS临时系统时,如果目标机器没有安装任何操作系统,除了使用NFS方式(参考:在Windows上构建Linux系统——后传一:用NFS部署目标系统)外,也可以使用光盘部署,同NFS方式一样,完全实现在Windows系统上构建Linux系统。
有了自力更生型的CLFS部署方式的准备后,我们就可以用CD部署CLFS的临时系统了。本文直接列出完整的命令,详细的分析和说明,请参考自力更生型的CLFS部署方式。

1、制作initramfs
mkdir -p ~/clfs-ins/rootfs
cd ~/clfs-ins
cp -a ~/clfs/{bin,boot,dev,etc,home,lib,media,mnt,opt,proc,root,sbin,srv,sys,tmp,usr,var,tools} rootfs/
cd rootfs
ln -s sbin/init init
确认 etc/fstab文件是否正确,如果有必要,则调整 etc/fstab文件的内容。然后,生成initramfs:
find . | cpio -o -H newc |gzip -9 > ../initramfs.cpio.gz

特别说明:
1)因为CLFS的临时系统命令和库文件等都位于 tools 目录,所以tools目录需要打包到initramfs中。
2)注意 ln -s sbin/init init 命令中init符号连接到 sbin/init,不能是 /sbin/init 。如果连接到 /sbin/init ,则由于cygwin的特点,实际会连接到 /sbin/init.exe,导致initramfs的初始化程序无法运行。

2、制作部署光盘的iso文件
cd ~/clfs-ins
mkdir -p iso/boot/grub
cp ~/clfs/usr/lib/grub/i386-pc/stage2_eltorito iso/boot/grub
vi iso/boot/grub/menu.lst
default 0
timeout 10
color green/black light-green/black
title CLFS install environment
root (cd)
kernel /boot/clfskernel-2.6.17.13
initrd /boot/initramfs.cpio.gz (斜体字为 menu.lst文件的内容)
cp rootfs/boot/clfskernel-2.6.17.13 iso/boot
cp initramfs.cpio.gz iso/boot
因为还需要在目标机器上继续构建CLFS系统,所以还需要把所需的packages和patches拷贝到光盘构建目录:
mkdir iso/sources
cp ~/clfs/sources/*   iso/sources

好了,现在可以生成iso文件了:
mkisofs -R -b boot/grub/stage2_eltorito -no-emul-boot -boot-load-size 4 -boot-info-table -o clfs-ins.iso   iso

可以用windows下的QEMU虚拟机试验一下刚刚生成的iso文件:
qemu.exe -L Bios -m 384 -cpu pentium3 -hda Images\\linux.img -no-kqemu -cdrom
C:\\cygwin\\home\\yyh\\clfs-ins\\clfs-ins.iso -boot d

特别说明:
1)cygwin中的mkisofs命令属于mkisofs软件包,使用前需要安装这个软件包。mkisofs软件是genisoimage软件包的链接,所以安装mkisofs软件包是会自动安装genisoimage软件包。
2)cygwin中的mkisofs命令的 -boot 参数中的启动文件的路径是相对于iso打包目录的,所以上面mkisofs命令指定为boot/grub/stage2_eltorito ,实际是 iso/boot/grub/stage2_eltorito 。但该参数不能指定为 iso/boot/grub/stage2_eltorito ,否则mkisofs提示不能找到启动文件,这点与Linux系统下的mkisofs命令不同,需注意。
3)QEMU的虚拟机内存大小要指定为384M,256M不够。
4)因为系统从光盘启动后,要从光盘中的sources目录中拷贝packages和patches,所以内核必须支持ISO9660文件系统。文件系统的支持,可以编译进内核,也可以编译成内核模块,在拷贝文件前加载到内核中。

3、向目标系统部署CLFS临时系统
略。具体操作参照:在Windows上构建Linux系统——后传一:用NFS部署目标系统。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics