如何通过chroot构建Linux操作系统.doc_第1页
如何通过chroot构建Linux操作系统.doc_第2页
如何通过chroot构建Linux操作系统.doc_第3页
如何通过chroot构建Linux操作系统.doc_第4页
如何通过chroot构建Linux操作系统.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

在已有的Linux操作系统中,安装另一个开源操作系统,我们一般是先构建新操作系统的chroot基础环境,然后chroot进入新构建的操作系统环境来安装和配置。这种构建和安装操作系统的方法,对于我们学习和研究操作系统结构和原理应该说比较重要。本文举了简单的例子,以Fedora Core 5.0 为基础,通过chroot来构建Slackware 10.2;1、chroot方式安装操作系统的目的和用途chroot 工具是Linux操作系统都具备的工具,从表面的意思看,chroot 是从一个/根到另一个/根。在一个Linux操作系统中安装另一个操作系统,就是利用chroot的这个特点。首先创建chroot运行的基础环境,然后通过chroot到新的/根,然后再用相应的软件包管理工具把新的操作系统其它软件包安装上; 几乎所有的开源操作系统都可以用chroot的方法来安装,比如Gentoo 、LFS及CRUX比较常用chroot;通过chroot安装操作系统,好象堆积木一样,一块一块的把操作系统安装起来,所以Gentoo和LFS的Fans特别有成就感。呵,也说是操作系统全手工打造,成就感自然不言而喻了;通过chroot安装操作系统,我们能学到什么呢?主要是能知道一个操作系统最少需要多少部件可以“动”起来,以及了解一个操作系统需要哪些基础的必备的“部件”,这对开发自己的基于Linux操作系统以及了解操作系统的构成及原理是比较重要的;2、通过chroot 方式安装操作系统所需要的系统环境最根本的环境是是在您的机器有得有一个能运行的Linux操作系统或一个LiveCD;3、通过chroot 安装操作系统的流程要下面几个流程:一、规划硬盘分区或创建映像文件;请参考:实例解说 fdisk 使用方法二、创建文件系统;存储设备分区操作及文件系统管理概述三、挂载文件系统;Linux 创建文件系统及挂载文件系统流程详解四、安装基础系统;主要通过解压软件包来实现;五、修改新系统的配置文件,比如 位于新系统中的/etc/fstab六、解决依赖关系,安装软件包管理工具;七、通过chroot进入新系统;八、通过新系统的软件包我管理工具来安装其它软件包;九、处理引导问题,比如GRUB引导之类的;系统引导管理器GRUB,为初学者指南4、操作系统安装安装目的地的介质说明;一个操作系统可以安装在物理硬盘中,也可以安装在一个映像文件中;安装在物理硬盘中大家都能理解。安装在一个映像文件中怎么理解呢?比如通过VMWARE来虚拟安装操作系统是不是安装在一个文件中呢?是的,和这个意思差不多; 再说一点,交换分区swap 也可以是文件;再比如Xen虚拟操作系统就可以安装在文件映像中;安装在映像文件中的操作系统,可以用来学习,通过chroot访问,也可以通过xen来虚拟等 . . 还可以做成类似file.iso的形式来存储文件等; 5、实说简说在Fedora 中安装Slackware 10.2;本例是在Fedora Core 5.0 中通过chroot 安装Slackware 10.2,安装目的地的介质分为两种,一种是物理硬盘;一种是映像文件。安装在物理硬盘的可以通过GRUB或LILO等引导管理器来独立真实运行,安装在映像文件中的能通过chroot访问或Xen虚拟运行;5.1 通过chroot 安装Slackware 10.2 到一个硬盘物理分区中;这个过程好象是有点多余,但写一写也好,这是大多开源操作系统的安装都通用的,也是最原始、最有效的方法,也就是说在一个已有的操作系统环境中安装另一个操作系统;首先:您得懂的规划您的分区,请参考:实例解说 fdisk 使用方法其次:您还要知道如何创建文件系统,请参考:存储设备分区操作及文件系统管理概述第三:您要知道如何挂载一个文件系统;请参考:Linux 创建文件系统及挂载文件系统流程详解挂载文件系统就是通过mount 来挂载;举例:比如我的硬盘/dev/hda5是空白分区,并且我想创建/dev/hda5为ext3文件系统,并且把它挂载到 /mnt/slack目录中,然后通过chroot来安装Slackware 10.2;第一步:您要通过分区工具fdisk 或parted来规划您的分区,此步省略;请参考:实例解说 fdisk 使用方法第二步:创建文件系统;rootlocalhost #mkdir /mnt/slackrootlocalhost # mkfs.ext3 /dev/hda5 注:格式化/dev/hda5为ext3文件系统; 第三步:挂载文件系统;rootlocalhost # mount /dev/hda5 /mnt/slack 注:挂载/dev/hda5到 /mnt/slack目录;第四步:挂载slackware 10.2 光盘的第一张,安装基础系统;rootlocalhost # mount -o loop slackware-10.2-install-d1.iso /mnt/cdrom/ 我们可以先在/mnt/slack目录中创建一个软件包存放目录,用于存放slackware-10.2-install-d1.iso中的所有内容; rootlocalhost #mkdir /mnt/slack/packrootlocalhost # cp -rp /mnt/cdrom/* /mnt/slack/pack 然后把slackware 第一张盘中的slackware目录中的a目录中的所有包都进行解压缩,以及d目录中glibc开头的包,d目录中的zlib以及zsh 并且把解出来目录,比如 /usr、etc、lib等所有目录都复制到 /mnt/slack中;第五步:解决依赖关系;如果我们运行下面的命令提示没有/bin/bash这个文件时,我们要解决依赖关系;通过解决依赖关系,也会发现运行chroot所需要的必备的基础软件包; rootlocalhost # chroot /mnt/slack 如果提示缺少一些文件,我们可以自行判断缺少哪些包;当我们进入/mnt/slack/bin目录发现,的确没有bash这个文件,所以我们要复制一个bash过去;rootlocalhost # cd /mnt/slack/binrootlocalhost bin# cp bash2.new bash 这时我们还要判断 bash 所依赖的库文件;rootlocalhost bin# ldd bash 出来的依赖关系,大多是glibc的,glibc被安装在了/mnt/slack/lib/tls目录中,我们可以根据提示一个一个的做链接。少什么东西就做什么的链接;要看/mnt/slack/lib中是否有glibc的文件,然后做链接。如果是存放在tls目录中的,也要链到/mnt/slack/lib中。链接时要用相对路径,不能用绝对路径;创建链接文件和在Windows创建快捷方式比较相似,用ln 命令;#ln -s 原文件名 新文件名什么才算解决了 bash的依赖关系了呢?直到能chroot /mmt/slack才算成功;第六步: chroot成功,进入Slackware系统;chroot 成功后,我们就能进入Slackware系统,然后通过pkgtool 或installpkg 工具来安装其它的软件包,比如 内核什么的;rootlocalhost # chroot /mnt/slack 第七步;更改/etc/fstab文件;如果要让一个操作系统独立运行,非得写一写/etc/fstab文件,对于这个您可以参考,比如 下面的这个例子,您改一改就可以用了;/dev/hda7 swap swap defaults 0 0/dev/hda6 / reiserfs defaults 1 1/dev/hda1 /mnt/winc ntfs ro 1 0/dev/hda3 /mnt/wind vfat defaults 1 0/dev/cdrom /mnt/cdrom auto noauto,owner,ro 0 0/dev/fd0 /mnt/floppy auto noauto,owner 0 0devpts /dev/pts devpts gid=5,mode=620 0 0proc /proc proc defaults 0 0none /sys sysfs defaults 0 0 第八步:引导系统;要通过GRUB或LILO引导管理器实现对Slackware的引导;不多说了,请参考 :系统引导管理器GRUB,为初学者指南 5.2 通过chroot把Slackware 10.2安装在一个映像文件中;第一步:创建映像文件;比如 我们创建一个名为slack.img的映像文件,体积为2G的,就可以用下面的命令;bs是每个块的大小为1M,共创建2000块;rootlocalhost # dd if=/dev/zero of=slack.img bs=1M count=2000 seek=1024 第二步:创建文件系统;我们可以创建为ext3、fat32或reiserfs等文件系统,创建文件系统,请参考:存储设备分区操作及文件系统管理概述rootlocalhost # /sbin/mkfs.ext3 slack.imgmke2fs 1.38 (30-Jun-2005)slack.img is not a block special device.Proceed anyway? (y,n) y 第三步:挂载已被格式化映像文件;rootlocalhost # mkdir /mnt/slackrootlocalhost # mount -o loop slack.img /mnt/slack/ 第四步以后和物理硬盘操作基本相同,省略过去;6、有关软件包rpm、tgz、deb等软件包提取;发行版都有一定的软件包格式,比如 file.rpm 、file.deb或file.tgz或file.tar.gz等;rpm格式的软件包,一般基于Redhat或Fedora为基础开发的都采用RPM格式。因为chroot安装操作系统,首要的是从一个软件包中提取文件,然后复制到文件系统中,所以提取文件工具也得做一点解说;6.1 从rpm软件包抽取文件;操作的前提是得有rpm的管理工具,也就是说得有rpm等相关命令;命令格式: rpm2cpio file.rpm |cpio -div举例:rootlocalhost RPMS# rpm2cpio gaim-1.3.0-1.fc4.i386.rpm |cpio -div 抽取出来的文件就在当用操作目录中的 usr 和etc中;其实这样抽到文件不如指定安装目录来安装软件来的方便;也一样可以抽出文件;为软件包指定安装目录:要加 -relocate 参数;下面的举例是把gaim-1.3.0-1.fc4.i386.rpm指定安装在 /opt/gaim 目录中;rootlocalhost RPMS# rpm -ivh -relocate /=/opt/gaim gaim-1.3.0-1.fc4.i386.rpmPreparing. # 100% 1:gaim # 100%rootlocalhost RPMS# ls /opt/gaim 这样也能一目了然;gaim的所有文件都是安装在 /opt/gaim 中,我们只是把gaim 目录备份一下,这样其实也算提取文件的一点用法; 6.2 file.tgz、file.tar.gz和file.tar.bz2的提取;rootlocalhost # tar zxvf file.tgzrootlocalhost # tar zxvf file.tar.gzrootlocalhost # tar zxvf file.tar.bz2 6.3 file.deb的提取;rootlocalhost # ar x file.debrootlocalhost # tar zxvf data.tar.gz file.deb通过ar x 来解包,然后再把data.tar.gz解开就看到相关的目录和文件了;6.4 file.iso文件的提取;这样的文件在Linux主要通过mount -o loop file.iso 挂载地址;比如 ;rootlocalhost # mount -o loop slackware-10.2-install-d1.iso /mnt/cdrom/ 6.5 提取文件相关参考;文件解压缩RPM 的介绍和应用7、chroot 成功切入新的操作系统后的软件安装问题补充;如果通过chroot能进入新安装的操作系统,我们就可以新操作系统的软件包管理工具来安装其它软件包了,比如 Slackware 用的是pkgtool 或installpkg工具;Fedora 用的是 rpm 等工具;大多发行版所用的工具不尽相同,以发行版为准 ;8、关于本文;在去年的时候就想写此文,随着时间的推移,今天想起来的事情可能明天就忘的差不多了,所以用到chroot的时候就想写,用不到的时候就把写

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论