CDlinux HOWTOs 文檔

English    Russian    簡體中文    繁體中文   
首頁

目錄

安裝


定制


配置



使用

安裝

如何“安裝” CDlinux?

    CDlinux 是個從光盤啟動、運行的小 Linux,是以一個標准的 ISO 文件的形式發布的。所以最簡單的“安裝”方法是:把這個 ISO 文件刻錄到光盤上,用它啟動機器就是了。

    當然,你也可以把 CDlinux 安裝到硬盤或 U 盤、USB 移動硬盤上(請參見下文)。

如何把 CDlinux 集成到我自己的光盤上?

    CDlinux 本身很小,0.4.9 只有不到 17 兆,這比一張刻錄盤的容量差多了。所以,如果有興趣的話,你可以自己動手,把 CDlinux 與其它軟件集成到一起,不必單刻一張盤。還可以與其它系統一起做成多啟動光盤。具體操作既可以在 Linux 下進行,也可以在 Windows 下進行:

用 Linux 的方法 (以下操作可以在 CDlinux 也可以在一般的 Linux 系統中進行)

    首先要把 CDlinux 的內容從 ISO 鏡像里展出來,先挂載它:

        # mount -o loop CDlinux-x.x.x.iso /some/where

    這樣 CDlinux 里的具體內容就都在 /some/where 目錄下了。假設你已經把其它要刻到盤上的軟件都放到了 /mycd 目錄下,現在把 CDlinux 也拷到那個目錄里:

        # cp -p -r /some/where/* /mycd

    接下來 cd /mycd,打開 mkisofs.sh 文件,根據你自己的具體情況進行必要的修改,存盤退出。最后,執行:

        # ./mkisofs.sh

    生成新的光盤鏡像,缺省情況下新鏡像是 /tmp/1.iso。現在就可以把它刻錄出來了。

    注意,通過以上步驟做出的光盤啟動時會直接進入 CDlinux,啟動效果和原來的 ISO 鏡像是一樣的。如果你想制作帶菜單的多啟動光盤,還需要用到 ISOlinux (SYSlinux 的一個組件) 等其它工具,至于如何使用它們,請參見它們各自的文檔。

用 Windows 的方法


    這個我不太熟,不過我想也不會太麻煩。只要注意以下几點就行了:
  • 可以用 WinRAR 來提取光盤鏡像里 CDlinux 的內容﹔
  • CDlinux 是通過 boot/CDlinux/CDlinux.img 這個 2.88M 軟盤鏡像來啟動的﹔
  • 請保持 CDlinux 的目錄結構,不要改動﹔
  • 不要改變文件/目錄名的大小寫。
如何把 CDlinux 安裝到硬盤上?

    Linux 本身功能非常強大又非常靈活,CDlinux 也繼承了這一點,所以稍加定制就可以把它安裝到各種各樣的設備上。并且僅僅把 CDlinux 安裝到硬盤上就有很多種方案可選,這里我們只介紹一種方案:把 CDlinux 安裝到一個 Windows FAT 分區里,用 loadlin 來啟動它。

    在以下的說明中,我們假設你的 Windows 的“C: 盤”是 FAT16 或者 FAT32 格式的,并且它對應 Linux 下的 /dev/hda1。我們將把 CDlinux 安裝到“C: 盤”上。

用 Linux 的方法 (以下操作可以在 CDlinux 也可以在一般的 Linux 系統中進行)

    首先,挂上 CDlinux 的 ISO 鏡像和 C: 盤:

        # mount -o loop CDlinux-x.x.x.iso /mnt/cdrom
        # mount /dev/hda1 /mnt/win

    (如果你不想裝到 C: 盤上,或者你的 C: 盤不是 /dev/hda1,請對上述命令做相應的修改)

    然后把 extra/ 目錄下的內容拷貝到 C: 上:

        # mkdir /mnt/win/CDlinux
        # cp -r /mnt/cdrom/boot/CDlinux/extra /mnt/win/CDlinux

    接下來,把內核和 initrd 也拷到 C: 盤:

        # mount -o loop /mnt/cdrom/boot/CDlinux/CDlinux.img /mnt/floppy
        # cp /mnt/floppy/bzImage /mnt/floppy/CDlinux.gz /mnt/win/CDlinux

    最后,下載 loadlin (~10k) 并把它展到 C: 盤上:

        # tar -C /mnt/win/CDlinux -zxf loadlin.tgz

    (這步把“loadlin.exe”和一個“autoboot.bat”批處理文件拷貝到 /mnt/win/CDlinux 目錄里。請檢查“autoboot.bat”文件,并根據你自己的具體情況做相應的修改。)

    現在,可以重啟到純 DOS 環境,用以下命令來啟動 CDlinux 了:

        C:
        CD CDlinux
        AutoBoot

    注意,以上步驟只是一個簡單的例子,這里的假設可能和你的情況并不一致。所以,在操作時別忘了根據自己的具體情況做必要的修改。另外請參考“簡介:CDlinux 的命令行參數”和“簡 介:CDlinux 的結構”。

