2

Linux-3.2.0 (Ubuntu を実行) のバイオ構造 (blk_types.h 内) を変更しようとしています。この構造体に対して行う必要があるのは、整数変数を追跡するための変数を追加することだけです (汚染アルゴリズムのためです)。ただし、「int id;」などの 1 行を追加すると、OS のブート シーケンスを停止します。

コンパイルはできますが、起動時に次のエラーが発生します。

>Gave up wiating for root device. Common problems:  
>Boot args  
>check rootdelay= ...  
>check root= ...  
>missing modules (cat /proc/modules; ls /dev)  
>ALERT! /dev/disk/by-uuid/15448888-84a0-4ccf-a02a-0feb3f150a84 does not exist. Dropping to a shell!  
>BusyBox Built In Shell ...  
>(initramfs)

指定されたシェルを使用して見回しましたが、uuid またはその他の方法で目的のファイルシステムを見つけることができませんでした (/dev/sda はありません)。何が起こっているのでしょうか?

ありがとう、

-ミシウ

4

2 に答える 2

1

ユーザーランドの「友達」bui.hではなく、Linuxカーネルヘッダーbio.hを変更しようとしていると思います。

カーネルの周りの多くの場所でsizeof()が使用されている可能性があり、より移植性が高く、おそらく他の実装やAPIが固定サイズを期待している可能性があることを警告する必要があります。後者が当てはまる場合は、bioの構造体サイズが変更されているため、問題が発生します。

それは私の側からのさらなる調査なしの推測です(つまり、私はバイオについて詳細に調査していませんでした)が、Linuxカーネルにパッチを適用するときは、起こりうる副作用を確認し、特に変更するときにシナリオ全体を考慮に入れる必要があります下位レベルの実装。

バイオヘルパー関数は、バイオ構造体に対して多くの低レベルの操作を実行します。たとえば、bio_integrity.cで略奪します。

于 2013-01-11T16:45:09.820 に答える
1

私はあなたの助けを借りて問題を解決することができました。モジュールの再構築/インストールはすぐには役に立たないように見えましたが、次のフォーラム スレッドでアドバイスされているように、カーネルに SATA ドライバを構築することでシステムを起動することができました: https://unix.stackexchange.com/ question/8405/kernel-cant-find-dev-sda-file-during-boot .

ご協力いただきありがとうございます、

-ミシウ

于 2013-01-25T20:48:14.233 に答える