
Centos 7.6 ISOの起動時に更新されたinitrd.imgファイルと更新されたドライバをロードしようとしましたが、ドライバを交換しても以前のドライバがロードされているようです。
取るべきステップ:
ISOからinitrdイメージを抽出します。
- CentOS 7.6 ISOのインストール
- isolinux/initrd.img から initrd.img を一時フォルダー (/tmp/image) にコピーします。
- /tmp/image/initrd に新しいフォルダを作成します。
- 次のコマンドを実行して initrd.img フォルダを抽出します。
xz -dc < ../initrd.img | cpio -idmv
e1000e.ja.kz ドライバファイルの生成
- Intelのウェブサイトから最新のe1000eネットワークカードドライバをダウンロードしてください。 e1000eダウンロードリンク
- tarファイルの抽出
tar xvf e1000e-3.6.0.tar.gz
ソースコードを作成し、gcc および kernel-devel ライブラリがインストールされていることを確認します。
cd e1000e-3.6.0/src make install
注:このドライバは、CentOS 7.6 ISOで生成されたLinux環境でコンパイルされました。
生成されたe1000e.koファイルを一時フォルダ(/tmp/image)にコピーします。
.kz形式に圧縮
xz -k e1000e.ko
古いドライバーを交換し、initrd.img イメージを再パッケージ化します。
既存のドライバを置き換えるには、圧縮ドライバファイルをコピーします。
cp e1000e.ko.kz /tmp/image/initrd/files/lib/modules/3.10.0.957.el7.x86_64/kernel/drivers/net/ethernet/intel/e1000e
- initrd.img 再パッケージ
cd /tmp/image/initrd find . 2>/dev/null | cpio -c -o | xz -9 --check=crc32 > ../initrd.img
- 生成されたinitrd.imgをISOのisolinux / initrd.imgとImages / pxe / initrd.imgにコピーします。
期待されるパフォーマンス
initrd.imgでドライバを更新してISOにコピーした後、ISOインストールの起動プロセスが完了したら、新しいドライバ(e1000eバージョン3.6.0)をロードしようとしています。
実際の結果
ISOから起動してCentos 7をインストールできますが、Centosをインストールした後に次のコマンドを実行します。
modinfo e1000e
initrd.img イメージにロードされたバージョン 3.6.0 の代わりに、元の initrd.img の以前のバージョンのドライバー (e1000e バージョン 3.2.6) を提供します。
ドライバを誤って生成したのか、ドライバを誤ってロードしたのか、initrd.imgを誤って生成したのか、私が間違っているのかわかりません。
過去数日間働いてみましたので、どんな助けにも感謝します。これは私の最初の投稿なので、何か間違っているか、この問題をデバッグするために追加情報が必要な場合はお知らせください。
乾杯
答え1
ちょうど調べました。ドライバはLiveOS / squashfs.img rootfs.imgにもあります。したがって、initrdモジュールはrootfs.imgによって上書きされます。これはインストール中に発生しますが、インストールされたシステムが起動すると、ドライバはインストールされているRPM(この場合はカーネル)から提供されるため、initrdはこれに関連しません。インストールされたシステムで実行するには、このRPMを更新するか、更新されたドライバを含む別々のRPMを追加する必要があります。