如何把 CDlinux 安裝到 U 盤上?

    把 CDlinux 安裝到 U 盤也有多種方案可選。我們還是只說一種:安裝到 U 盤上的一個 FAT 分區里,并用 SYSlinux 來啟動。

    在以下的說明中,我們假設你的 USB 盤(U 盤或 USB 移動硬盤)被設定為硬盤模式。上面的第一個分區是 FAT12、FAT16、或者 FAT32 格式的,并且它對應 /dev/sda1。

用 Linux 的方法 (以下操作可以在 CDlinux 也可以在一般的 Linux 系統中進行)

    首先,在 USB 盤上安裝 syslinux:

        # syslinux /dev/sda1

    挂載 CDlinux 的 ISO 鏡像和 USB 盤:

        # mount -o loop CDlinux-x.x.x.iso /mnt/cdrom
        # mount /dev/sda1 /mnt/win

    (如果你的 USB 盤不是 /dev/sda1,請做相應的修改)

    然后,把 extra/ 目錄下的內容拷貝到 USB 盤上:

        # mkdir /mnt/win/CDlinux
        # cp -r /mnt/cdrom/boot/CDlinux/extra /mnt/win/CDlinux

    接下來,把內核和 initrd 也拷過去:

        # mount -o loop /mnt/cdrom/boot/CDlinux/CDlinux.img /mnt/floppy
        # cp /mnt/floppy/bzImage /mnt/floppy/CDlinux.gz /mnt/win

    最后,下載 syslinux 的配置文件 (~2k) 并把它展到 USB disk 盤上:

        # tar -C /mnt/win -zxf syslinux-cfg.tgz

    (這一步將把“syslinux.cfg”和一些顯示信息等文件拷貝到 /mnt/win 目錄下。不要忘了先檢查一下“syslinux.cfg”,并根據你自己的具體情況做相應的修改。)

    現在可以把你的 BIOS 設置成從 USB-HDD 或者 USB-zip 啟動。(具體設為那種和你的 BIOS 及 USB 盤有關,試一下就知道了。)

    注意,以上步驟只是一個簡單的例子,這里的假設可能和你的情況并不一致。所以,在操作時別忘了根據自己的具體情況做必要的修改。另外請參考“簡 介:CDlinux 的命令行參數”和“簡 介:CDlinux 的結構”。

簡介: CDlinux 的命令行參數

    為了讓 CDlinux 更靈活,不但能從光盤啟動,還能從其它各種設備啟動﹔并且不但能把模塊挂載到內存中(ramdisk),為了節約內存,還可以自動用“ loop”方式挂載 模塊,我們定義了下述三個內核命令行參數:

    CDL_DEV=:
      告訴 CDlinux 在哪個設備上可以找到附加的“包”和“模塊”
      缺省值:/dev/cdrom
      例子: CDL_DEV=/dev/hda1

    CDL_DIR=:
      extra/ 目錄在 CDL_DEV 的文件系統的那個目錄下?
      缺省值:boot/CDlinux, CDlinux, zxh/CDlinux
      例子: CDL_DIR=APPs/CDlinux

    CDL_LOOP:
      是否強制以“loop”方式加載“模塊”?
      缺省值:否,盡量把“模塊”挂載到內存里。
      例子: CDL_LOOP

    以上這三個參數都是可選的,正常從光盤啟動時可以一個也不加,使用缺省值即可。如果模塊太多或者太大,CDlinux 會自動以“loop”方式加載它們。不過這樣一來,在 CDlinux 運行時就不能把光盤拿出來了。

定制

