GRUB 이전에 Linux / xBSD는 어떻게 부팅 했습니까?


23

Wikipedia 에 따르면 GRUB은 1995 년에 출시되었다.이 시점에서 Linux와 xBSD는 몇 년 동안 존재했다. 초기 유닉스 버전은 70 년대와 80 년대의 하드웨어와 관련이 있었지만 Linux와 xBSD는 자유롭게 배포하고 설치할 수있었습니다. 그렇다면 리눅스를 어떻게 부팅하겠습니까? 배포판에는 자체 부트 로더 구현이 포함되어 있습니까?


32
음 ... LILO가 유일한 Linux 부트 로더 였을 때 주변에 없었습니까? 그리고 필자는 BSD 시스템에서 LILO 나 Grub을 사용한 적이 없습니다 . 어느쪽에 관심이 있습니까? 예를 들어 biosboot(8).
Kusalananda

8
@Kusalananda 불행히도, 나는 파이프, execs 및 쉘보다 장난감과 닌자 거북이 그리기에 더 신경을 썼습니다 :) 나는 특정 부트 로더가 아니라 일반적인 역사에 관심이 있습니다. 링크 한 페이지에서 OpenBSD가 biosbooti386과 amd64라는 두 가지 아키텍처를 가지고 있음 을 알 수 있습니다. OpenBSD가 하나의 통일 툴을 사용하는 대신에 아키텍쳐를 구체적으로 목표로 삼아야한다는 의미입니까?
Sergiy Kolodyazhnyy

1
1 단계 부트 로더는 아키텍처마다 다릅니다 (i386과 amd64 만 "bios"BIOS를 갖습니다). bog 표준 PC보다 더 이국적인 아키텍처에 관심이 있다면 NetBSD를 살펴보십시오.
Kusalananda

3
@Kusalananda LILO가 유일한 Linux 부트로 더라고 생각하지 않습니다. 내가 알기로는 커널 이미지에 내장 된 로더가 LILO보다 오래되었고 내장 로더에 대한 지원이 중단 될 때까지 최소한 소수의 다른 부트 로더가있었습니다.
kasperd

2
LILO는 2000 년대 초까지 많은 배포판을위한 기본 부트 로더였습니다
phuclv

답변:


51

내가 90 년대 ( Slackware 3.0IIRC)에 사용한 최초의 Linux 배포판은 LILO 를 부트 로더로 사용했습니다. "디폴트"부트 로더가 LILO되어도 수년 동안 많은 배포판이 사용 되었습니다 GRUB.

또한 리눅스 초기에는 부트 로더 / 듀얼 부팅에 의존하지 않고 다른 OS (예 : DOS 또는 Windows)에서 리눅스를 부팅하는 것이 일반적이었습니다. 예를 들어 loadlin 이있었습니다 .

USB 자체 부팅 가능 설치 / 복구 배포판에 자주 사용되는 간단한 부팅 로더 인 Syslinux를 잊지 마십시오 . 또는 많은 "Live"배포판에서 사용하는 Isolinux (같은 프로젝트에서).

오늘날에는 GRUB많은 운영 체제를로드하는 데 사용될 수 있지만, LILO더 제한적이고 특히 Linux (LInux LOader)를 대상으로하며 Windows 로의 이중 부팅을 지원합니다.
GRUB구성 가능한 많은 옵션, 스크립팅 기능 등으로 인해 듀얼 / 멀티 부팅에 매우 유용
합니다. "any"시스템에서 단일 OS를 원할 경우 (즉, 어떤 부트 로더가 Linux / BSD 배포판의 기본값이든) 충분하다.


5
@ MrShunz : 당시에는 UEFI가 없었습니다. 부팅 창은 예를 들어,의 항목을 추가하는 문제였다 other=/dev/hda1table=/dev/hda에를 lilo.conf, 그리고 LILO는 HDA에있을 것 파티션 테이블을 알고, hda1의에서 부트 섹터로 제어를 전송하는 것입니다.
ninjalj

