2009년 5월 26일 화요일

Chameleon bootloader with SSDT and DSDT override

First of all, Thanks ab___73.


source : http://www.insanelymac.com/forum/index.php?showtopic=145792&pid=1163564&mode=threaded&start=#entry1163564

This posting will be translate to Korean, that's why ab_73's posting is in here for understanding who duuno english.

Update:


Upload of Release version 1 with source code.

boot1h 와 관련된 파일크기의 제약상 SMBIOS나 /Extras폴더와는 아직 호한이 안된다는 점을 유의해 주세요.

변경사항:

+ load upto 30 SSDT tables.
+ load extra additional SSDT tables.
+ ACPI v1 and v2 and v3 support.
+ source code refined.

SSDT 테이블을 올려주시면 많은 사람들에게 도움이 될것입니다.
가능하면 www.mediafire.com 에 올려주시면 되겠습니다.

다음 부트로더를 다운로드 받으세요.
Attached File ssdtboot_chameleon2.zip ( 314.39K ) Number of downloads: 500


Update:

30 SSDT tables을 로딩할 수 있게 소스코드를 수정하였다. 테스트 중에 있으며, 성공하면 이 bootloader 와 소스코드를 공개할 것입니다.
tonight.

SMBIOS source code diff를 추가하는 부분에 있어 몇가지 이슈가 있는데, 부트파일의 파일크기 제한과 관련된 것 같군요.
만약 파일크기가 62000bytes 이하에서 bootloader를 운용하게끔 한다면 SMBIOS + DSDT + SSDT 패치를 62700bytes 까지 증가시킬 수 있을 것 같습니다. 부팅시에 /boot0 hang이라는 부팅에러를 겪었다면 이 부분이 해결될 수 있겠군요.

파일 크기 제한과 관련하여 어떤분이라도 좋으니 알고 있으신 분은...^ ^

왜 boot1h 가 단지 <64k boot 파일 이하로 로딩해야 하는 건지...알고 싶습니다!!

-------------------


아주 일반적인 chameleon DSDT override bootloader 를 수정하였는데, 이는 수정된 DSDT 와 SSDT 테이블을 로딩하기 위한 것입니다.

다음과 같은 이점이 있습니다:

+ 컴파일 에러를 이해하고 또, SSDT 테이블 내에서 가끔은 DSDT가 external methods를 레퍼런스 하기도 합니다..

+ Fix Powermanagement.

+ Fix PStates (CPU performance management)

+ Fix CStates (Power Saving managenent)

+ Fix TStates (CPU throttling)

+ View SATA controllers ACPI functions.

이 버전은 디버그 버전입니다. 곧 새로운 버전을 소스코드와 같이 발표할 것입니다.

Chameleon bootloader 와 DSDT 패칭 프로젝트에 관심 가져줘서 고맙군요.

이 bootloader를 이용할려면,

특정 폴더에 압축을 풀고.

Terminal 에서 해당 폴더로 이동합니다.

기존의 bootloader를 다음과 같이 백업합니다.

#sudo cp /boot /boot.bak

사용할 bootloader 를 다음과 같이 복사하여 줍니다.

#sudo cp ssdtboot /boot

SSDT 테이블을 추출하기 위해서는

터미널에서 압축을 풀어놓은 폴더로 이동하여 다음과 같이 실행합니다.

#./getSSDT5.sh

이 명령어는 다음과 같은 디컴파일된 SSDT 테이블을 생성합니다.

SSDT-0.dsl
SSDT-1.dsl
..
SSDT-4.dsl

SSDT Tables의 숫자는 하드웨어 숫자에 기인하므로 숫자에 연연할 필요는 없습니다

텍스트 에디터나 Text Mate를 이용하여 이 화일들을 열어서 수정합니다.

SSDT tables수정하였으면, 터미널에서 다음과 같은 커맨드를 입력하여 컴파일 하여 줍니다.

./iasl -sa SSDT-0.dsl
./iasl -sa SSDT-1.dsl
./iasl -sa SSDT-2.dsl
..

