⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bootdisk-howto-4.html

📁 Linux初学者最好的老师就是howto了。相当于函数man。
💻 HTML
📖 第 1 页 / 共 3 页
字号:
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>4</title>
</head>

<body>

<table>
  <tr>
    <td bgColor="#FFFFFF" vAlign="top"><a href="Bootdisk-HOWTO-5.html"><img alt="Next" src="next.gif" width="16" height="16"></a> 
      <a href="Bootdisk-HOWTO-3.html"><img alt="Previous" src="prev.gif" width="16" height="16"></a> <a href="Bootdisk-HOWTO.html#toc4"><img alt="Contents" src="toc.gif" width="16" height="16"></a>
      <hr>
      <h2><a name="s4">4. 建立一個root filesystem -- Building a root  
      filesystem</a></h2> 
      <p><a name="BuildRoot"></a> 
      <p>造出 root filesystem  
      涉及選擇能讓系統正常運作所必備的檔案。在這一節中,我們將敘述如何建造一個  
      <em>壓縮的 root filesystem</em>  
      。在磁片上建造一個直接掛上做為根目錄 (root)  
      之未經壓縮的 filesystem  
      是較不普遍的觀念;這個替代方案敘述在 <a href="http://www.linux.org.tw/CLDP/Bootdisk-HOWTO-8.html#NonRamdiskRoot">Non-ramdisk  
      Root Filesystem</a> 這一節中。 
      <p>  
      <h2><a name="ss4.1">4.1 概觀 -- Overview</a></h2> 
      <p> 
      <p>root filesystem 必須包含支援完整 Linux  
      系統運作所需的每一個項目。為了能夠達成這個目的,這張磁片必須包括能讓  
      Linux 系統運作最起碼 (minimum) 的需求: 
      <p>  
      <ul> 
        <li>基本的檔案系統架構, 
        <li>最起碼的目錄: <code>/dev, /proc, /bin, /etc, /lib, /usr, /tmp</code>, 
        <li>基本的工具程式: <code>sh, ls, cp, mv</code>, etc., 
        <li>最起碼的組態設定檔: <code>rc, inittab, fstab</code>,  
          etc., 
        <li>設備檔: <code>/dev/hd*, /dev/tty*, /dev/fd0</code>, etc., 
        <li>Runtime 函式庫以提供工具程式所使用之基本功能  
          (functions) 。</li> 
      </ul> 
      <p>當然,任何系統只有在你能於其上執行某些東西時才會顯得有用,而一張  
      root 磁片通常只有在你能做到以下事情時才會顯得有用: 
      <p>  
      <ul> 
        <li>檢查另一台磁碟機的 file system  
          ,舉例來說,檢查你硬碟上的 root file system  
          ,你必須能夠從另一台磁碟機啟動 Linux  
          ,例如你可以用一張 root  
          磁片辦到這件事。然後你可以在你原本的 root  
          磁碟機未被掛上時,對其執行 <code>fsck </code>。 
        <li>使用檔案 (archive) 與壓縮工具程式,諸如 <code>cpio,  
          tar, gzip</code> 與 <code>ftape</code> ,從備份 (backup)  
          恢復儲存所有或部分你原本 root 磁碟機的資料。</li> 
      </ul> 
      <p>我們將敘述如何建造一個 <em>壓縮的 </em>filesystem  
      ,就是平時被壓縮在磁片上,只有當開機時,才會解壓縮後存入ramdisk  
      。 <!-- 
compressed root filesystem 
--> 
      用壓縮 filesystem 的方式,你可以在一張標準的 1440K  
      磁片上放入很多檔案 (大約 6 megabytes) 。因為 filesystem  
      比磁片大很多,我們不能直接把它建在磁片上。我們必須在其它地方建立它,壓縮它,然後再把它  
      copy 到磁片上。 
      <p>  
      <h2><a name="ss4.2">4.2 製作 filesystem -- Creating the filesystem</a></h2> 
      <p><a name="CreatingRootFS"></a> 
      <p>為了建造如此的一個 filesystem  
      ,你需要一個多出而夠大的設備,能夠讓你在壓縮之前存放所有的檔案。你將需要一個能夠存放大約  
      4 megabytes檔案的設備。有以下幾種選擇: 
      <p>  
      <ul> 
        <li>使用 <b>ramdisk</b> (DEVICE = /dev/ram0)。在這種情況下,記憶體被模擬成一台磁碟機。  
          Ramdisk 必須大到能夠存放一個適當大小的 filesystem  
          。如果你使用 LILO ,請檢查你的組態設定檔 (/etc/lilo.conf)  
          ,找到一行像 
          <pre> RAMDISK = nnn
