[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