./iasl -sa SSDT-x.dsl
(where x is the table you wish to compile)

컴파일된 파일을 다음과 같은 명령어를 이용하여 최상위 디렉토리에 복사하여 줍니다.

#cp SSDT-x.aml /
(where x is the table you wish to copy)

이 bootloader 를 이용하여 재부팅하고 나면 이미 SSDT 테이블을 로딩하였을 것입니다.

DSDT와 관련하여 다음 글들을 참고합니다.

DSDT Patcher

DSDT BIOS Patcher

다음과 같이 Boot 옵션을 사용할 수 있는데 수정된 것을 사용하는 것 대신에 기본적인 oem SSDT 테이블을 로딩하기 위해 사용할 수 있습니다.
(Use this at darwin boot)

oemSSDT=y

voodoo kernel 에서는 boot 옵션을 다음과 같이 주어 동작되는지 확인하여 봅니다.

kprintf=1 -v

OSX로 부팅하였다면

터미널에서 다음과 같은 명령어를 입력합니다.

#sudo dmesg | grep ACPI

OEM SSDT 테이블 예:
CODE
ACPI: SSDT @ 0x7f7f4440/0x0024 (v001 HP HPQNLP 0x00000001 MSFT 0x0100000E)
ACPI: SSDT @ 0x7f7f4464/0x0326 (v001 HP HPQSAT 0x00000001 MSFT 0x0100000E)
ACPI: SSDT @ 0x7f7f4f9d/0x025F (v001 HP Cpu0Tst 0x00003000 INTL 0x20060317)
ACPI: SSDT @ 0x7f7f51fc/0x00A6 (v001 HP Cpu1Tst 0x00003000 INTL 0x20060317)
ACPI: SSDT @ 0x7f7f52a2/0x04D7 (v001 HP CpuPm 0x00003000 INTL 0x20060317)


수정 적용된 SSDT 예:
CODE
ACPI: SSDT @ 0x7f7f4440/0x0024 (v001 HP HPQNLP 0x00000001 MSFT 0x0100000E)
ACPI: SSDT @ 0x7f7f4464/0x0326 (v001 HP HPQSAT 0x00000001 MSFT 0x0100000E)
ACPI: SSDT @ 0x7f7f4f9d/0x025F (v001 HP Cpu0Tst 0x00003000 INTL 0x20060317)
ACPI: SSDT @ 0x7f7f51fc/0x00A6 (v001 HP Cpu1Tst 0x00003000 INTL 0x20060317)
ACPI: SSDT @ 0x1956000/0x051E (v001 HP CpuPm 0x00003000 INTL 0x20080926)


5라인의 변화를 유의하여 보면 (SSDT-4) e.g. 0x7f7f52a2/0x4D7 -> 0x1956000/0x051E

이 주소가 변화된 의미는 수정된 SSDT 성공적으로 로딩된 것입니다.

이제 SSDT 테이블을 공유하여 서로간의 정보를 공유하여 봅시다. www.mediafire.com 에 업로드하여 공유하면 될 것 같군요.

다음 화일이 도움이 될 것 같군요.

[attachment=42483:ssdtboot_chameleon.zip]

Cheers,

AB

Voodoo kernel :

voodoo kernel

댓글 3개:

  1. 우리도 이제는 dsdt, ssdt 테이블 쯤은 떡고물 주루르듯이 주무러 봅시다.

    아 혹시 댓글로 파일을 올리실 분들은 다음과 같은 형식을 지켜주셨으면 합니다.

    1. 마더보드

    2. ROM BIOS 버전.

    3. 링크된 DSDT와 SDDT관련 파일

    4. 성공여부

    답글삭제
  2. 현재의 Chameleon RC2/XPC/PC_EFI버전은 DSDT.aml 파일 하나로 지원이 됩니다.

    답글삭제
  3. 흠 이제와서 Ritz님의 dsdt글을 보니 감회가 새롭군요. T T

    답글삭제