LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
12
返回列表 发新帖
楼主: laowang_buaa

在Windows上构建Linux系统

[复制链接]
发表于 2008-7-12 22:26:19 | 显示全部楼层
此帖为何还不加精????????害我翻了10页才找到
回复 支持 反对

使用道具 举报

发表于 2008-7-22 22:38:37 | 显示全部楼层
太忙了,很多时候都看漏了眼,请见谅!精上。
回复 支持 反对

使用道具 举报

发表于 2008-7-24 20:42:21 | 显示全部楼层
有一bt想法,x86硬件环境,*nix系统环境,+wine,+Cygwin/MingW作宿主,不是连M$的许可费用都省了。
回复 支持 反对

使用道具 举报

发表于 2008-7-25 19:01:20 | 显示全部楼层
Post by 聚焦深空;1878221
有一bt想法,x86硬件环境,*nix系统环境,+wine,+Cygwin/MingW作宿主,不是连M$的许可费用都省了。

不明白。既然已经是*nix了为何还要用Cygwin/MingW
回复 支持 反对

使用道具 举报

发表于 2008-7-25 19:41:28 | 显示全部楼层
wine+Cygwin/MingW两层模拟,
wine有速度损失,Cygwin/MingW也有速度损失,还不够bt?

只是CLFS的又一种变通方式而已。
回复 支持 反对

使用道具 举报

发表于 2008-7-26 21:34:53 | 显示全部楼层
按理说MingW是不应该有性能损失的,因为只是对工具链的移植而已,和其他任何工具链本质上是一样的。只是功能跟其他UNIX平台上不太一样,因此许多代码需要重写而已。Cygwin会有损失这是事实。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-4-17 22:10:59 | 显示全部楼层

在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不够。

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

使用道具 举报

 楼主| 发表于 2009-4-26 23:11:01 | 显示全部楼层

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

http://blog.ccidnet.com/blog.php ... &itemid=1429060

当时设想的“不依赖Linux系统,完全在Windows系统下完成CLFS临时系统的部署”,除了用光盘,还考虑用U盘。昨天搞好了光盘的(在Windows上构建Linux系统——后传二:用光盘部署目标系统),今天就弄U盘的。

1、制作用于CLFS的部署启动U盘
(1)制作CLFS临时系统的initramfs,具体步骤见在Windows上构建Linux系统——后传二:用光盘部署目标系统,本处略。
(2)把制作好的initramfs和sources目录下的packages和patches拷贝到U盘,就放在根目录下。U盘出厂时都已格式化好了,一般是FAT32或NTFS等windows文件系统类型,我们直接使用U盘现有的文件系统,不需要做特殊的处理。
(3)用syslinux制作启动U盘
我们用syslinux启动U盘。syslinux的主页是:http://syslinux.zytor.com/index.php,下载地址是:http://www.kernel.org/pub/linux/utils/boot/syslinux/。在syslinux软件包的解压目录下的win32目录下有syslinux.exe命令,我们就用这个命令制作启动U盘。
假设U盘的盘符是E盘,执行
syslinux e:
命令,即可使U盘成为可启动的。
(4)配置启动U盘
syslinux制作的U盘启动盘只能识别DOS格式的文件名,所以我们要把U盘上的内核和initramfs的文件名分别改linux和initrd。
syslinux需要用syslinux.cfg文件配置启动项。我们U盘的syslinux.cfg文件内容如下:
default linux
label linux
kernel linux
append initrd=initrd

syslinux.cfg文件位于U盘的根目录。

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

3、支持U盘挂载的内核配置
因为系统从U盘启动后,要从U盘中的sources目录中拷贝packages和patches,所以内核必须支持U盘挂载。支持U盘的内核配置稍微有些麻烦,需要:
(1)SCSI device support 和 SCSI disk support
(2)USB support、USB host controller drivers和USB Mass Storage support
(3)U盘一般格式化为windows文件系统,所以需要codepage 和 IO char set 支持:
在File Systems --- Native Language Support 配置项选择
│--- Base native language support      
│(iso8859-1) Default NLS Option         
│<*>   Codepage 437 (United States, Canada)     
│<*>   Simplified Chinese charset (CP936, GB2312)     
│<*>   ASCII (United States)         
│<*>   NLS ISO 8859-1 (Latin 1; Western European Languages)   
│<*>   NLS UTF-8
   
有关codepage 和 IO char set 的进一步信息,可参考:内核中VFAT文件系统codepage和iocharset设置。
(4)FAT/VFAT/NTFS等U盘使用的文件系统的支持。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表