</pre> 
          <!-- 
RAMDISK_SIZE, LILO parameter 
--> 
          這行決定可以分配給 ramdisk 的 RAM  
          之極大值。預設值是 4096K  
          ,這應該是足夠了。你應該不可能嘗試在一台少於 8MB  
          RAM 的電腦上使用如此的 ramdisk 。  
          請檢查以確認你有一個設備檔像是 /dev/ram0, /dev/ram  
          或是 /dev/ramdisk 。如果沒有,請自己以 <code>mknod</code>  
          (major number 1, minor 0)造出 /dev/ram0 。 
        <li>如果你有一個未使用且夠大的硬碟 partition (差不多幾megabytes大就可以了),就使用它吧。 
        <li>使用一個 <b>loopback device</b>  
          ,這可以把一個磁碟檔案當做是一台設備來使用。使用  
          loopback device 時,你可以在硬碟上造出一個 3 megabyte  
          的檔案,並於其上建造 filesystem 。 鍵入 <code>man losetup</code>  
          找尋指令以使用 loopback devices 。如果你沒有 <code>losetup</code>  
          ,你可以從 <a href="ftp://ftp.win.tue.nl/pub/linux/utils/util-linux/">ftp://ftp.win.tue.nl/pub/linux/utils/util-linux/</a>  
          目錄中, util-linux 套件 (package) 內相容版本之 <code>mount</code>  
          與 <code>unmount</code> 的隨附物中找到它。  
          如果在你的系統上沒有 loop device 檔 (/dev/loop0,  
          /dev/loop1, etc.),那麼你必須用 ``<code>mknod /dev/loop0 b 7 0</code>''  
          自己造出一個。一旦安裝好這些特別的 <code>mount</code>  
          與 <code>umount</code>  
          二進位檔,就請在一台容量夠大的硬碟上造出一個暫存檔  
          (temporary file)(eg, /tmp/fsfile)  
          。你可以使用像這樣子的指令: 
          <blockquote> 
            <code>dd if=/dev/zero of=/tmp/fsfile bs=1k count=<i>nnn</i></code> 
          </blockquote> 
          以造出一個 <em>nnn</em>-block 的檔案。  
          請使用自己的檔名取代以下的 DEVICE 。當你下了 mount  
          指令,你同時要加上 ``<code>-o loop</code>'' 選項以告知  
          mount 是使用 loopback device 。 <!-- 
loopback device 
--> 
          舉例來說: 
          <pre>        mount -o loop -t ext2 /tmp/fsfile /mnt
</pre> 
          以掛上 loopback device 的方式,把 /tmp/fsfile 掛上 <code>/mnt</code>  
          這個 mount point 。用 <code>df</code>  
          指令可讓你看到以上的結果。</li> 
      </ul> 
      <p>在你選擇其中一種方法後,請準備 DEVICE 以: 
      <pre>        dd if=/dev/zero of=DEVICE bs=1k count=4096
</pre> 
      <p>這行指令送出一堆 0 把DEVICE填滿。用 0 填滿 device  
      是關鍵的一步,因為 filesystem之後將會被壓縮,所以所有未使用的部分應被用  
      0 填滿以達到最大的壓縮比。無論何時你從你的 root  
      filesystem 刪除檔案,請記得這個事實。實際上 filesystem  
      只是釋出 (de-allocate) 這些 blocks , <em>但是並沒有再把它們填為  
      0 </em>。如果你執行過很多次刪除與 copy  
      的動作,你的壓縮 filesystem 最後會比必要的大出很多。 
      <p><!-- 
