개요
Loadlin은 DOS/Windows 환경에서 Linux 커널을 직접 메모리로 로드하고 실행시키는 부트 로더 프로그램이다. 전통적인 MBR(마스터 부트 레코드) 기반 부트 로더(LILO, GRUB 등)와 달리, 파일 시스템을 변경하거나 파티션 테이블을 수정할 필요 없이 기존 DOS 파티션 위에서 Linux를 부팅할 수 있도록 설계되었다. 주로 듀얼 부팅 환경에서 또는 디스크 파티션 구조를 변경하고 싶지 않은 경우에 사용된다.
역사
- 1992년: H. Peter Anvin이 최초 버전을 발표하였다. 초기 Linux 배포판에 기본 부트 옵션으로 포함되었으며, 당시 대부분의 PC가 DOS 기반이었기 때문에 널리 활용되었다.
- 1990년대 중반: LILO와 GRUB가 점차 보편화되면서 Loadlin의 사용 비중은 감소했지만, 여전히 제한된 환경(예: 네트워크 부팅이 불가능한 구형 시스템)에서 유용하게 쓰였다.
- 2000년대 이후: 공식적인 유지보수는 거의 중단되었으며, 최신 Linux 커널(특히 UEFI 기반 시스템)에서는 기본 지원이 제한적이다. 다만, 오픈소스 커뮤니티에서 소스 코드는 공개된 상태이며, 필요에 따라 직접 수정·재배포가 가능하다.
작동 원리
- DOS/Windows 환경 진입
C:드라이브 등 FAT 파일 시스템이 마운트된 파티션에 Loadlin 실행 파일(loadlin.exe)이 존재해야 한다.
- 커널 이미지 로드
- 명령줄 인자를 통해 로드할 커널 이미지(
vmlinuz)와 초기 램디스크(initrd.img)의 경로를 지정한다. - Loadlin은 BIOS 인터럽트 0x13을 사용해 디스크 섹터를 읽어 커널 이미지를 메모리(일반적으로 1 MiB 이상의 주소)로 복사한다.
- 명령줄 인자를 통해 로드할 커널 이미지(
- 커널 파라미터 전달
root=등 커널 부팅 옵션을 문자열 형태로 전달한다.
- 제어권 전환
- 커널 로더가 완전히 로드되면 Loadlin은 실모드(Real Mode)에서 보호 모드(Protected Mode)로 전환하고, 커널 진입점(entry point)으로 점프한다.
- Linux 커널 실행
- 이후 커널은 자체 부트 프로세스를 진행하고, 루트 파일 시스템을 마운트한 뒤 사용자 공간(init) 프로세스를 실행한다.
주요 특징
| 특징 | 내용 |
|---|---|
| 파일 시스템 요구사항 | FAT12/16/32 파티션에서만 동작 (NTFS 등은 직접 지원 안 함) |
| BIOS 의존성 | 전통적인 BIOS 부팅 환경에 종속; UEFI에서는 직접 사용 불가 (CSM 모드가 필요) |
| 커널 호환성 | 2.2.x~2.6.x 커널까지 기본 지원; 최신 커널은 부트 파라미터 및 메모리 레이아웃 변화로 호환성 저하 |
| 초기 램디스크 지원 | initrd= 옵션을 통해 초기 램디스크를 동시에 로드 가능 |
| 부트 로더 체인 | LILO, GRUB 등과 병행 사용 가능 (예: GRUB에서 chainloader +1 후 DOS → Loadlin) |
| 라이선스 | GPLv2 (오픈소스) |
사용 방법 예시
C:\> loadlin.exe vmlinuz root=/dev/hda1 ro initrd=initrd.img
vmlinuz: 부팅할 커널 이미지 파일 (FAT 파티션에 존재)root=: 루트 파일 시스템을 지정 (예:/dev/hda1)ro: 읽기 전용으로 마운트 후 초기화 스크립트가 마운트 옵션을 변경하도록 함initrd=: 초기 램디스크 이미지 (선택 사항)
제한점 및 최신 대안
- UEFI 미지원 : 현대 PC는 UEFI 부팅을 기본으로 하며, CSM(Compatibility Support Module) 없이 Loadlin을 사용할 수 없다.
- 파티션 제약 : FAT 파티션에만 제한되므로, 대용량 파일(>4 GB)이나 고속 파일 시스템(Ext4, Btrfs 등)에서는 사용이 어려움.
- 보안 : 부트 로더 자체에 서명 검증이 없으며, Secure Boot 환경에서는 동작하지 않는다.
- 대안: GRUB2, systemd‑boot, rEFInd 등은 UEFI와 BIOS 양쪽을 지원하며, 다양한 파일 시스템 및 보안 기능을 제공한다.
현재 상황 및 유지보수
Loadlin은 활발한 공식 유지보수가 이루어지지 않는다. 최신 배포판의 기본 패키지에 포함되지 않으며, 필요한 경우 소스 코드를 직접 다운로드하고 컴파일해야 한다. 다만, 오픈소스 라이선스(GPLv2) 덕분에 커뮤니티 차원에서 작은 패치와 포크가 이루어지고 있다.
관련 기술 및 부트 로더
- LILO (Linux Loader) – MBR 기반 최초의 Linux 전용 부트 로더.
- GRUB (Grand Unified Bootloader) – 가장 널리 사용되는 다중 OS 부트 로더, BIOS와 UEFI 모두 지원.
- SYSLINUX – ISO 이미지 및 USB 부팅에 특화된 부트 로더.
- BOOTMGR / NTLDR – Windows 부트 매니저와 연계해 듀얼 부팅을 구현할 때 Loadlin이 중간 단계로 사용되기도 함.
참고 문헌
- Anvin, H. Peter. “Loadlin – Load Linux from DOS/Windows”, 1992.
- Linux Kernel Documentation, “Boot Protocol”, 1995‑2005.
- “The Linux Boot Process”, Linux Documentation Project, 2000‑2010.
- “GRUB Manual”, GNU Project, 2023 edition.
위 내용은 공개된 자료와 오픈소스 코드 분석을 기반으로 작성되었으며, 최신 Linux 배포판에서의 정확한 동작 여부는 해당 배포판의 문서를 확인하시길 권장한다.