asrock UEFI 엔트리 자동 등록을 위한 바이오스 수정법(삭재글 복구)
- isaiah
- 1741
- 4
isaiah님의 기기정보
보유한 기기가 없습니다
아래쪽이 글을 썻는데..
설명이 너무 허접하다는 원성이 있어서 다시 써 봅니다.
과거 레거시 바이오스를 사용하던 보드들은 바이오스가 하드디스크의 MBR에서 파티션맵과 부트섹터를 읽어서 활성 파티션을 확인하고
그 활성 파티션에서 부트로더의 위치를 찾아 부팅을 시도 하게 됩니다.
그러나 최근의 UEFI 보드들은 GPT 파티션 맵의 첫번째 파티션인 EFI에서 직접 efi로 만들어진 부트로더를 찾게 됩니다.
예를 들자면 bootmgfw.efi나 grub.efi, elilo.efi 같은 부트로더를 찾는 것 이죠.
그리고 그 경로를 mvram에 기록하게 되는데. 이렇게 기록한 엔트리가 바이오스 부트 엔트리에 들어나게 됩니다.
이 과정은 바이오스가 직접 하기도 하고. efi shell 에서 bcfg툴을 이용해서 수동으로 등록해 줄 수도 있습니다.
asrock 보드의 경우 EFI에서 부트로더를 찾는 과정이 미리 바이오스 내부에 있는 경로와 파일명에 일치하는 파일을 찾아서 NVRAM에 등록을 해게 되는데
이 목록에 없는 부트로더 들은 EFI SHELL 작업을 통해서 수동으로 입력해 주어야 합니다.
이 과정은 번거롭기도 하고 같은 작업을 여러차래 반복해야 한다면 매우 지겹고 짜증나는 일이 되기 마련이죠
또한 평행 안쓸것 같은 elilo 같은 부트로더를 자동인식하는데 우리가 주로 쓰는 클로버를 자동인식 못하는 상태로 바이오스를 유지하는것은 좀 비효율 적이기도 하구요...
그래서 이것을 수정하는 방법을 간단히 적어 봅니다...
일단 도구가 필요합니다. 첨부한 도구.zip에는 win-raid.net에서 배포하고 있는 UEFITOOL과 많이들 쓰시는 헥사에디터인 HxD의 포터블 버전이 들어 있습니다.
UEFITOOL의 경우 압축되어 있는 UEFI 바이오스의 각 영역의 내부를 압축해제없이도 검색할 수 있으며 영역의 내부의 영역을
수정할때 압축해제와 재압축 체크섬작업을 간단하게 할 수 있는 아주아주 간편한 도구 입니다.
HxD는 설명이 필요 하지는 않겠죠..
우선 UEFI 툴로 바이오스 롬 파일을 열어서 우리가 수정할 EFI bootloader의 목록이 담긴 CORE_DXE 섹션을 추출합니다.
위와 같은 방법으로 CORE_DXE의 위치를 찾을 수 있습니다 수정을 위해서는 CORE_DXE의 압축을 풀어서 추출해야 합니다..
위와 같이 CORE_DXE 하단에 있는 Compressed section 아래의 'PE32+ image setion'을 우클릭 한 다음 EXtract body를 클릭하시면 UEFItool이 해당 영역의 압축을 자동으로 풀어서 추출해 줍니다.
이재 추출된 파일을 HxD로 열어서 수정을 하면 됩니다.
파일을 HxD로 연 다음 유니코드 문자 EFI\microsoft를 검색하면 부트로더의 경로화 해당 부트로더가 MVRAM에 기록될때 가지게 될 재목이 기록된 부분을 찾을 수 있습니다.
보드에 따라서 지원하는 부트로더가 많은 경우도 있고 위와 같이 덜렁 두개만 지원하는 경우도 있습니다..
같은 형식으로 추가를 하는것은 어렵고 존재하는 부트로더를 CLOVER로 대채하는것이 적당합니다.
구조상 오프셋으로 참조를 하는 부분이 엄청나게 많기 때문에내용을 추가해서 뒤에 있는 내용들의 위치가 변하게 되면 부팅이 불가능 하게 됩니다..
경로나 이름의 길이가 늘거나 줄어도 빨간선 내부에서 조율을 하여야 하며 전채 분량이 줄거나 늘어버리면 안 됩니다..
예 저는 grub.efi를 포기하고 CLOVERX64.efi를 지원하도록 수정을 해 보았습니다.
이 상태로 쓰기를 해면 바이오스가 클로버를 인식하고 nvram에 엔트리를 올리는것은 곧잘 해 주지만 재목이 제대로 표시되지 않습니다.
왜냐면 위 그림 처럼 클로더의 경로가 너무 길어서 본래 우분투의 재목이 위치하던 자리를 침범해 버렸기 때문입니다..
즉 바이오스의 입장에서 재목은 영역은 69 00 00 00 4F 00 53 00 58 00 00 00 00 00 00 00 이 되는데.. 00 00 00은 택스트의 종료를 의미하므로 후반부는 버림합니다...
그래서 재목이 'i'로 표시된는 현상이 생깁니다 이를 해결하기 위해서는 재목의 위치를 지시하는 부분을 고처 주면 됩니다..
위 그림을 보시면 본래 재목이였던 ubuntu 가 시작하는 위치의 오프셋은 '3F3E8' 입니다. 이 값을 검색해 주시면 됩니다.
위와 같이 검색된 부분을 현제 COLOVERX64.efi 의 재목이 위치하는 위치의 오프셋인 '3F3EC' 로 교환해 주면 됩니다.
그리고 저장을 하신 다음 다시 UEFI툴을 이용해서 바이오스에 삽입해 줍니다.
core_dxe 아래의 Compressed section 아래의 PE+ 32 image section을 우클릭 후 Replace body를 클릭한 다음 수정해서 저장한 파일을 선택하시면 됩니다.
그리고 다른이름으로 하신다음. 수정된 파일로 바이오스 업데이트를 해 주시면 완료 입니다.
isaiah
댓글 4
참여를 하시면 세상을 바꿉니다.
isaiah(본인)
isaiah
win-raid는 정말 갓 사이트입니다...... 도움되고 공부할게 엄청난곳 !
애즈락보드 팁 감사합니다.
8bits
정말 도움되는 사이트죠.
BIOS 모딩에 관해서 이야기 하는 한국어 커뮤니티도 있엇으면 좋겠어요..
권한이 없습니다. 로그인
https://www.x86.co.kr/appstore/1277539#comment_1277553
배치스크립트로 자동화한 툴입니다.