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

📄 bootdisk-howto-4.html

📁 Linux初学者最好的老师就是howto了。相当于函数man。
💻 HTML
📖 第 1 页 / 共 3 页
字号:
      系統都一定會有。這個目錄本身是一個普通目錄,可以以一般的方法用  
      <code>mkdir</code>  
      造出來。然而,這些特別的檔案必須以特別的方法用 <code>mknod</code>  
      指令造出來。 
      <p>但還是有一條捷徑 -- 直接 copy 你現有 /dev  
      目錄的內容,然後再清除你不想要的設備檔。唯一的要求是  
      copy 這些特別的設備檔時,要用 <code>-R</code>  
      選項。這個選項會 copy 整個目錄中的檔案,但是不會 copy  
      這些檔案的內容。請確定使用 <em>大寫字母 R</em>  
      。這個指令是: 
      <pre>        cp -dpR /dev /mnt
</pre> 
      <p>在此我們假設磁片是被掛在 /mnt 底下。 <code>dp</code>  
      選項 (switches) 確保 symbolic links 是以 links 的方式來 copy  
      ,而不是 copy 鏈結檔所指向的 target file  
      ,同時原本的檔案屬性也被保留,因此保留了檔案的所有權資訊。 
      <p>如果你想要用高難度技巧完成這個任務,就利用 <code>ls  
      -l</code> 列出你想要的設備檔之 major 與 minor device numbers  
      ,然後再用 <code>mknod</code> 在磁片上造出它們。 
      <p>無論如何 copy  
      這些設備檔,還是要檢查任何你所需之設備檔 (device  
      special file) 是否已放入這張救援磁片中。舉例來說, <code>ftape</code>  
      使用磁帶設備,如果你想要從 bootdisk  
      存取軟式磁帶機,你就需要 copy 所有有關的設備檔。 
      <p>請注意,每一個設備檔需要一個 inode ,但 inodes  
      一直都是稀少的資源,特別是在磁片 filesystems  
      上。因此,從磁片上的 /dev  
      目錄移除任何你所不需要的設備檔是有意義的。舉例來說,如果你沒有  
      SCSI 磁碟,你可以放心地移除所有以 <code>sd</code>  
      開頭的設備檔。同樣地,如果你並不想使用你的序列埠  
      (serial port) ,那麼你也可以移除所有以 <code>cua</code>  
      開頭的設備檔。 
      <p><em>請確定從這個目錄放入了以下檔案的: </em><code>console,  
      kmem, mem, null, ram0 and tty1</code>. 
      <p> 
      <h3>/etc</h3>
      <p><!--
etc directory
-->
      <p>這個目錄包含了重要的組態設定檔。在大部分的系統上,這些檔案被分為三個群組:
      <p> 
      <ol>
        <li>一直都是必備的, <i>e.g.</i> <code>rc, fstab, passwd</code>  
          。 <!-- 
rc 
--> 
          <!-- 
fstab 
--> 
          <!-- 
passwd 
--> 
        <li>可能是必備的,但是沒有人能十分確定。 
        <li>偷跑進來的垃報。</li> 
      </ol> 
      <p>通常可以用以下指令識出哪些是非基本的檔案: 
      <p>  
      <blockquote> 
        <code> 
        <pre>        ls -ltru