簡介:CDlinux 的結構

    CDlinux 是高度可定制的。它由以下兩部分構成:

      1. “基本”部分:一張 2.88M 軟盤鏡像,CDlinux.img
      2. “附加”部分:其它附加的“包”和“模塊”

    “基本”部分就是一張 VFAT 格式的 2.88M 軟盤鏡像。上面包含了內核和一些最基本的軟件,包括:bash (1.14.7)、bftpd (一個小 ftp 服務器)、busybox、bzip2、e2fsprogs、file、find、gawk、grep、gzip、midnight commander (4.1.35)、portmap、sed、tar 和 vim (5.8) 等。如果只是需要一個最基本的 Linux 環境,你可以把 CDlinux 的其它內容統統刪掉,只保留這一個文件,一樣跑得不錯。

    “附加”部分包括其它一些有用的工具軟件,這些軟件被打成了“包”(package) 或者“模塊”(module),放在 extra/ 目錄下。啟動時,CDlinux 會自動到 extra/ 目錄下查找并安裝它們。

    雖然 CDlinux 只需 CDlinux.img 這一個文件就能跑起來,不過功能上就大打折扣了。所以最好還是保留這些附加的包和模塊。當然,你也可以向 extra/ 目錄里添加你需要的軟件,把那些你用不到的刪掉,自己定制一個 CDlinux 版本。

如何向 CDlinux 里添加其它軟件?

    CDlinux 很小,所以有很多有用的軟件并沒有被集成進來。不過你可以自己定制它,加上你需要的軟件。可以把軟件做成一個“包”或者一個 “模塊”加進來。具體用哪種格 式,取決于軟件的大小、是否需要初始化。小的、不需初始化的軟件可以做成“包”﹔反之,最好做成“模塊 ”。比如,你可以把 F-PROT 做成一個“模塊”添加到 extra/目錄下,這樣你就可以用 CDlinux 來殺毒了。(F-PROT 是個非常簡潔、功能非常強大的殺毒軟件,之所以沒有集成到 CDlinux 的發行版中,是因為我不知道它的 license 是否允許。)

為 CDlinux 添加軟件的注意事項
  • CDlinux 是用 gcc-2.95.3 編譯的,鏈接的是 glibc-2.2.5。你添加的軟件最好也是編譯、鏈接自同樣的環境﹔
  • 如果你加的軟件需要其它的,CDlinux 沒有提供的庫,請把這些庫也一起添加進來。

如何為 CDlinux 制作一個“包”(package)?

    做一個包非常簡單,所謂“包”就是一個標准的 .tar.gz 文件。關于這個 .tar.gz 文件里的目錄結構,你可以參考 extra/ 目錄下已有的那些“xxx-cdl.tgz”文件。制作時只需注意以下几點:
  • “包”的文件名必須是“xxx-cdl.tgz”,否則將被忽略,不會被安裝﹔
  • 如果愿意,你還可以為你的包加上一個簡短的說明,并把它存為 zxh/SPEC。啟動時 CDlinux 會自動把它集成到 /var/log/packages 里。關于 SPEC 的格式,請參照已有的“xxx-cdl.tgz”文件﹔
  • zxh/ 目錄里除了 SPEC 以外的所有其它內容都將被忽略,不被安裝﹔
  • CDlinux 是在一個小 RAM 磁盤里運行的,所以請盡量把包做得小一點。像 man 和 docs 等文檔都可以放到 zxh/ 目錄下,這樣它們就不會被安裝,你以后要查閱起來也比較方便。

如何為 CDlinux 制作一個“模塊”(module)?

    如果要添加的軟件比較大,可以把它做成一個“模塊”。“模塊”就是一個標准的 cramfs 鏡像,制作起來比做“包”稍麻煩一些,需要用 mkfs.cramfs 命令。“模塊”具體結構請參考 extra/ 目錄下已有的“xxx-cdl.md”文件。CDlinux 啟動時自動到 extra/ 下查找這些“xxx-cdl.md”,并自動挂載它們。

制作模塊時的的注意事項
  • “模塊”的文件名必須是“xxx-cdl.md”,否則將被忽略,不會被安裝﹔
  • 必須為模塊指定一個挂載點。方法是把挂載點寫到一個叫“.mount_point”的文件里,并把該文件放到 cramfs 的根目錄下。“.mount_point”文件的具體格式可以參考 extra/ 下已有的“xxx-cdl.md”文件﹔
  • 如果該軟件需要執行一些初始化操作,可以把初始化程序或腳本命名為“.init”放到 cramfs 的根目錄下,并將起屬性設置為可執行。啟動時 CDlinux 會自動找到并執行 .init﹔
  • 缺省情況下,CDlinux 會盡量把“模塊”都加載到內存中,內存不足時才以“loop”方式加載“模塊 ”。如果你想省出更多內存來運行程序,可以在內核命令行里加上 “CDL_LOOP”參數,來強迫 CDlinux 以“loop”方式加載所有模塊﹔
  • cramfs 是一種只讀文件系統,并且不記錄文件的時間信息。
