GRUB이 최고의 부트 로딩 솔루션입니까? 더 쉬운 대안이 있습니까?


26

에 대해 다소 나쁜 경험을했습니다 GRUB2. 내가 말할 수있는 (그리고 말했다) 의 설계 및 개발 프로세스에 대한 성가신 일. 특히 업데이트 방법이 마음에 들지 않습니다. 어떤 이유로 든 여러 커널을 체인에서 다른 스크립트를 통해 간접적으로 업데이트하거나 모든 커널 업데이트에 대해 또는 다른 많은 사소한 (그리고 관련이없는 것처럼 보이는) 구성 변경을 반자동으로 업데이트해야합니다 .

이것은 LILO문제가 없었기 때문에 되돌릴 것을 진지하게 고려 했던 이전의 경험과 직접 대조되며 구성은 매우 간단합니다. 우선, 내가 기억하는 것처럼 커널 업데이트마다 간단하게 관리되는 단일 구성 텍스트 파일 업데이트 하거나 업데이트해야했습니다.

그렇다면 LILO는 오늘날 커널을 사용하여 최신 하드웨어에서 어떻게 작동합니까? GRUB는 어떻습니까? 다른 부트 로더는 어떻게합니까? 전제 조건을 충족해야합니까, 아니면 lilo구식으로 마음에 들었던대로 구성 파일을 작성하고 명령을 실행하는 것입니까? 커널 패키지 업데이트 (Debian / Ubuntu)는 GRUB2와 마찬가지로 LILO를 업데이트합니까?


EFI 펌웨어 유형이 있는지 여부에 따라 펌웨어에서 Linux 커널을 좋아하고로드하지 않고도 수행 할 수 있습니다. 그러나 여전히 EFI (eLILO) 또는 BIOS 와 함께 LILO를 사용할 수 있습니다 . 커널 소스 트리에 있으며 유지 관리됩니다. EFI 작업을 수행하는 방법을 알고 싶다면 대답 할 수 있지만 LILO에 대한 개인적인 경험은 없지만 그것이 유지되고 작동한다는 것을 알고 있습니다.
mikeserv

당시의 Core 2 Duo에서 2010 년이나 2011 년에 LILO를 사용했던 것을 기억합니다. 여전히 작동해야한다고 생각합니다 (UEFI 등 무시) PC 아키텍처는 그다지 변경되지 않았습니다.
Renan

@mikeserv, LILO-EFI duet에 대한 모든 정보를 작성하십시오. 이 주제에 관한 모든 정보는 환영합니다.

나는 실제로 당신이 uefi / bios의 차이점을 곧 다루는 여기 에서 이전에 유용한 것을 썼습니다 . 요점은 uefi에 부트 로더가 포함되어 있으므로 grub / lilo / anything은 중복됩니다. 여기에 포함되지 않은 것은 메뉴와 내용을위한 부팅 관리자입니다. rodsbooks.com/refind를 방문하십시오.
mikeserv

3
여전히 슬랙웨어와 함께 제공됩니다. 그것은 작은 공동체가 아닙니다.
Bandrami

답변:


28

엘리로

Linux 용 EFI 부트 로더 관리 : ELILO 사용

복사 / 붙여 넣기 할 부분을 결정하는 것은 정말 어렵습니다. 모두 정말 좋기 때문에 읽어 주시기 바랍니다.

로드 스미스

저작 모두를 유지 gdisk하고 rEFInd.

그러나 당신이하기 전에 나는 그것에 대해 조금 언급하고 싶습니다. 위의 ELILO 링크는 Rod Smith가 작성한 rodsbooks.com에서 찾을 수있는 UEFI 부팅의 여러 페이지 중 하나에 대한 링크 입니다. 그는 뛰어난 기술 저술가이며 UEFI 부팅 주제를 Google에서 검색하고 자신의 내용을 읽지 않은 경우 상위 몇 가지 결과를 건너 뛰었을 가능성이 큽니다.

리눅스 UEFI 부팅

기본적으로 Linux 커널은 펌웨어에 의해 직접 실행될 수 있습니다.

위의 링크에서 그는 리눅스 커널의 EFI 스터브 로더에 대해 언급합니다 . 이것은 펌웨어 커널이 직접 리눅스 커널을 호출 할 수 있기 때문에 사용해야한다고 생각합니다. 에 관계없이 당신이하고있는의 무언가를 펌웨어에 의해 실행되고있다 - 뭔가가있는 것처럼 그것은 소리 grub. 펌웨어가 OS 커널을 직접로드 할 수 있다면 부트 로더는 무엇입니까? UEFI 펌웨어는 파티션 테이블에 의해 FAT로 포맷 된 GPT 파티션 플래그 esp 를 마운트하고 온보드 플래시 메모리 모듈에 UEFI 부팅 변수로 저장 한 경로를 실행합니다. 그래서 당신이 할 수있는 일은 리눅스 커널을 FAT 파티션에 놓고 그 경로를 그 부팅 변수에 저장하는 것입니다. 갑자기 커널 자체가 부트 로더.

부트 로더

UEFI 시스템에서 부트 로더는 중복입니다 (ELILO 포함).

부트 로더 문제는 BIOS 시스템이 부트 플래그 파티션 의 첫 번째 섹터에서만 읽고 실행한다는 것입니다. 512 바이트 커널로 의미있는 작업을 수행하는 것은 조금 어렵 기 때문에 가장 일반적인 방법은 실제 커널 을 유지 하고 체인로드하는 곳에 파일 시스템을 마운트 할 수있는 작은 유틸리티를 작성하는 것이 었습니다.

사실, 512 바이트는 부트 로더조차도 충분하지 않은 경우가 많습니다. grub예를 들어, 커널 은 부트 로드하기 전에 파일 시스템의 첫 번째 섹터와 빈 공간에서 두 번째 단계 를 쐐기 때문에 커널을 체인로드하기 전에 실제로 체인로드됩니다 . 그것은 일종의 더러운 해킹이지만 작동했습니다.

부팅 관리자

쉬운 구성을 위해 일부 중간 기능이 유용 할 수 있습니다.

Rod Smith의 rEFInd가하는 일은 EFI 응용 프로그램으로 시작하는 것 입니다. 이것은 비교적 새로운 개념입니다. 디스크에 의해 실행되고 펌웨어로 돌아 오는 프로그램입니다. rEFInd의 기능은 부팅 메뉴를 관리 한 다음 부팅 선택 을 펌웨어 로 되돌려 실행하는 것입니다. UEFI 파일 시스템 드라이버와 함께 제공 되므로 예를 들어 FAT아닌 파티션 (예 : current /boot) 에서 커널의 EFI 스텁 로더를 사용할 수 있습니다 . 관리가 간단합니다 (이러한 것이 필요한 경우). 실행 가능한 시스템 커널의 단순성을 구성 가능한 부트 관리자의 편의성에 추가합니다.

원자 간접

커널은 심볼릭 링크를 필요로하지 않는다 mount --bind.

당신의 모든 경로가 있다면 /당신이 해야 허용 심볼릭 링크가 그 것이다 /boot. 분리 된 심볼릭 링크 는 문제를 해결해야 할 문제 /boot아닙니다 . 그럼에도 불구하고 전체 /boot배포판 커널 업데이트 및 / 또는 다중 커널 구성을 처리하기 위해 끔찍한 아이디어 일지라도 여러 배포판 에서 정교한 간접 지시를 설정하는 것이 일반적 입니다.

FAT는 전체적으로 어리석은 파일 시스템이므로 파일 시스템 드라이버 (예 : rEFInd 패키지와 함께 제공) 를로드하도록 구성 되지 않은 EFI 시스템 의 문제 입니다 .

rEFInd와 함께 제공되는 UEFI 파일 시스템 드라이버를 개인적으로 사용하지는 않지만 대부분의 배포판에는 패키지 관리자를 통해 설치할 수있는 rEFInd 패키지가 포함되어 있으며 고유 한 심볼릭 링크 /boot구성과 rEFInd의 패키지 된 UEFI 파일 시스템 드라이버를 사용하는 것을 잊어 버렸습니다 .

내 구성

한 번 그것에 지침을 작성하고 여기에 게시 했지만 다음과 같습니다.

% grep esp /etc/fstab && 
> ls /esp/EFI

LABEL=ESP          /esp  vfat defaults      0 1
/esp/EFI/arch_root /boot none bind,defaults 0 0 

arch_root/  arch_sqsh/  arch_xbmc/  BOOT/  ipxe/

난 그냥 내에서 그 두 줄을 넣어 그래서 /etc/fstab나는 새로운 리눅스 설치의를 포함하고자하는 폴더에 포인팅 /boot하고 난 거의 모든 일에 대해 걱정 다. 나는 또한해야합니다 :

cat /boot/refind_linux.conf 

"Arch" "root=LABEL=data rootflags=subvol=arch_root,rw,ssd,compress-force=lzo,space_cache,relatime"

첫 번째 refind-efi패키지를 통해 패키지를 설치하는 것 외에도 pacman원하는만큼 많은 개별 설치 / 구성을 설정하는 데 필요한 전부입니다. 위의 문자열 대부분은 커널 매개 변수로 지정된 btrfs 특정 마운트 옵션으로 구성됩니다. 보다 일반적인 /boot/refind_linux.conf것은 아마도 다음과 같습니다.

"Menu Entry" "root=/dev/sda2"

그리고 그것이 전부입니다.

rodsbooks.com

여전히 ELILO를 원한다면 위의 링크에서 설치 지침을 찾을 수 있습니다. rEFInd를 원하면 첫 번째 단락에서 링크를 찾을 수 있습니다. 기본적으로 UEFI 부팅 구성을 수행 하려면 먼저 rodsbooks.com을 읽으 십시오 .


