답변:
편집 : 이 답변을 작성하면 EFI_STUB 구성 커널과 함께 제공되는 배포본이 거의 없으므로 사용자 정의 커널을 작성해야했습니다. 오늘날 대부분의 배포판은 적절하게 구성된 커널을 제공하며 더 이상 사용자 정의 빌드가 필요하지 않습니다. 이 경우 “파티션 설정 ” 및 “설정 ” 섹션 은 흥미로운 것입니다.“요구 사항”및“커널 컴파일”은 건너 뛸 수 있습니다.
Windows가 UEFI를 처리하는 방법을 모르지만 데비안 측면에서는 매우 간단합니다.
MBR이 아닌 GPT 파티션 구성표를 사용하십시오.
UEFI를 사용하여 GPT 파티션에서 부팅하려면 EFI SYSTEM PARTITION (ESP) 이라는 전용 부팅 파티션이 필요 합니다. 필수는 아니지만 가장 호환 가능한 방법은 FAT32 파티션을 사용하는 것입니다. 대부분의 경우 200MiB 크기가 적당합니다.
파티션을 ESP로 등록하려면 플래그로 boot
플래그를 지정해야합니다 . MBR 구성표와 달리 부팅 플래그는 부팅 할 수있는 파티션이 아니라 ESP를 나타내는 데만 사용됩니다.
UEFI는 디렉토리 구조 \EFI\<vendor>\<application>.efi
를 사용하여 UEFI 응용 프로그램을 저장합니다. 디렉토리 구분 기호는 Linux에서도 백 슬래시 로 표시됩니다 . 배포 이름 일 수 있으며 실제 값은 UEFI와 관련이 없습니다.
응용 프로그램은 메모리 검사기 또는 UEFI 셸과 같은 시스템 유틸리티 일 수 있습니다. OS 로더 또는 운영 체제 자체 일 수도 있습니다. 부팅시 시작할 수 있으려면 이러한 응용 프로그램을 UEFI에 등록해야합니다.
Linux 커널 버전> = 3.3은 UEFI에서 직접로드 할 수 있습니다. 커널은 자체 로더 역할을 할 수 있습니다. 이것을 EFISTUB 라고 합니다 . 다음과 같은 커널 구성이 필요합니다.
CONFIG_EFI = y CONFIG_EFI_PARTITION = y CONFIG_EFI_STUB = y CONFIG_RELOCATABLE = y CONFIG_FB_EFI = y CONFIG_FRAMEBUFFER_CONSOLE = y CONFIG_EFI_VARS = m
이 설정을 가진 커널은 현재 데비안에서 안정적이지 않습니다. 자신의 커널을 굽거나 실험 트리에서 커널을 사용하여 다음 단락을 건너 뛸 수 있습니다.
(아마도 더 이상 필요하지 않습니다. 편집 참조)
커널을 컴파일하기로 결정했다면 여기에 간단한 방법이 있습니다. 문제가 발생하면 커널 컴파일 방법에 대한 정보가 많이 있습니다.
소스 얻기
git clone git : //git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
하나의 특정 버전을 확인하십시오
자식 체크 아웃 v3.6
커널 설정
menuconfig를 만드십시오
시스템에 필요한 설정을하거나 사용자 정의 할 것이없는 경우 그대로 두십시오. 이것은 커널 구성을 파일에 기록합니다 .config
.
이전 단락의 설정이 설정되어 있는지 확인하십시오. 또한를 선택하는 것이 CONFIG_INPUT_EVBUG=n
좋습니다. 그렇지 않으면 로그가 GiB의 정크로 채워집니다.
커널 구축
INSTALL_MOD_STRIP = 1 make-kpkg --uc --us 바이너리-아키
패키지는 상위 디렉토리에 작성됩니다.
커널 설치
dpkg -i linux-image-3.5.0_Custom.deb 리눅스 헤더 -3.5.0_Custom.deb
초기화하기
mkinitramfs -o /boot/initrd.img-3.6.0-amd64 3.6.0
3.6.0은 커널 버전입니다. 이전 커널을 계속 실행하고 있기 때문에 기본적으로 실행중인 커널이 바람직하지 않습니다.
Linux 커널을 부팅하려면 initramfs와 함께 ESP에 복사해야합니다. ESP가/boot/efi
/boot/efi/EFI/debian/vmlinuz-3.6.0.efi /boot/efi/EFI/debian/initrd.img-3.6.0
참고 : 대부분의 시스템과 호환되도록 확장 efi
기능을 커널에 추가해야합니다.
이제 커널을 UEFI에 등록 할 수 있습니다. 우리는 그 도구 efibootmgr
를 사용합니다 .
echo "root = UUID = 3a4287b6-b3a7-4721-da38-acc38a928278 ro rootfstype = ext4 add_efi_memmap initrd = \\ EFI \\ debian \\ initrd.img-3.6.0"| iconv -f ascii -t ucs2 | efibootmgr \ --창조하다 \ --gpt \ --disk / dev / sda \ -파트 4 --label "데비안 리눅스 커널 3.6.0"\ -로더 "\\ EFI \\ debian \\ vmlinuz-3.6.0"\ -쓰기 서명 \ -첨부 이진 인수-
인수 --disk
는 ESP가 아니라 커널이 상주하는 장치입니다.
--part
커널이있는 파티션 번호입니다. --label
UEFI 부팅 메뉴의 항목입니다.
사용 가능한 항목 목록을 보려면 efibootmgr
인수없이 시작하십시오 . 특정 항목을 삭제하는 구문
efibootmgr -b 항목 (16 진) -B
예를 들면 다음과 같습니다.
efibootmgr -b 001a -B
이 지침은 커널 업데이트의 경우를 처리하지 않습니다. 커널과 initramfs는 ESP에 자동으로 복사되지 않습니다. 이 작업은 커널과 initramfs를 ESP에 복사하고 실행하는 간단한 스크립트를 사용하여 수행 할 수 있습니다 efibootmgr
. 이 스크립트는 /etc/kernel/postinst.d
커널이 업데이트 된 후 자동으로 시작 되도록 배치 할 수 있습니다 .
참고 : GRUB와 같은 부팅 관리자는 필요하지 않으며 UEFI 자체는 부팅 관리자 역할을합니다.
이것이 리눅스 측에서 필요한 전부입니다 .Windows를 추가하는 데 필요한 것이 무엇인지 모르겠습니다.
UEFI가 시스템에서 Linux를 잠그지 않도록하십시오. BIOS에 해당 효과에 대한 설정이있을 수 있습니다. 확인하고 확인하십시오. 필요한 경우 설명서와 제조업체에서이 점을 다시 확인하겠습니다.
그것에 대한 확장 된 토론이있었습니다. ZDNet에는 여러 기사가 있습니다. 여기에서 기사입니다 2011년 9월 21일 에서 하나 (23) 9 월 .
둘째, 기록 데이터를 기반으로 Windows를 먼저 설치하는 것이 좋습니다. 전통적으로 Windows는 시스템에서 유일한 OS라고 가정하므로 Linux와 관련된 모든 부팅 데이터를 지 웁니다. 이것은 UEFI와 다를 수 있습니다.
Rod Smith 의 UEFI 기사 시리즈를 진심으로 추천 할 수 있습니다 . 특히 그는 "하이브리드"GPT-MBR이 비 동기화 위험으로 인한 "위험한 핵"이라고 언급했다.