如何按照我自 己的口味定制 CDlinux?

    如果 CDlinux 的缺省狀態不合你的胃口,你可以自己動手定制它。定制的辦法有難有易:

    “難”的辦法是挂上 initrd 直接修改。CDlinux 的 initrd 是一個標准的 ext2 鏡像,可以直接挂載、修改,沒有問題。不過我還是推荐你盡量使用下面的“簡單”辦法。

    “簡單”的辦法是,把修改的內容放到 extra/system-extra-cdl.tgz 文件里。比如,若是修改了 /etc/profile,把修改過的文件存為 system-extra-cdl.tgz 下的 /etc/profile。這樣 CDlinux 啟動時會自動用新的 /etc/profile 把舊的覆蓋掉。另外,如果需要的話,你還可以在 system-extra-cdl.tgz 文件里加上個 /etc/rc.d/rc.local 腳本,以執行你需要的一些初始化操作。下面是一些具體的例子:

修改 bash 的命令行提示符

    修改 CDlinux 原來的 /etc/profile 文件中帶“PS1=”的哪些行,把修改后的結果保存到 system-extra-cdl.tgz 里,仍為 /etc/profile。

把 bash 的命令行編輯模式由 emacs 改為 vi

    編輯 /etc/inputrc,加上“set +o vi”,把新文件存到 system-extra-cdl.tgz 里,仍為 /etc/inputrc。

讓 CDlinux 自動挂載 C: 盤

    編輯 /etc/fstab,把新文件存到 system-extra-cdl.tgz 里。

讓 CDlinux 自動加載非即插即用 ISA 設備的驅動

    假設你有一塊老 NE2000 兼容 ISA 網卡,非即插即用,IO 地址是 0x300。為了讓 CDlinux 能自動識別它,可以新創建一個腳本,在里面加上“modprobe ne io=0x300”,然后把它存為 system-extra-cdl.tgz 里的 /etc/rc.d/rc.local。

讓把 CDlinux 設置成一個簡單的網關/防火牆

    修改 iptables-x.x.x-cdl.tgz 包,加上個 /etc/rc.d/init.d/IPTABLES 腳本,在這個腳本里設置網關/防火牆的規則。關于該腳本的格式,請參照 extra/dcron-x.x.x-cdl.tgz 包。
    事實上 CDlinux 啟動時會自動查找 /etc/rc.d/init.d/ 下的可執行文件,并運行它們。這有點像 sysvinit 的機制,只不過 CDlinux 不支持運行級的概念。

配置

如何配置網絡?

    CDlinux 可以自動檢測很多常見的以太網卡,不過為了讓它小一點,更多網卡的驅動沒有編到內核里,而是做成了內核模塊。啟動時,CDlinux 會試圖自動檢測你的網卡,但如果內核已經識別了一塊或者一塊以上網卡,CDlinux 就會跳過網卡自動檢測。

    啟動以后如果你想自己動手檢測網卡,可以執行:

    # nic-detect

    這是個簡單的腳本文件,目前功能還不是很完善,在檢測過程中甚至可能會造成死機!所以請小心使用。如果出現了什么錯誤,煩請通知作者,多謝!

    CDlinux 里帶了 DHCPC 程序,如果你所在的網絡里有 DHCP 服務器的話,會自動配置好你的 IP 地址、網關、域名服務器等。你也可以自己動手用如下命令來配置 IP、DNS 等:

        # net-config

    設置代理服務器可以用:

        # proxy-config

    修改網卡的 MAC 地址:

        # mac-fake

如何配置 RAID 設備?

    SCSI 和 RAID 設備的驅動都做成了內核模塊,CDlinux 不能自動檢測它們,你需要自己加載它們的驅動(內核模塊)。下面這個例子假設你有一個基于 AHA1542 芯片的 SCSI 卡,上面連了兩個 SCSI 盤,分別是 /dev/sda、/dev/sdb。并且通過軟件 RAID 把 /dev/sda1 和 /dev/sdb1 做成了一個 RAID0 設備。可以通過如下命令來驅動它:

    # modprobe aha1542
    # modprobe raid0
    # mdadm -A /dev/md0 /dev/sda1 /dev/sdb1

    好了,現在你可以通過 /dev/md0 來訪問這個 RAID0 設備了。