2
이전에 NTLDR이 LILO를로드하도록 할 수있었습니다. jaeger.morpheus.net/linux/ntldr.php 참조 ; 나는 같은 날 독립적으로 같은 것을 발견했다.
Roger Lipscombe

2
LILO 접근 방식의 단점은로드 할 파일의 디스크 위치가 변경되면 중단된다는 것입니다. 특히 이것은 모든 커널 업그레이드 후 LILO를 부팅 위치 (MBR 또는 파티션 부팅 섹터)에 다시 써야한다는 것을 의미합니다.
플러그 세척

1
@plugwash : GRUB은 두 번째 단계 파일과 같은 문제가 있습니다. 차이는 여기에 LILO의 1) "두 번째 단계는"이다 했다 가 커널 업데이트 상황을 아프게하지 LILO 업데이트했다 있도록 커널; 2) GRUB 업데이트에는 2 단계 위치를 MBR에 자동으로 다시 쓰는 작업이 포함됩니다 (2 단계에서는 파일 시스템에 대한 모든 지식을 갖추고 Linux 커널을로드하므로 커널 위치는 중요하지 않음). ;-)
DevSolar

1
IIRC 그럽은 가능한 경우 MBR과 첫 번째 파티션 사이의 파일 시스템을 이해하는 "스테이지 1.5"를 저장하고 스테이지 1.5를위한 공간이없는 경우 또는 특정 파일 시스템 섹터에 대한 참조를 저장하는 것에 만 의존합니다. 오히려 MBR보다 파티션 부트 섹터)
plugwash

28

LILO 는 초기 단계부터 Grub 이전 PC에서 Linux를 부팅하기위한 사실상의 표준이었습니다 (첫 번째 Linux 배포판 중 하나 인 MCC에서 사용). 다양한 다른 부트 로더가 동시에 사용되었습니다. 로드 린 은 꽤 흔했습니다. DOS에서 리눅스로 부팅 umsdos했고 DOS 파일 시스템에서 리눅스 환경을 호스팅하기 위해 일부 구성에서도 사용되었습니다 . 또 다른 일반적인 구성에는 부트 로더가 전혀 포함되지 않았습니다. 커널은 플로피에서 부팅 될 수 있습니다. Linux 사용자는 잘 알려진 "부팅 및 루트"플로피 쌍을 유지했습니다. 하나는 커널을 포함하고 다른 하나는 구조를위한 기본 루트 파일 시스템입니다.

다른 운영 체제의 부트 로더를 사용하여 Linux도 부팅하는 방법에는 여러 가지가있었습니다. 예를 들어, OS / 2의 부팅 관리자 또는 Windows NT의 NTLDR입니다.

다른 시스템에는 자체 부트 로더가 있습니다.

  • SPARC의 SILO (Sun 워크 스테이션 및 기타)
  • PA-RISC의 PALO (HP 워크 스테이션);
  • PowerPC의 YaBoot 및 Quik;
  • 알파의 aBoot와 MILO ...

요즘에도 Grub만이 유일한 부트 로더는 아닙니다. 플로피에서 직접 커널 부팅을하는 것은 더 이상 유용하지 않습니다 (플로피에 맞도록 작은 크기의 커널을 빌드 할 수 있다고 가정하면 여전히 가능한지 여부를 확인하지는 못함). EFI에서 직접 부팅 할 수 있습니다. Grub과 같이 다른 운영 체제를로드하도록 설계된 소규모 운영 체제). 많은 작은 시스템 (내장 시스템, 단일 보드 컴퓨터 ...)에는 U-Boot가 있습니다. U-Boot 용 EFI 계층 도 있습니다 .


PowerPC 아키텍처는 일부 마더 보드에 Turing-complete BIOS-Openfirmware (기본적으로 일부 사전 설치된 기능이있는 프로그래밍 언어)를 가지고 있기 때문에 흥미 롭습니다. BIOS를 구성하는 방법을 알고 있다면 부트 로더없이 BIOS에서 직접 부팅 할 수 있습니다.
slebetman