inodes, allocation 
--> 
      下一步就是造出 filesystem 。 Linux kernel 承認兩種能讓 root  
      disks 自動地被 copy 到 ramdisk 上的 file system 。它們是 minix  
      與 ext2 ,其中 ext2 是比較受歡迎的。如果使用 ext2  
      ,你會發現使用 <code>-i</code> 選項指定比預設值更多的  
      inodes 是有助益的;我們建議用 <code>-i 2000</code>  
      ,這樣你就不會用完 inodes  
      。如果不用上述選項,你可以移除許多不必要的 <code>/dev</code>  
      檔案以節省 inodes 。 <code>mke2fs</code> 預設會造出 360 個  
      inodes在一張 1.44Mb 的磁片上。我發現在我目前的救援 root  
      磁片上, 120 個 inodes  
      是相當足夠了,但是如果你把所有的設備檔都放入 <code>/dev</code>  
      目錄中,那麼你很容易會超過 360 個inodes 。使用壓縮的  
      root filesystem 可讓你擁有較大的 filesystem  
      ,同時預設會有更多的 inodes  
      ,但是你仍然必須要不就是減少檔案數量,要不就是增加  
      inodes 數目。 
      <p>因此,你所使用的指令看起來會像這樣: 
      <pre>        mke2fs -m 0 -i 2000 DEVICE
</pre> 
      <p>(如果你使用的是一個 loopback device  
      ,那麼請用你目前所用的磁碟檔案替換掉上面的 DEVICE 。)  
      <!-- 
loopback device 
--> 
      <p><code>mke2fs</code>  
      指令會自動地偵測可獲得的空間,然後依據偵測對自身進行組態設定。  
      ``<code>-m 0</code>'' 參數避免保留空間給 root  
      ,因此可提供更多可用的磁碟空間。 
      <p>下一步,掛上這個 device : 
      <p>  
      <pre>        mount -t ext2 DEVICE /mnt
</pre> 
      (如果 mount point 並不存在,你必須自行造出一個 mount point  
      <code>/mnt</code> 。) 在剩下的章節中,所有的目的  
      (destination) 目錄都被假設是相對於 <code>/mnt</code> 。 
      <p>  
      <h2><a name="ss4.3">4.3 移植檔案系統 -- Populating the filesystem</a></h2> 
      <p> 
      <p>以下是你的 root filesystem 最起碼該有的目錄 
      <p>此處所呈現之目錄架構僅供 root diskette 使用。真正的  
      Linux 系統有一套更為複雜且設計良好的架構方法,稱為 <a href="http://www.pathname.com/fhs/2.0/fhs-toc.html">Filesystem  
      Hierarchy Standard</a> ,它決定檔案應該如何放置。 : 
      <p> 
      <ul>
        <li>/dev -- 裡面存放設備檔 (Devices) ,為達成 I/O  
          工作所需 
        <li>/proc -- Directory stub required by the proc filesystem 
        <li>/etc -- 裡面存放系統組態設定檔 
        <li>/sbin -- 重要的 (critical) 系統二進位執行檔 (binaries) 
        <li>/bin -- 被認為是系統一部分的基本二進位執行檔 
        <li>/lib -- 提供 run-time 支援的共享函式庫 
        <li>/mnt -- 維護其它磁碟所用的磁碟掛入點 (mount point) 
        <li>/usr -- 額外的工具程式與應用程式</li> 
      </ul> 
      <p><!-- 
proc 
--> 
      <!-- 
mnt 
--> 
      <!-- 
usr 
--> 
      <p>上述目錄的其中三個在 root filesystem  
      上會是空的,所以它們只需要用 <code>mkdir</code> 造出來。  
      /proc 目錄基本上是一個把 proc filesystem 放置於其下的 stub  
      。 /mnt 與 /usr 這兩個目錄只是在 boot/root  
      系統運作時所使用的 mount points  
      。因此再重覆一次,這些目錄只需要被造出來就可以了。 
      <p>剩下的四個目錄描述於以下各節。 
      <p>  
      <h3>/dev</h3> 
      <p> 
      <p><!--
device (dev) directory
-->
      <p>/dev  
      目錄包含一群特別的檔案,這些檔案是給系統上所有設備使用的,這樣的  
      /dev 目錄每個 Linux  

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -