built in UEFI Shell 이 없는 보드에 UEFI Shell 추가하기...
조회 14902 추천 2
File_Application_Shell_Shellx64.ffs (277.7K), Down : 43, 2020-05
FvSimpleFileSystem.ffs (57.2K), Down : 37, 2020-05
부트 목록 추가 삭제 등을 하거나 펌웨어 업데이트등 뭐 운영체제 하에서는 하기 힘든 잡일할때 쓰게 되는게 UEFI Shell인데요..
어떤 보드들은 이게 UEFI에 빌트인으로 들어가 있으나.. 어떤 보드들은 들어 있지 않습니다..
이런식으로 UEFI와 함꼐 플레시에 내장되어서 부트옵션으로 자동 등록 되는 보드가 있는 반면에..
요런식으로 파일 시스템을 검색해서 Shell을 찾아서 존재한다면 그쪽으로 부팅 해 주는 방식이 있습니다.
Shell이 플레시 용량에 비해서 과도하게 크기 때문에 이런식으로 빼 놓는것 같은데..
이게 좀 불편합니다. Shell 같은건 부팅이 안될때 써야 할 경우도 생기기 마련인데.
UEFI 쉘 넣은 USB 같은걸 항상 준비해 두기는 또 좀 애매하죠 그런거 만들어서 짱박아 두면 또 필요할때는 못찾기 마련이라..
거기다 제 경우는 플레시에는 충분히 여유가 있음에도 쉘이 빠져 있었기 때문에 쑤셔 넣는 요령을 찾아 보았습니다.
결론 부터 말하면 굉장히 간단한데 UEFItool로 DXE 들이 들어 있는 색션을 찾아서 첨부한 2개의 파일을 쑤셔 넣으면 됩니다...
FvSimpleFileSystem.ffs -이 드라이버는 UEFI 펌웨어 볼륨의 FFS 파일들을 조회해서 각각의 FFS 파일의 내용물을 EFI 형태로 인식하게 만드는 드라이버 입니다..
물론 읽기 전용이구요.. XXX.efi 식의 이름을 부여 받는데 XXX는 ffs 파일의 UI 섹션에 있는 텍스트를 가져 옵니다.
File_Application_Shell_Shellx64.ffs- 요건 msi 보드에서 추출한 shell 입니다 edk에 포함된 버전보다 경량화 된것 같습니다.. 압축해서 200kb 정도 입니다.
이걸 둘다 삽입하게 되면 삽입하면 'Lanuch Efi shell form filesystem device' 를 시도 했을때
블록디바이스로 인식되는 펌웨어 볼륨에 들어 있는 Shellx64.ffs 가 Shellx64.efi 로 인식 되기 때문에 그걸 로드해서 EFI shell을 뛰우게 됩니다.
쉽게말하자면 uefi를 바이오스쉴로 지원하는보드에서 uefi 장치를부팅할때 쉘에서따로 선택하고 부팅하는걸 이작업을하면
자동으로 지가 찾아서 부팅해주는다는건지요?
쉘을 내장시켜서 그냥 shell을 켤 수 있도록 하는 겁니다
원래 'Lanuch Efi shell form filesystem device' 이 작동하는 방식이 연결된 모든 저장장치에서 shellx64.efi를 찾아서 실행 시키는 것
->그럼으로 어떤 저장장치에도 Shellx64.efi가 없으면 쉘을 실행 할 수 없음.
->flash에 저장되어 있는 UEFI 모듈을 저장장치로 인식하게 만드는 드라이버를 설치
->flash에 shellx64.efi로 인식되는 모듈을 설치
->'Lanuch Efi shell form filesystem device' 를 실행했을때 연결된 저장장치에 shellx64.efi가 없어도 flash에 들어 있는 shellx64를 찾아서 실행
이런 식인 거죠.