如何配置鼠標?

    用 mouse-config 命令。(支持絕大多數 COM/PS2/USB 鼠標)

使 用

如何讀/寫中、日、韓文?

    用 CCE:

       cce    - 中文 (簡體)
       cceb5  - 中文 (繁體)
       ccejis - 日文
       cceksc - 韓文

    在 CCE 里,可以用“Ctrl+空格”或“Ctrl+Shift”切換輸入法。(如果你不需要中、日、韓文支 持,可以把 extra/cce-x.x.x-cdl.tgz 文件刪掉,沒有問題。)

如何與其它計算機交換數據?

    CDlinux 里已經帶了 ftp、ssh1 和 nfs3 客戶端/服務器。缺省狀態下 ftp 和 ssh 服務器已經啟動。所以最簡單的交換數據的方法就是用 ftp 和 scp。

    缺省狀態下 nfs 服務器沒有 export 任何資源,你需要先編輯、修改一下 /etc/exports,指定 export 哪些目錄,和 export 的方式,然后執行:

        # /etc/rc.d/init.d/UNFSD restart

    CDlinux 里還帶了 nfs 和 samba 的客戶端。要挂載 nfs 資源:

        # mount -t nfs xx.xx.xx.xx:/exported/resource /some/where

    挂載 samba 資源:

# mount -t smbfs -o username=xx //machine_name/resource_name /some/where

如何改變分區大小、修改分區表?

    請使用“parted”或者“resize2fs”等。

如何修復被損壞了的分區表?

    用“gpart”。(這個版本已打過 reiserfs-3.6 補丁,可以放心使用)

如何從 ext2 文件系統中恢復被誤刪除的文件?

    用“e2undel”。

LILO/GRUB 被 Windows 覆蓋了,如何修復?

    安裝 Windows 9x 會覆蓋硬盤的主引導記錄,導致原來安裝的 Linux 無法啟動,這時你可以啟動 CDlinux 來進行修復。

    首先,挂上 Linux 的根分區,比如說 /dev/hda5:

  # mount -t ext2 /dev/hda5 /mnt/local

    然后,假設你是用 LILO 來引導的:

  # lilo -r /mnt/local

    如果不成功,可以再試試:

  # chroot /mnt/local /sbin/lilo

    如果還是不行,再仔細找找原因,比如是不是上面 LILO 的路徑不對等。耐心點,只要 Linux 的分區沒有被破壞,一定可以恢復的。如果你是用 GRUB 來引導系統的,方法也和上面的類似。LILO/GRUB 的具體使用方法,請參考它們各自的文檔。

Windows 9x 覆蓋了 NT/2k/XP 的引導記錄,“雙啟動菜單”不見了,如何修復?

    假設你的“C: 盤”是 /dev/hda1,格式是 FAT32,新裝的 Windows 98 破壞了 XP 的引導記錄,現在只能進 98 了。這種情況可以試試用 CDlinux 來修復:

        # ms-sys -2 /dev/hda1

    關于 ms-sys 的具體用法,請參見它的文檔。

NT/2k/XP 的管理員密碼丟了,怎么辦?

    如果忘了 NT/2k/XP 的管理員密碼,想再找回來是很難的。不過你可以用 CDlinux 再強行重設一個密碼,或者干脆把密碼清空。執行:

        # nukent

    然后按提示操作。(注意:對于較新版本的 Windows,如 Windows XP + SP2,修改密碼功能已經不起作用,但清空密碼還好使。)


    CDlinux 里帶了很多實用工具,關于它們的用法的簡短說明,可以參考 /var/log/packages。另外,許多軟件的 man 手冊和文檔被放在了對應的“xxx-cdl.tgz”文件的 zxh/ 目錄下,沒有安裝,你可以挂上 CDlinux 光盤,查閱這些文件。關于某個軟件的具體用法,已經超出了這個 mini-HOWTO 的范圍,請參考它們各自的文檔。RTFM 可是一種很好的學習方法 :)
頁首
 
感謝 BerliOS Developer LogoSourceForge.net Logo 提供主頁空間    最后修改時間:2006/11/03