3

GRUB2 대신 LILO를 사용합니다. 솔직히 말해서, 그것은 내가 선택한 것이 아닙니다. GRUB2 설치는 데비안 라이브 CD 설치 프로그램에서 실패했지만 LILO를 설치하는 옵션이 성공했습니다. 데비안 스 테이블을 실행하는 2 살짜리 노트북이 있습니다. LILO는 완벽하게 작동합니다.


1

LILO는 여전히 입니다 심지어 UEFI 바이오스와 함께 사용 가능. UEFI는 일반적으로 Linux 커널을 직접로드 할 수 있습니다. 그러나 이것은 UEFI 자체에 달려 있습니다.

그러나 부팅 선택 화면이 필요한 경우, 예를 들어 한 시스템에서 여러 OS로 부팅하는 경우 작은 부트 로더가 유용 할 수 있습니다.

그래도 EXTLINUX 를 사용하는 것이 좋습니다. SYSLINUX의 변형이지만 ext유형 파티션에 상주 합니다.

EXTLINUX의 장점은 LILO보다 확장 성이 뛰어나고 더 많은 옵션이 있지만 간단하고 적극적으로 관리 할 수 ​​있다는 것입니다.


-1 (deb / ubuntu) 커널 패키지는 EFI를 업데이트하지 않습니다. (EFI는 심볼릭 링크를 지원하는 fs를 읽지 않으므로 내 대답 만 사용할 수는 없습니다). LILO의 새로운 대안으로 EXTLINUX의 경우 +1입니다. 귀하의 링크는 그것이 다른 몇 가지 파일 시스템을 지원한다는 것을 보여줍니다. EFI 지원은 필요한 경우 약간 새로운 것처럼 보입니다.
sourcejedi

@sourcejedi-당신이 틀렸다. 적절한 EFI 파일 시스템 드라이버가로드 된 EFI 시스템은 심볼릭 링크를 쉽게 처리 할 수 ​​있습니다.
mikeserv

어떤 이유로 syslinux.com에 직접 연결하는 것은 금지되어있는 것 같습니다.
polemon

@mikeserv 알고 있지만 파일 시스템 드라이버를로드하면 대부분의 경우 다소 모호한 것으로 나타났습니다. 드라이버와 커널을로드하려면 일종의 EFI 스크립트 (용어?)를 설치해야합니다. 아, 그리고 아무도 이들 드라이버에 대한 MS 보안 부팅 서명을 가지고 있지 않기 때문에 또 다른 웜은 : p입니다.
sourcejedi

@sourcejedi-내가 쓴 답을 읽으시겠습니까? 그리고 네-드라이버를로드하는 수단이 필요합니다.
mikeserv

1

에 해당하는 내용이 기억 나지 않습니다 update-grub. 그러나 데비안에서는 여전히 지원되는 오래된 시스템이 있습니다. (내 ARM 서버에서 uboot에 사용됩니다).

가장 최근의 커널은에 링크되어 /boot/vmlinuz있고 initrd에 /boot/initrd.img있습니다. 커널 패키지에 의해 업데이트됩니다. 부트 로더는 각 부트의 심볼릭 링크를 가리 킵니다.

따라서 복구 옵션을 얻지 못할 수도 있습니다. 어쨌든 이것은 가장 널리 테스트 된 옵션이 아니므로 부팅 디스크를 :-) 주위에 두는 것이 더 좋습니다.


업데이트 : 당신의 목표가 현대 컴퓨터에서 문자 그대로 LILO를 실행하는 것 이외의 것이면, 다른 답변에 설명 된 것처럼 더 나은 대안이있을 것입니다 :).

위의 내용은 원래 BIOS 기반 버전의 LILO에만 적합합니다. 동일한 메뉴에서 Windows 8을 안전하게 부팅하거나 부팅하지 않으려는 경우 최신 하드웨어는 EFI 위에 BIOS 호환성을 제공합니다. 이론적으로 ELILO는 작동하지만 보안 부팅 또는 Windows 8 로딩을 지원하지 않습니다. ELILO는 더 이상 일반적으로 의미가 없으므로 내 커뮤니티가 많지 않습니다.


우와 /에서 symlinks는 /boot어떤 문제에 대한 더러운 해결책입니다.
mikeserv

welp lilo는 죽었고 (uboot는 더 이상 사용되지 않습니다) 그렇습니다. 당신이 생각한 문제는 무엇입니까? 사람들은 아직 / boot에 FAT를 사용하지 않고 있습니다. BootLoaderSpec은 좋은 프로젝트이지만 아직 실제로는 아닙니다 ... 그 이유는 충분합니다 (사악한 특허, FLOSS 호환 라이센스는 EFI interop에만 부여됨).
sourcejedi

좋은 편집이었습니다.
mikeserv
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.