</pre> 
        </code> 
      </blockquote> 
      <p>這個指令將檔案依據上次被存取的日期,以先早後晚  
      (reverse)  
      的順序列出,所以如果有任何檔案不會被存取,那麼它們就可以從  
      root 磁片中刪去。 
      <p>在我的 root 磁片上,我的組態檔數目已減至 15  
      個。這可減少我處理以下三種檔案的工作: 
      <p>  
      <ol> 
        <li>我必須為 boot/root 系統進行組態設定的檔案: 
          <ol> 
            <li>rc.d/* -- 系統啟動與改變 run level 的 scripts 
            <li><code>fstab</code> -- 要被掛上的 file systems 清單 
            <li><code>inittab</code> -- 給 <code>init</code> process  
              的參數,於開機時啟動的第一個 process 。 <!-- 
init 
--> 
            </li> 
          </ol> 
        <li>我們應該為 boot/root 系統整理的檔案: 
          <ol> 
            <li><code>passwd</code> -- 重要的使用者、 home  
              目錄等其它項目的清單。 
            <li>group -- 使用者群組。 <!-- 
user groups 
--> 
            <li>shadow -- 使用者的密碼。你可能沒有這個檔。 <!-- 
shadow passwords 
--> 
            <li>termcap -- the terminal capability database.</li> 
          </ol> 
          如果系統安全 (security) 對你很重要,那麼 passwd 與  
          shadow 應該被刪減,以避免將使用者密碼 copy  
          出系統,這樣當你從磁片開機時,不想要的 logins  
          會被拒絕。 <!-- 
restoring files 
--> 
          請確定 <code>passwd</code> 至少包含了 <code>root</code>  
          。如果你要讓其他的使用者 login ,請確定他們的 home  
          目錄與 shells 都存在。 termcap  
          ,終端機資料庫,一般而言有幾百個 kilobytes 。你  
          boot/root  
          磁片的版本應該被刪減到只包含你所使用的終端機,這通常就是  
          <code>linux</code> 或 <code>linux-console</code> 項目 (entry) 。 
        <li>The rest. They work at the moment, so I leave them alone.</li> 
      </ol> 
      <p>Out of this,  
      我實際上只必須設定兩個檔,而它們所應包含的項目驚人地少。 
      <ul> 
        <li>rc 應該包含: 
          <pre>        #!/bin/sh
        /bin/mount -av
        /bin/hostname Kangaroo
</pre> 
          請確定上述的目錄都是正確的。你並不需要真地去執行  
          <code>hostname</code> -- 如果你執行只是讓系統比較好看 (譯註:如此系統會有個名字)  
        <li><code>fstab</code> 應該至少要包含: 
          <pre>        /dev/ram0       /               ext2    defaults
        /dev/fd0        /               ext2    defaults
        /proc           /proc           proc    defaults
</pre> 
          你可以從你現存的 fstab copy  
          你想要的項目,但是你並不應該自動地掛上你硬碟任何的  
          partitions ;請對這些項目使用 <code>noauto</code> 關鍵字 (譯註:用  
          noauto 代替 default ) 。當使用 bootdisk  
          時,你的硬碟可能是早已損壞或掛了。</li> 
      </ul> 
      <p>你的 <code>inittab</code> 應該被改變,以使其中 <code>sysinit</code>  
      這行能執行 rc 或無論什麼將被執行的基本開機 script  
      。同時,如果你想要確保不可從序列埠 login  
      ,請在所有行尾包括 ttys 或 ttyS 的 getty 項目前加上「#」符號  
      (comment out) 。請保留 tty 埠以讓你可以在 console 前 login 。 
      <p>一個最起碼的 <code>inittab</code> 檔看起來樣這樣: 
      <pre>        id:2:initdefault:
        si::sysinit:/etc/rc
        1:2345:respawn:/sbin/getty 9600 tty1
        2:23:respawn:/sbin/getty 9600 tty2
</pre> 
      <p><code>inittab</code>  
      檔定義了系統在各種不同的情況中將執行什麼項目,包括  
      startup 、切換至多使用者模式等等。請仔細地檢查在  
      inittab 中被提及的檔案名稱 (filenames) ;如果 <code>init</code>  
      不能找到所提及的程式,那麼 bootdisk  
      將會停止運作,而你甚至不會得到錯誤訊息。 
      <p><!-- 
hardcoded locations 
--> 
      <p>請注意,某些程式不能被移到其它地方,因為其它程式已在撰寫時,就把它們的檔案位置寫死了  
      (hardcode) 。舉例來說在我的系統上, /etc/shutdown 已把  
      /etc/reboot 的位置寫死在其中。如果我移動了 reboot 到  
      /bin/reboot,然後下達一個 <code>shutdown</code>  
      指令,將會因為找不到 <code>reboot</code> 檔而發生錯誤。 
      <p><!-- 
etc directory 
--> 
      <p>剩下來的,就是 copy 在你 /etc 目錄中的所有文字檔  
      (text files) ,再加上在你 /etc  
      目錄中,你無法確定你需不需要的所有可執行檔。需要指示  
      (guide) 者,請參考在 <a href="http://www.linux.org.tw/CLDP/Bootdisk-HOWTO-13.html#Listings">Sample  
      roodisk directory listings</a> 的樣本清單。也許只要 copy  
      這些檔案就足夠了,但是系統差異會有很大的影響,所以你無法確定你系統上相同的檔案組合,就一定等於清單中的檔案。唯一確定的方法就是從  
      <code>inittab</code> 著手,並找出需要什麼。 
      <p>現在大部分的系統使用 /etc/rc.d/  
      目錄,其中包含給不同 run levels 的shell scripts  
      。最起碼會有一個單一的 rc script,但是僅從你現存的系統  
      copy <code>inittab</code> 與 /etc/rc.d 這兩個目錄,然後刪減  
      rc.d 目錄中的 shell scripts 以移除和磁片系統環境無關的  
      processing ,會是較為簡單的做法。 
      <p>  
      <h3>/bin 與 /sbin</h3> 
      <p><!-- 
bin directory 
--> 
      <!-- 
sbin directory 
--> 
      <p>/bin 目錄是一個放置為了執行基本作業 (operations)  
      而所需之額外工具程式的方便好地方,這些工具程式諸如  
      <code>ls</code>, <code>mv</code>, <code>cat</code> 與 <code>dd</code> 。  
      bin/ 與 /sbin 這兩個目錄的檔案清單範例請見 <a href="http://www.linux.org.tw/CLDP/Bootdisk-HOWTO-13.html#Listings">Sample  
      rootdisk directory listings</a>  
      。但範例中並沒有包括任何從備份復原時所需之工具程式,諸如  
      <code>cpio</code>, <code>tar</code> 與 <code>gzip</code>  
      。這是因為我把這些東西放在另一張 (separate)  
      工具程式磁片上,以節省 boot/root 磁片的空間。一旦  
      boot/root 磁片被開機啟動,就會被 copy 到 ramdisk  
      並釋放軟碟機,讓軟碟機能掛上另一張磁片,就是工具程式片。我通常把它掛上當做  
      /usr 。 
      <p>工具程式磁片 (utility diskette) 的製作被描述在下面 <a href="http://www.linux.org.tw/CLDP/Bootdisk-HOWTO-8.html#UtilityDisk">Building  
      a utility disk</a>  
      這節。保留一份相同版本之備份用工具程式的copy是比較好的,這個備份用工具程式被用來製作備份,如此你就不用浪費時間在嘗試安裝不能讀取你備份磁帶的版本。 
      <p>請確定你包括了以下程式: <code>init</code>, <code>getty</code>  
      或相等的程式, <code>login</code>, <code>mount</code>,  
      某種可以執行你rc scripts 的 shell, 以及一個從 <code>sh</code>  
      指向這個 shell 的 link 。 
      <p><!-- 
init 
--> 
      <!-- 
getty 
--> 
      <!-- 
login 
--> 
      <!-- 
shells 
--> 
      <p>  
      <h3>/lib</h3> 
      <p><!-- 
library (lib) directory 

⌨️ 快捷键说明

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