NTLDR이 리눅스 커널을 직접로드 할 수 있을까? NTLDR이 grub4dos를 chainloader하고 Linux 커널을로드 할 수 있다고 들었습니다.
炸鱼 薯条 德里克

@slebetman :보다 정확하게는 OpenFirmware는 Sun for SPARC에서 개발 한 다음 PowerPC 참조 아키텍처를 위해 PowerPC 연합 (IBM, Apple, Motorola), 특히 PowerPC 기반 Macintosh를 위해 Apple에서 채택했습니다. 강력한 측면 중 하나는 간단한 드라이버를 확장 카드의 ROM 칩이나 HDD의 지정된 부팅 영역에 저장할 수 있으며 알려진 ABI에 대해 바이트 코드로 작성되었으므로 어떤 CPU에 관계없이 작동한다는 것입니다 부팅하려는 아키텍처와 OS.
Jörg W Mittag

예를 들어 ROM 칩에 OpenFirmware 드라이버가있는 RAID 어댑터가 있으면 OpenFirmware 환경에서 해당 드라이버를 사용하여 RAID에 액세스 할 수 있습니다. RAID 내부에는 파티션 테이블 형식에 대한 다른 드라이버가있을 수 있습니다. OFW 환경 파티션을 찾으려면 각 파티션의 시작 부분에 파일 시스템의 OFW 드라이버가 있으며 OFW 시스템은 커널을 찾을 수 있으며 커널에는 처음에 OFW 바이트 코드로 작성된 작은 부트 로더가 있습니다.
Jörg W Mittag

GRUB도 비슷한 방식으로 작동 할 수 있지만 차이점은 GRUB 용으로 모든 드라이버를 작성해야한다는 것입니다. 반면 OFW의 장점은 장치에 드라이버를 가져와야한다는 것입니다. OFW 환경이 쓰여졌을 때 존재하는 것은 "마 법적으로"작동했을 것입니다. UEFI도 비슷한 방식으로 작동 할 수 있지만 "휴대용 바이트 코드 형식"은 본질적으로 DOS의 하위 집합이므로 Itanium에 여전히 x86 에뮬레이터가 필요한 주된 이유입니다.
Jörg W Mittag

12

2.6 커널 중반까지 x86 커널은 플로피 디스크에 복사 된 경우 디스크 이미지처럼 직접 부팅 할 수있었습니다.

사실 이것은 리눅스 부팅의 원래 방법이었습니다.

오늘 x86 커널의 헤더를 보면 플로피 부팅이 더 이상 작동하지 않는다는 오류 메시지가 표시됩니다.


2
반면, UEFI 펌웨어가 제공되면 x86 커널을 직접 부팅 할 수 있습니다. 커널 앞에 스텁 부트 로더 (Stob Bootloader)가 있습니다. 단지 다른 유형일뿐입니다.
grawity

@grawity : x64를 의미하지 않습니까?
조슈아

1
@Joshua : 그게 무슨 뜻인지 잘 모르겠습니다. EFI는 실제로이 부분을 코드로 실행하지 않습니다.
grawity

2
@Joshua 무엇? 16 비트 모드의 "DEC BP", "POP DX"입니다 (32 비트 모드의 EBP / EDX). 그러나 어쨌든 실행해서는 안됩니다. EFI 바이너리는 PE 파일입니다 (물론 부트 섹터에 기록되어 있는지는 중요하지 않습니다).
Stephen Kitt

1
@Joshua OK,하지만 그것은 내 마음에 정의되지 않은 x86 동작이 아닙니다 ;-). ( "정의되지 않은 x86 동작"은 동작이 정의되지 않은 플랫폼 동작이 아니라 동작이 정의되지 않은 opcode라고 생각합니다.)
Stephen Kitt

5

