小黑 寫:謝謝阿信大大的回覆
這幾天都在研究,終於用 debootstrap 把系統裝起來
但現在問題是怎樣把 compile 出來的 ft3xx 這個module 直接 compile 進 kernel 入面
因為 系統會先 mount filesystem 而做成 kernel panic
後來我在討論區發現了以下這篇文章
viewtopic.php?t=1004但就是不明白如何把 module 編進 kernel 入面
或是有沒有方法先把 module 先 load 起來才 mount filesystem?
我有看過一位日本人寫的 tutorial , 他是運用 redhat 的 mkinitrd 去 preload kernel module
http://copper.matsc.kyutech.ac.jp/~yoshi/linux/sata/但這只適用於 debian 2.4.22 , 2.4.24 以上的 kernel 失敗的原因是 lodevsetup 找不到 loop device 的問題, 所以用 mkinitrd 也是不太可行
請問各位大大有什麽頭緒嗎?
首先呢,恭喜小黑兄已經完成了 debootstap 安裝,可喜可賀阿。
小弟先解釋一下 Debian 的 initrd.img。
Debian 的 initrd-tools 跟 redhat 不同,修改的檔案列表在 /etc/mkinitrd 目錄下。
其中重要的是 mkinitrd.conf 這個檔案。
# What modules to install.
MODULES=most
# The length (in seconds) of the startup delay during which linuxrc may be
# interrupted.
DELAY=0
# If this is set to probe mkinitrd will try to figure out what's needed to
# mount the root file system. This is equivalent to the old PROBE=on setting.
ROOT=probe
# This controls the permission of the resulting initrd image.
UMASK=022
# Command to generate the initrd image.
MKIMAGE='mkcramfs %s %s > /dev/null'
預設值是如此,一般是不需要動到,只要確定 kernel config 有將 cramfs 編入核心,其餘的 fs 都編譯成 Module 即可,在開機的時候,load initrd.img 之後,會判斷 root fs 格式在掛載正確的 fs module。
如果想要讓 kernel 載入特定的 module,請編輯 /etc/mkinitrd/modules
# /etc/mkinitrd/modules: Kernel modules to load for initrd.
#
# This file should contain the names of kernel modules and their arguments
# (if any) that are needed to mount the root file system, one per line.
# Comments begin with a `#', and everything on the line after them are ignored.
#
# You must run mkinitrd(8) to effect this change.
#
# Examples:
#
# ext2
# wd io=0x300
建立 initrd.img 的方式:mkinitrd -o /boot/initrd.img-kernel-version /lib/kernel-version。
缺少 loop device 有可能是在編譯 kernel 時少掉了 loop 選項,且查明看看。
另外呢,請教小黑兄,ft3xxx是什麼檔案格式呢?小弟孤陋寡聞,還請見諒。
一點小建議:可以直接抓取 Debian 包裝的 kernel-image 中的 config 來編譯,或是直接安裝,相信一定可以正常開機的。