当前位置:Linux教程 - Linux文化 - 如何通过chroot构建Linux操作系统 (3)

如何通过chroot构建Linux操作系统 (3)


第四步:挂载slackware 10.2 光盘的第一张,安装基础系统;

  [root@localhost ~]# mount -o loop slackware-10.2-install-d1.iso /mnt/cdrom/

  我们可以先在/mnt/slack目录中创建一个软件包存放目录,用于存放slackware-10.2-install-d1.iso中的所有内容;

[root@localhost ~]#mkdir /mnt/slack/pack[root@localhost ~]# cp -rp /mnt/cdrom/* /mnt/slack/pack

  然后把slackware 第一张盘中的slackware目录中的a目录中的所有包都进行解压缩,以及d目录中glibc开头的包,d目录中的zlib以及zsh 并且把解出来目录,比如 /usr、etc、lib等所有目录都复制到 /mnt/slack中;

  第五步:解决依赖关系;

  如果我们运行下面的命令提示没有/bin/bash这个文件时,我们要解决依赖关系;通过解决依赖关系,也会发现运行chroot所需要的必备的基础软件包;

[root@localhost ~]# chroot /mnt/slack

  如果提示缺少一些文件,我们可以自行判断缺少哪些包;当我们进入/mnt/slack/bin目录发现,的确没有bash这个文件,所以我们要复制一个bash过去;

[root@localhost ~]# cd /mnt/slack/bin[root@localhost bin]# cp bash2.new bash

  这时我们还要判断 bash 所依赖的库文件;

[root@localhost 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 工具来安装其它的软件包,比如 内核什么的;

  [root@localhost ~]# 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块;

[root@localhost ~]# dd if=/dev/zero of=slack.img bs=1M count=2000 seek=1024

第二步:创建文件系统;

  我们可以创建为ext3、fat32或reiserfs等文件系统,创建文件系统,请参考:《存储设备分区操作及文件系统管理概述》

[root@localhost ~]# /sbin/mkfs.ext3 slack.imgmke2fs 1.38 (30-Jun-2005)slack.img is not a block special device.Proceed anyway? (y,n) y

  第三步:挂载已被格式化映像文件;

[root@localhost ~]# mkdir /mnt/slack[root@localhost ~]# 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

  举例:

[root@localhost 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 目录中;

[root@localhost RPMS]# rpm -ivh --relocate /=/opt/gaim gaim-1.3.0-1.fc4.i386.rpmPreparing... ########################################### [100%] 1:gaim ########################################### [100%][root@localhost RPMS]# ls /opt/gaim

  这样也能一目了然;gaim的所有文件都是安装在 /opt/gaim 中,我们只是把gaim 目录备份一下,这样其实也算提取文件的一点用法;

  

6.2 file.tgz、file.tar.gz和file.tar.bz2的提取;

[root@localhost ~]# tar zxvf file.tgz[root@localhost ~]# tar zxvf file.tar.gz[root@localhost ~]# tar zxvf file.tar.bz2

  6.3 file.deb的提取;

[root@localhost ~]# ar x file.deb[root@localhost ~]# tar zxvf data.tar.gz

  file.deb通过ar x 来解包,然后再把data.tar.gz解开就看到相关的目录和文件了;

  6.4 file.iso文件的提取;

  这样的文件在Linux主要通过mount -o loop file.iso 挂载地址;比如 ;

[root@localhost ~]# mount -o loop slackware-10.2-install-d1.iso /mnt/cdrom/

  6.5 提取文件相关参考;

  《文件解压缩》   《RPM 的介绍和应用》   http://debian.linuxsir.org   http://slack.linuxsir.org

  7、chroot 成功切入新的操作系统后的软件安装问题补充;

  如果通过chroot能进入新安装的操作系统,我们就可以新操作系统的软件包管理工具来安装其它软件包了,比如 Slackware 用的是pkgtool 或installpkg工具;Fedora 用的是 rpm 等工具;大多发行版所用的工具不尽相同,以发行版为准 ;

  8、关于本文;

  在去年的时候就想写此文,随着时间的推移,今天想起来的事情可能明天就忘的差不多了,所以用到chroot的时候就想写,用不到的时候就把写文档的事扔到一边。今天正好写关于Xen的文档,也恰恰用到chroot方式安装新的操作系统,所以“被迫”中写了一篇。虽然涉及chroot的功用少了点,但大体上还是把chroot说了差不多了;可能本文的名字有点不符合,我也不知道用什么命名标题不好。慢慢修正中... ...

  9、参考文档;

  《实例解说 fdisk 使用方法》   《存储设备分区操作及文件系统管理概述》   《Linux 创建文件系统及挂载文件系统流程详解》   《文件解压缩》    《RPM 的介绍和应用》   http://debian.linuxsir.org   http://slack.linuxsir.org   http://fedora.linuxsir.org (e129)


摘自:LinuxSir.Org