나는 90 년대 후반에 리눅스로 시작했으며 언급 한대로 lilo기본값이었습니다. DOS 시스템으로 이중 부팅을하려면 HIMEM에 내용을로드하거나 CD 드라이버 등을로드하지 않고 바로 부팅을 수행하여 사용할 수 있습니다 loadlin. Win95 이중 부팅의 경우 먼저 DOS로 드라이브를 부팅 가능하게 설정 한 다음 '95를 설치하면 '95'부트 로더를 사용하여 DOS 커널을 여전히 부팅 한 다음을 사용할 수 있습니다 loadlin.

NT4를 사용한 듀얼 부팅의 경우, 트릭은 LILO를 /파티션에 기록한 다음 dd( dd if=/dev/sda2 of=/path/to/file bs=512 count=1)를 사용하여 처음 512 바이트를 제거 하고 결과 파일 ntldr을 볼 수 있는 위치에 놓고 WinNT의 부트 로더에서 사용할 수 있습니다. 커널 업그레이드시 문제는 재부팅 전에 모든 단계를 반복해야한다는 것입니다. 그렇지 않으면 Linux 시스템으로 돌아 오는 데 문제가 있습니다. 동일한 프로세스가 Win2k에서 작동했습니다.

LILO를 사용하면 커널이 업데이트 될 때마다 LILO를 업데이트해야합니다.

으로 loadlin커널이 업데이트 언제든지, 당신은 DOS 파티션에 커널을 복사하는 것을 기억했다.

다른 답변에서 암시 된 또 다른 옵션은 커널을 플로피에 직접 쓰는 것이 dd if=/path/to/vmlinuz of=/dev/fd0었지만 루트 장치는 컴파일 타임이나 rdev유틸리티 를 사용하여 커널에서 올바르게 설정해야했습니다 .

GRUB돌아 왔을 때 , 더 이상 LILO를 업데이트하거나 LILO를 업데이트하고 부팅 정보 등을 제거 할 필요가 없었기 때문에 기쁨이 많이 생겼습니다. 더 이상 부트 로더 업데이트를 잊어 버려서 Linux 시스템에서 빠져 나가지 않아도됩니다. 정보 ...


그것과 같은 사운드 작업과 높은 기회의 훨씬 다시 다음 비 부팅 기계 왼쪽,하지만 확실히 교육 경험 할 한
세르지 Kolodyazhnyy

@SergiyKolodyazhnyy 예, 인터넷에는 그러한 정보가 풍부하지 않았거나 정보를 찾을 수있는 훌륭한 검색 엔진이 없었습니다. LILO 등을 부팅하고 수정하기에 충분한 Linux를 가진 여러 개의 단일 플로피 디스크 구조 배포판이있었습니다. 우리는 먼 길을 왔습니다!
Ivanivan

Running make install은 run /sbin/lilo이므로 실제로 수동으로 업데이트 할 필요가 없습니다 ( lilo설치 한 경우 여전히 그렇습니다 ). 그것은 의견의 문제 일 수도 있지만 grub, 반대로에 기뻐하는 것을 기억하지 못합니다 . 그리고 lilo(적어도 1999 버전) 이중 부팅 창을 잘 사용할 수 loadlin있습니다.
19:51에 mosvy

0

LILO와 GRUB 이전에는 일종의 사용자 정의 부트 로더 유틸리티를 사용하여 명령 행에서 실행해야했습니다.

예를 들어, Amiga는 Linux를 사용할 수있었습니다. 커널 ELF를 메모리에로드하고 점프하려면 amiboot라는 명령 줄 유틸리티를 사용해야했습니다.

다음은 명령 줄에서 amiboot를 사용하여 Amiga 600에서 Linux시작 하는 사람의 비디오입니다 . 그의 StartInstall 스크립트는 amiboot 실행 파일을 호출합니다. amiboot 구성 메모리를 관찰하고 원하는로드 주소를 파악한 다음 약 0:55에 커널에 매개 변수를 전달할 수 있습니다.

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