1. gzyueqian
      13352868059
      首頁 > 新聞中心 > > 正文

      如何通過chroot構建Linux操作系統

      更新時間: 2006-04-10 14:24:54來源: 粵嵌教育瀏覽量:2444

      在已有的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 使用方法》


        第二步:創建文件系統;

      [root@localhost ~]#mkdir /mnt/slack
      [root@localhost ~]# mkfs.ext3 /dev/hda5 注:格式化/dev/hda5為ext3文件系統;



        第三步:掛載文件系統;

        [root@localhost ~]# mount /dev/hda5 /mnt/slack 注:掛載/dev/hda5到 /mnt/slack目錄;


      第四步:掛載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 0
      devpts /dev/pts devpts gid=5,mode=620 0 0
      proc /proc proc defaults 0 0
      none /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.img
      mke2fs 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.rpm
      Preparing... ########################################### []
         1:gaim ########################################### []
      [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

      免費預約試聽課

      亚洲另类欧美综合久久图片区_亚洲中文字幕日产无码2020_欧美日本一区二区三区桃色视频_亚洲AⅤ天堂一区二区三区

      
      

      1. 午夜福利免费区久久 | 欧美日韩精品久久久久免费看 | 日韩理论中文在线观看 | 亚洲男女在线观看视频 | 久久中文字幕无吗一二区 | 精品国产午夜理论片不卡 |