OpenCoreとCloverのkernel patch互換の仕方(暫定、AMD関係者必見!)[How to make kernel patch compatible between OpenCore and Clover (provisional, must-see for AMD personnel!)]

Hackintosh

Please Use Translate Tab to read this in your language.
今、Clover Discussionで問題になっている、AMDに使うKernel Patchで気を付ける部分が変わりました。うまくいきそうなので、暫定報告です。
Icanaro氏による以下の表が元です。

開発者のSlice氏による意見は以下の通りです。

 Cloverの場合、検索文字列の長さをゼロにすることはできません。その長さは、置換の長さと同じである必要があります。 他のものを検索しない場合は、手順を開始してから、Find = <00>およびMaskFind = <00>(注:実は間違えでした)を使用します。置換の長さを参照してください。また、置き換える場合はMaskReplace =<FF>RangeFindを10に制限して、検索を高速化することもできます。

実は開発者のSlice氏も気づいていなかったのですが、MaskFindの値は、私が以下のように尋ねたところ、

like this?

If this like IP Mask,FFFFF…?

Slice氏から答えが返ってきました。

 正確な一致が必要な場合はFFFFFFF。最初のバイトを正確に、2番目を任意にする場合は、FF00 すべてのバイトを。任意にしたい場合は00000000 、FEFFFFの場合、最初のバイトに任意のビット0があります。等々。 OCはバイト比較のみを提供し、Cloverはビットごとの比較を提供することに注意してください。

 というわけで、「Maskする→True=1→これを各ビットに置く」なので、ビットを立たものはマスクしないというのがOpenCoreの解釈です。同様に、CloverはIPのアドレスマスクのように「論理積(AND)を取って残る部分=正確にマッチすべき部分」なので、ちょうど、同じ値が相当します。

簡単に言うとOpenCoreではMaskはしない場合省略でき、全部がマスクされませんが、Cloverの場合、MaskFind=<FF>で例としては

Find      data    B9A00100000F32
MaskFind  data    FFFFFFFFFFFFFF

の表現を外すことができません。
 MaskReplaceについても同様で、<FF>の場合でもOCのように外すことができません。

コメント

Translate »
タイトルとURLをコピーしました