LILO 제대로 사용하기 v2.0 작성자 : 강기봉 (freekgb@kldp.org, freekgb@netian.com) 작성일 : 2000.1.26 수요일 작성자에 대해 : 네띠앙 Windows NT & Unix 동호회 시삽 HLUG(한양대학교 리눅스 유저 그룹) 웹마스터(고문 대우) 맞춤형 리눅스 내맘대로 배우기 저자 이번에는 리눅스를 LILO 하나로 여러개 멀티 부팅할 수 있는 방법을 추가하였습니다. 다른 운영체제와 함께 사용할 때도 적용이 되는 방법입니다. 변화라면 리눅스만을 여러개 멀티 부팅할 수 있다는 것입니다. 이 문제에 대해 어떤 분께서 문의를 하셨고, 공동체 세미나 문제로 노트북을 사용하던 중 필요에 의해 알아낸 것입니다. 이 방법을 사용하면 하나의 LILO만 설치가 되면 어느 하드 어느 파티션에서도 리눅스를 설치 및 멀티 부팅이 가능합니다. ----------------------------------------------------------------------------- 목차 1. LILO 는 무엇인가? 2. LILO 를 어디서 구할 수 있는가? 3. LILO 설치하기 4. LILO 를 설정하는 방법 1] LILO 를 찾아서 편집을 시작한다. 2] LILO 편집을 위한 기본적인 설명 3] LILO 의 기본적 편집 5. 여러개의 운영체제 멀티부팅을 위한 LILO의 편집 1] 리눅스, 윈도우즈9x, 윈도우즈 2000(NT 4.0) 2] 리눅스, 윈도우즈9x, 도스 내지는 또다른 윈도우즈 9x 가. 하나의 하드 디스크에 설치하기 나. 두개의 하드 디스크에 설치하기 3] 리눅스, os/2 가. LILO를 통한 부팅 나. OS/2 부트메니저를 사용할 때의 LILO편집 4] Linux, FreeBSD 5] Linux, Solaris/x86 가. 하나의 하드에 설치하기 나. 두개의 하드에 설치하기 다. 두개의 하드에 설치하기 (또는 세개. Linux, 윈9x, Solaris 가능) 6. 하나의 LILO로 리눅스 두개 이상 멀티부팅하기 7. LILO 지우기 8. 결언 *** 지난 머릿말 모음 1. LILO는 무엇인가? LILO는 x86용 리눅스에서 가장 많이 사용되는 리눅스 로더입니다. 이것은 도스에서의 멀티 부트와 NT의 부트로더, 그리고 OS/2의 부트로더와 같이 여러 운영체제를 선택적으로 부팅할 수 있도록 하여 줍니다. 아직 불안정하다는 논란이 있습니다만, 리눅스 설치시 기본적으로 설치하여 사용할 수 있다는 것과 실제로 별다른 어려움 없이 설정하여 사용할 수 있다는 점이 이것을 사용할 수 있도록 합니다. 리눅스의 Lilo는 하드의 Master Boot Recorder(MBR)에서 동작하는 프로그램입니다. 일종의 멀티부팅 프로그램으로 리눅스는 DOS가 가지고 있는 Active(부팅 가능)와 linux가 가지고 있는 Active중에서 사용자가 선택한(lilo)에서 값을 부팅시스템에 넘겨 줍니다. 그래서 fdisk해 보면 dos나 non-dos(linux)나 둘다 부트 가능한 Active이죠. 만약 여러 운영체제를 부팅하기를 원한다면(그래서, 플로피디스크로부터 그것들을 부팅하기를 원하지 않는다면) 어떤 종류의 부트 메니저를 사용할 필요가 있습니다. 예를 들어, 윈95는 실제로 부트메니저를 가지고 있지 않습니다.-그것은 부트 옵션들이죠. 그러나, 타 운영체제의 부트 메니저를 통해서 이것을 해결할 수가 있습니다. LILO는 OS/2 부트 메니저나 윈도우즈 NT의 부트 메니저가 할 수 있는 거의 어떤 것이라도 부팅할 수 있도록 편집될 수 있죠. 이것 중에서 실제로 당신에게 맞는 것을 사용하세요. 만약 LILO를 사용하지 않고 도스로부터 부팅하기를 바란다면 LOADLIN.EXE를 쓰면 됩니다. 2. LILO를 어디서 구할 수 있는가 ftp://ftp.ezlink.com/pub/ 에서 최신의 릴로를 구할 수가 있습니다. 그러나, 배포판에는 릴로가 기본적으로 포함되어 있으며 설치시 자동으로 함께 설치할 수 있게 되어 있습니다. 설사 LILO가 설치되어 있지 않다고 하더라도 패포CD에서 복사하여 설치하실 수가 있는 것입니다. 3. LILO 설치하기 앞서 언급을 드렸지만 이렇게 따로 설치하실 필요는 없습니다. 단지 새로운 LILO 버젼을 설치하시거나 혹시라도 재설치가 필요할 때 다음과 같이 설치하시기 바랍니다. 먼저 압축을 풀어줍니다. 가장 간단한 방법으로 다음과 같이 하시면 됩니다. gzip -dc 파일명.gz.tar | tar xvf - 그리고 나서 Makefile로 정의되어지는 REWRITE_TABLE로 컴파일하고 인스톨합니다. 그냥 명령어라인에서 REWRITE_TABLE을 써 넣고 엔터를 치시면 됩니다. 그런 후에 /etc/lilo.conf 를 편집하시고 /sbin/lilo 명렁을 내리셔서 MBR에 이것을 설치하면 됩니다. LILO는 두 군데 설치가 가능합니다. 즉, 일반적으로 MBR(master boot record (/dev/hda) )이나 리눅스 root partition (대체로 /dev/hda1 나 /dev/hda2)을 특정하여 설치가 가능합니다. 여기에서 /etc/lilo.conf안에 있는 'boot=' 지시어는 LILO에게 그것이 그것의 주부트로더를 어디에 놓아야 하는 지를 말합니다. 만약 당신이 또다른 운영체제가 당신의 하드 드라이브에 설치되도록 한다면 당신은 LILO를 MBR보다는 루트파티션에 인스톨하는 것이 좋습니다. 이 경우에 당신은 그 파티션을 fdisk의 a 명령어를 사용하므로써 또는 cfdisk의 b 명령어로써 bootable 로 해 놓습니다. 만약 당신이 메스터 부트 섹터를 덮어쓰지 않는다면 당신은 그것이 리눅스와 LILO를 필요할 때 언인스톨하는 것이 더 쉽다는 것을 알게 될 것입니다. [참고] 1] LILO 설치시 주의할 점 LILO가 시스템을 부팅할 때 그것은 리눅스 커널을 디스크(IDE drive, floppy 또는 다른 것들)로부터 읽어들이기 위해 'BIOS calls'를 이용합니다. 그러므로, 커널은 BIOS에 의해서 연결될 수 있는 어떤 장소에 있어야만 합니다. 부팅시 LILO는 파일시스템의 데이타를 읽을 수가 없습니다. 당신이 /etc/lilo.conf에 넣는 어떤 패스네임이라도 인스톨시킬 때(/sbin/lilo 명령을 내릴 때) 정해(resolved)집니다. 인스톨시에는 프로그램이 어떤 섹터들이, 운영체제가 읽어들이기 위해 사용되는 파일들에 의해, 사용될 지 리스트하는 테이블들을 만듭니다. 결과적으로 이 모든 파일들은 BIOS에 의해 연결될 수 있는 파티션에 있어야만 합니다.(이 파일들은 대체적으로 /boot 디랙토리에 위치하며, 이것은 당신의 리눅스 시스템의 root 파티션만이 BIOS를 거쳐서 연결될 필요가 있다는 것을 의미합니다.) BIOS에 기초하고 있는 또다른 결과는 당신이 LILO 셋업을 편집하는 어떤 때라도 당신이 로더를 재인스톨해야한다는 것입니다(/sbin/lilo 명령을 다시 실행하여 준다). 당신이 당신의 커널을 재컴파일해서 당신의 이전 이미지를 덮어씌울 때마다 당신은 LILO를 재인스톨해야 합니다. 2] 어떻게 대용량 커널을 다룰 것인가? 만약 zImage 커널을 컴파일하는데 너무 커서 반메가(이것은 커널 2.1이후로 공통된 것입니다.) 에 맞출 수가 없다면, 대신 'big zImage' 를 만들기 위해 'bzImage'를 만들어야 할 것입니다. 큰 커널 이미지를 부팅하기 위해 특별한 것은 필요하지 않습니다. 그러나, LILO 버젼 18이상이 필요합니다. 만약 그것보다 오래된 것이 인스톨되어 있다면, 새로운 것으로 업그래이드해야 합니다. 4. LILO 를 설정하는 방법 전술했지만 LILO는 대체적으로 자동으로 설치되도록 되어 있습니다. 그러나, 만약 특정한 운영체제를 더 사용하게 되거나 경우에 따라서는 LILO를 수동으로 편집하고 재설치하는 과정이 필요하게 됩니다. 그래서, 여기서는 기본적인 편집과 개념에 대하여 알아보도록 하겠습니다. 1] LILO 를 찾아서 편집을 시작한다. LILO를 수작업으로 설정해야 한다면, /etc/lilo.conf 파일을 편집해야 할 것입니다. 여기서 /etc는 lilo.conf 파일이 있는 디랙토리이고 그 파일을 열기 위해서 전체경로를 적어준 것입니다. 다음과 같이 파일을 엽니다. # vi /etc/lilo.conf 2] LILO 편집을 위한 기본적인 설명 LILO를 편집하기 위하여 몇가지 기본적인 개념들을 알고 갑니다. 부트 로더 설정 파일 /etc/lilo.conf boot=/dev/hda append="mem=128M hdc=621,128,63 hdd=827,64,63" map=/boot/map install=/boot/boot.b prompt timeout=50 image=/boot/vmlinuz-2.0.36-1kr label=linux root=/dev/hdb5 inird=/boot/initrd-2.0.36.img read-only other=/dev/hda1 label=dos table=/dev/hda boot= LILO가 설치 될수 있는 곳 1. /dev/hda라면 첫번째 IDE 하드디스크의 MBR에 설치 2. /dev/sda라면 SCSI 첫번째 부팅 가능한 하드디스크의 MBR에 설치 3. 부팅 가능한 첫번째 플로피 장치명인 /dev/fd0를 적습니다. MBR에 설치하면 LILO가 시스템의 기본 부트 로더가 됩니다. prompt , timeout=<입력 대기 시간, 1/10초 단위> prompt는 boot: 프롬프트를 표시합니다. timeout은 지정한 시간안에 키보드 입력이 없을 때 첫번째 등록된 부팅 항목 또는 default= 설정행에서 지시하는 항목으로 부팅됩니다. 시간 설정은 1/10초 단위로 설정 되므로 50 이면 5 초를 의미합니다. append="<커널 옵션>" 커널옵션은 boot:프롬프트에서도 입력할수 있지만 매번 입력해야 한다면 이곳에 적어둡니다. default=<기본 부팅 항목> LILO는 dsfault=설정행이 없으면 image= 또는 other= 설정행으로 첫번째 등록된 항목으로 일정시간 후에 부팅합니다. image=<리눅스 커널 이미지 위치> 리눅스 커널 이미지를 등록하는 부분입니다. label=<등록하고자하는 이름> 부팅하고자 구별하는 인식단어를 표시합니다. root=<루트 파티션 장치명> 리눅스가 설치된 루트 장치명을 표시합니다. read-only 리눅스는 대부분의 경우 일단 루트 파티션을 읽기 전용으로 마운트합니다. initrd=<초기화 루트 디스크 이미지> 초기화에 필요한 루트 디스크 이미지를 표시합니다. other=<다른 운영체제 파티션> 리눅스 이외의 도스/윈95/윈98 운영체제가 설치된 파티션 위치를 지정하고 등록하여 설정합니다. 3] LILO 의 기본적 편집 대부분 LILO 인스톨은 다음 예들과 같이 파일을 작성하여 사용합니다. 물론 처음 자동으로 설치되어 나올 때도 바로 이런 형태로 작성되어 있습니다. 여기에서는 기본적으로 하나의 드라이브 또는 두개의 드라이브에 두개의 운영체제를 설치했을 때의 편집례를 소개하여 드리겠습니다. 다음은 하나의 드라이브에 리눅스와 도스(또는 윈95)를 설치하여 사용할 경우의 편집례입니다. boot = /dev/hda # 또는 root 파티션 delay = 10 # delay, in tenth of a second (so you can interact) vga = 0 # optional. Use "vga=1" to get 80x50 #linear # try "linear" in case of geometry problems. image = /boot/vmlinux # 당신의 커널 zImage 파일 이름 root = /dev/hda1 # 당신의 root 파티션 label = Linux # 또는 마음에 드는(fancy) 이름 read-only # root를 read-only로 마운트 other = /dev/hda4 # 만약 있다면 당신의 dos 파티션 table = /dev/hda # 현재의 partition table label = dos # 또는 또다른(non-fancy) 이름 만약 원한다면 여러가지 image 와 other 부분들을 가질 수 있습니다. lilo.conf안에 작성된 여러가지 커널 이미지들을 가지는 것은 낯선일은 아닙니다. 적어도 최신의 개발된 커널을 유지하려고 한다면 말입니다. 다음은 또다른 LILO 편집례입니다. 이 예에서 리눅스 루트 파티션은 /dev/hda2에 자리를 잡고 있고, MS-DOS는 /dev/hdb1에 (두번째 하드 드라이브) 설치되어 있습니다. # Tell LILO to install itself as the primary boot loader on /dev/hda. boot = /dev/hda # The boot image to install; you probably shouldn't change this install = /boot/boot.b # The stanza for booting Linux. image = /vmlinuz # The kernel is in /vmlinuz label = linux # Give it the name "linux" root = /dev/hda2 # Use /dev/hda2 as the root filesystem vga = ask # Prompt for VGA mode append = "aha152x=0x340,11,7,1" # Add this to the boot options, # for detecting the SCSI controller # The stanza for booting MS-DOS other = /dev/hdb1 # This is the MS-DOS partition label = msdos # Give it the name "msdos" table = /dev/hdb # The partition table for the second drive 일단 /etc/lilo.conf 파일을 편집한 후에는 root의 권한을 가지고서 /sbin/lilo 를 실행시켜야 합니다. 그렇게 하므로서 하드 드라이브에 LILO가 설치될 것입니다. 또한 명심해야 할 것은, 커널을 재컴파일 한 후에도 그것을 부트 로더에게 알려주어야 하며, 그렇게 하려면 /sbin/lilo를 다시 실행시켜야 한다는 것입니다. (그냥 숙지해 두시면 됩니다). 여러분은 이제 하드 드라이브로부터 시스템을 다시 부팅할수 있습니다. 디폴트로서 LILO는 설정파일에 나열된 것중 첫번째 오퍼레이팅 시스템을 부팅할 것입니다. 이 경우에는 리눅스가 첫번째로 나열되어 있습니다. 다른 오퍼레이팅 시스템을 선택하여 부팅하기 위해서는 처음 부팅시에 아래와 같은 것이 나타날 것입니다. 나타나지 않는다면 부팅시에 shift또는 control 키를 눌러 보시기 바랍니다. Boot: 여기에 부팅할 오퍼레이팅 시스템명을(설정파일의 label 라인에 명시되어 있습니다. 여기에서는 linux 또는 msdos 입니다.) 입력하십시요. 또는 목록을 보려면 tab 키를 눌러보십시요. [참고] The `init=' Argument 커널은 부트시에 일반적으로 `init' 프로그램으로 시작합니다. 이것은 컴퓨터를 설정하는 getty같은 프로그램을 실행시키거나 `rc' 스크립트나 그와 비슷한 것들을 실행함으로서 가능합니다. 커널은 처음에 /sbin/init 를 찾습니다. 그 다음엔 /etc/init를 찾습니다. 그리고 마지막 수단으로 /bin/sh를 사용하려 할 것입니다. (/etc/rc도 가능) 예를 들면 init 프로그램 이 중지되고 부트할 수 없어졌다면 부트시에 직접 쉘을 가동시키기 위하여 간단히 init=/bin/sh 인자만을 사용하면 됩니다. 그리고 잘못되었던 프로그램을 제대로 되돌리면 됩니다. 5. 여러개의 운영체제 멀티부팅을 위한 LILO의 편집 1] 리눅스, 윈도우즈9x, 윈도우즈 2000(NT 4.0) 이것은 /etc/lilo.conf 파일을 편집하고 LILO를 재인스톨하는 것에 관련된 것입니다. 다음이 이 파일에 미리 존재해야 합니다. boot=/dev/hda 리눅스에 대한 것이 또한 이미 존재해야만 합니다. image=/vmlinuz(해당 이미지의 이름을 정확히 기재합니다.) root=/dev/hdc1 label=Linux 이제 윈95/98에 대한 것을 편집하도록 합니다. other=/dev/hda1 table=/dev/hda label=Windows95 이제 윈 2000(NT 4.0)에 대한 것을 편집하도록 합니다. other=/dev/hdb1 table=/dev/hda loader=/boot/any_d.b label=WindowsNT 이 부분은 2000(NT 4.0)이 다른 디스크에 설치될 때의 예입니다. 그리고, 만약 같은 디스크에 파티션으로 존재한다면 위의 윈95/98의 예를 따르시면 됩니다. 이제 LILO를 다시 설치하시고(/sbin/lilo) 컴퓨터를 재부팅시킵니다. 만약 모두가 잘 된다면 당신은 윈 95/98와 윈 2000(NT 4.0)와 리눅스를 LILO로 부터 선택할 수 있도록 되어 있는 것입니다. 또한, 리눅스와 윈 2000(NT 4.0)의 멀티 부팅시나 리눅스와 윈9x간의 멀티부팅시에도 위의 것을 응용하면 됩니다. 하나만 빼주면 되겠죠...^^ [참고] 윈도우즈 NT4.0 일 때 리눅스를 나중에 설치하면, LILO 부팅시 NT쪽 부팅에 문제가 발생할 수 있다고 하니 항상 NT보다 리눅스를 먼저 설치하도록 합니다. 그리고, 리눅스를 세컨더리 하드웨어 슬레이브에 설치할 때도 문제가 좀 있는 것 같습니다. 아마도 boot.b에 문제가 있는 것 같습니다. 아직 미확인입니다. Win NT 4.0과 win 98를 같은 하드에 설치할 때 문제가 생길 수 있는데, 이 경우 win 98을 fat16으로 설치하든지 도스 파티션을 가장 앞에 놓고, 다른 win 98, win NT 4.0을 설치하도록 합니다. 2] 리눅스, 윈도우즈95/98, 또다른 윈도우즈 95/98 내지는 도스 설치 각각 다른 언어의 윈도우를 설치하여 부팅하려 할 때나 MS사의 여러 운영체제를 설치할 때 문제가 생기곤 합니다. 이것을 해결하기 위해 LILO를 사용할 수 있습니다. 윈95/98와 dos(또는 다른 윈도우)는 하나 이상의 파티션이 활성화(active)로 표시되면 문제가 생길 수 있습니다(confused). 그래서, 그들이 부팅하기 전에 부트 메니저가 그들의 파티션이 활성화해서 어떤 다른 것들도 표시되지 않도록(unmark) 할 필요가 필요가 있습니다. 그래서, 활성화 파티션을 하나만 지정하고 부팅하면 드라이브명을 운영체제에서 다시 표시하도록 말이죠. 또한 이들은 몇가지 이유로 부팅된 디바이스에 파티션들을 다시 명시합니다(relabel). 그래서, OS는 항상 C드라이브에 위치하도록 나타납니다. 그래서 예를 들어 당신이 도스를 파티션 E에 설치한다고 하더라도 그것은 그것이 부팅할 때 파티션 C로 나타나게 됩니다. 이 경우 LILO를 이용하여 하드 디스크 하나 또는 하드디스크 두 개에 나누어 설치하여 LILO를 설치하여 부팅이 가능하도록 할 수 있습니다. 이 경우 다른 하드디스크에 각각 다른 윈도우95/98을 설치합니다. [참고] win 2000과 win 98간에는 같은 하드웨어에 설치해도 문제가 없습니다. 2000의 부트메니저가 그것을 자동으로 감지하여 무리없이 멀티부트 메뉴를 만들어 내기 때문입니다. 가. 하나의 하드 디스크에 설치하기 가] 당신의 드라이브에 세개의 파티션을 만들기 위해 리눅스 fdisk나 파티션 매직을 사용합니다. 하나의 파티션에 윈95를 설치하고 또다른 하나에 도스(또는 또다른 윈도우)를 설치합니다. 그리고, 세번째에 리눅스를 설치합니다. 만약 당신이 당신이 시작할 드라이브에 하나의 파티션(도스)만을 가지고 있다면 파티션 매직이 그거을 세개로 나눌 수 있는 쉬운 방법일 것입니다. FIPS는 무료로 같은 것을 합니다. 그러나, 그것을 돌리는 것은 조금더 기술적입니다.(동호회 강좌 게시판에 게시되어 있습니다.) 나] August 1996의 것으로 부팅시 엑티브 표시(flag)를 업데이트하는 능력을 가지 유일한 버전인 lilo.17.tar.gz 사본을 가져옵니다. ftp://ftp.ezlink.com/pub/lilo.17.tar.gz 그것을 Makefile 로 정의되는 REWRITE_TABLE로 그것을 컴파일하고 인스톨합니다. /etc/lilo.conf 을 다음과 같이 편집하여 설치하고, /sbin/lilo를 실행하여 드라이브의 MBR 기록을 업데이트합니다. boot = /dev/sda # 드라이브명 compact delay = 5 # optional, for systems that boot very quickly vga = normal # force sane state ramdisk = 0 # paranoia setting root = current # use "current" root image=/boot/vmlinuz # 커널 이름 append="aha1542=0x230 ro" label=linux other=/dev/sda1 table=/dev/sda rewrite-table # 덧붙여진 곳 label = dos other=/dev/sda2 table=/dev/sda rewrite-table # 덧붙여진 곳 label = w95 나. 두개의 하드 디스크에 설치하기 lilo가 버젼 1.7이상이라면 위와 같이 한 하드에 설치가 가능합니다. 그러나, 경우에 따라서 다음과 같이 하드 두개에 나누어 설치하여 LILO를 통해 모두 부팅이 가능하도록 할 수 있습니다. 즉, 다른 하드에 윈95/98을 설치하여 사용할 수 있습니다. 우선 첫 번째 하드디스크의 첫 파티션에 윈도우95/98(도스)를 설치하고 나머지 파티션에 리눅스를 설치한다. 다른 하드디스크에 윈도우95/98을 설치합니다. 물론, 각각의 운영체제는 부팅 가능하도록 설정합니다. 그리고, 리눅스로 부팅해서 lilo.conf를 편집합니다. -파티션 테이블 /dev/hda1 * win9x partition (C: or D: depending upon boot) /dev/hda2 / (Linux root) # 리눅스의 fdisk로 파티션을 잡아야 합니다. /dev/hda3 swap /dev/hdb1 * Win9x partition (C: or D: depending upon boot) [/dev/hdb2 DOS partition (E: always) - 옵션] *를 가진 파티션은 fdisk에 의해 부팅할 수 있도록('active') 설정된 것입니다. -/etc/lilo.conf의 예: boot=/dev/hda [append="mem=128M hda=621,128,63 hdb=827,64,63"#대용량 하드웨어 옵션] map=/boot/map install=/boot/boot.b prompt timeout=50 default=linux image=/boot/vmlinuz label=linux root=/dev/hda2 read-only other=/dev/hdb1 table=/dev/hdb label=win98_2 other=/dev/hda1 table=/dev/hda label=win98_1 3] 리눅스, os/2 가. LILO를 통한 부팅 만약 먼저 리눅스의 LILO를 통하여 부팅을 하기 위해서는 도스의 예에서와 같은 설정을 하여 주시면 됩니다. 리로 프롬프트가 뜨면 shift키를 누르고 OS2같은 것을 입력하면 됩니다. 다음은 편집의 한 예입니다. 우선 /etc/lilo.conf에 다음과 같이 추가합니다. other = /dev/hda5 label = os2 (OS/2 파티션 /dev/hda5) 그리고, 아래처럼 써서 리눅스가 파티션을 체크하도록 할 수 있도록 합니다.. table = /dev/hda(또는 hdb. 이경우는 os/2가 두번째 하드에 있는 경우입니다.) 만일 OS/2가 두번째 하드 드라이브에 있다면, /sbin/lilo가 제대로 실행되지 않 을 경우만 제외하고는 다음과 같이 써넣어야 합니다. loader = /boot/os2_d.b (두번째 하드에서 OS/2로 부팅하려면 특별한 적재기가 필요한데, os2_d.b가 바로 그것입니 다.) other = /dev/hda5 table = /dev/hda label = os2 ( loader = /boot/os2_d.b) 나. OS/2 부트메니저를 사용할 때의 LILO편집. OS/2의 부트 매니져가 되게 하려면 LILO를 리눅스 파티션의 부트 섹터에다 설치해야 합니다. 파티션 정보에서 리눅스가 설치되어 있는 곳이 /dev/hda3이라고 가정합니다.(/dev/hda가 아닙니다! /dev/hda는 마스터 부트 레코드로 OS/2의 부트 매니져가 있는곳입니다.) 먼저 리눅스의 설치를 끝내고 나서 OS/2를 설치하게 됩니다. 일단 리눅스를 설치한 후에 다음과 같이 설정 화일인 /etc/lilo.conf를 편집합니다. 이것은 리로에게 리눅스의 커널(운영 체제 자신)을 하드 안, 어디에서 찾을 수 있는지를 말해줍니다. boot = /dev/hda3 delay = 50 vga = normal ramdisk = 0 image = /vmlinuz root = /dev/hda3 label = linux read-only 또는 다음과 같이 합니다. boot = /dev/hda3 install = /boot/boot.b compact image = /vmlinuz label = linux root = /dev/hda3 vga = ask LILO가 설치된 파티션을 등록할 때 그것은 /dev/hda가 아니라 /dev/hdax입니다.(또는 hdb나 적당한 것으로 등록합니다.) 주의할 점은 OS/2 Boot Manager 로부터 리눅스를 부팅하기 위해서는 OS/2의 FDISK를 (리눅스 버전의 것이 아님) 이용하여 파티션을 생성해야만 합니다. 그리고 그 파티션을 FAT 또는 HPFS로 포맷해야 합니다. 그렇게 해야 OS/2가 그것에 대하여 알게됩니다. 그리고, LILO로 부팅하기 위해서는 리눅스를 나중에 OS/2 부트메니저를 이용하고 싶을 때를 리눅스를 먼저 설치합니다. 4] Linux, FreeBSD LILO를 사용하길 원한다면 FreeBSD 부트 선택기(boot selector)(Booteasy)를 설치하지 않도록 합니다. 사용 중인 /etc/lilo.conf 파일에 다음 줄을 추가하고 lilo를 실행시킵니다(FreeBSD 슬라이스가 /dev/hda4라고 가정한다): other=/dev/hda4 table=/dev/hda label=FreeBSD 만약 FreeBSD를 두 번째 SCSI 드라이브에 인스톨하였다면, 다음과 같은 내용을 사용합니다(FreeBSD 슬라이스는 /dev/sdb2라고 가정한다): other=/dev/sdb2 table=/dev/sdb loader=/boot/chain.b label=FreeBSD 5] Linux, Solaris/x86 가. 하나의 하드에 설치하기 Lilo를 이용해서 Linux와 Solaris/x86를 부팅하려면 먼저 Solaris/x86를 첫번째 파티션에 설치한 후에 Linux를 설치하고 LILO를 MBR에 설치하여 줍니다. 물론, Solaris/x86을 active로 놓아 주어야 합니다. 그리고 나서 다른 것들과 마찬가지로 편집을 하여 줍니다. other=/dev/hda1 table=/dev/hda label=Solaris 나. 두개의 하드에 설치하기 만약 다른 하드에 Solaris/x86을 설치하려면 다음과 같이 하여야 합니다. 기본적으로 Linix의 LILO boot loader 는 (chain.b 문구로)solaris가 슬래이브를 마스터인것으로 오인하여 반대로 행하도록 합니다. other=/dev/hdb1 label=solaris table=/dev/hdb loader=/boot/chain.b 만약 primary IDE slave drive가 아니라 secondary IDE master drive로 되어 있다면 /dev/hdb 대신에 /dev/hdc 를 사용합니다. 다. 두개의 하드에 설치하기 2.(또는 세개. Linux, 윈9x, Solaris 가능) 위의 방법은 Solaris primary IDE slave drive 로 되어 있을 때에 통용되며 secondary IDE master drive일 때도 가능합니다. 그러나, 후자의 경우에는 다음과 같이 할 수도 있습니다. 약간은 어려운 방법이지만 좋은 방법이라 할 수 있습니다. (Lim Chee Siang writes) Solaris는 primary-master disk로 설치하도록 되어 있습니다. 그래서, 항상 이것을 먼저 설치하여야 합니다. 그래서 만약 리눅스나 다른 운영체제가 다른 드라이브에 있을 때에는 이것을 따로 설치해 줄 필요가 있습니다. 그리고, 이 경우 부팅하기 위한 pass 등을 고쳐주어야 이것이 제대로 부팅이 됩니다. Solaris는 /etc/bootrc에 설정되어 있는 boot-path를 통하여 부팅합니다. 그리고, 부팅하는 동안에 fsck는 /etc/vfstab에서 디스크 목록을 확인하고, 마운트는 파일시스템을 마운트할 때 /etc/vfstab를 확인합니다. 따라서, 이 두 파일을 고쳐주어야 합니다. 이 경우에는 기존에 Linux와 윈95 등이 이미 primary IDE master drive와 primary IDE slave drive에 설치되어 있다고 가정합니다. 물론 다음의 과정을 거치기 위해서 그것들을 모두 제거하고 솔라리스를 primary IDE master drive로 설치하도록 합니다. 만약 그렇지 않다면 그렇게 하거나 먼저 Solaris를 먼저 설치하도록 합니다. ㄱ. Solaris를 shutdown하기 전에 touch /reconfigure를 쳐줍니다. 간단하게 디스크를 secondary-master로 놓습니다. Solaris는 /dev/rdsk/ 와 /dev/dsk/ 에서 /devices/isa/ata@1f0,0/ 와 /devices/isa/ata@170,0/ 로 링크를 할 것이고 다음과 같은 목록을 보게 될 것입니다. /dev/rdsk/c0d0sXX -> ../../devices/isa/ata@1f0,0/cmdk@XXXX /dev/rdsk/c1d0sXX -> ../../devices/isa/ata@170,0/cmdk@XXXX /dev/dsk/c0d0sXX -> ../../devices/isa/ata@1f0,0/cmdk@XXXX /dev/dsk/c1d0sXX -> ../../devices/isa/ata@170,0/cmdk@XXXX 이것이 된다면 Solaris를 shutdown하고 디스크를 primary-master 에서 Secondary master로 바꾸어 줍니다. 그리고, 다른 운영체제가 있는 디스크를 원래대로 합니다. ㄴ. 만약 이것대로 되지 않았다면 수동으로 /etc/bootrc 와 /etc/vfstab파일들을 편집하여 주어야 합니다. a. /etc/bootrc에 있는 boot-path를 /isa/ata@170,0/cmdk@0,0:a 에서 /isa/ata@1f0,0/cmdk@0,0:a 로 바꾸어 줍니다. b. /etc/vfstab에 있는 c0d0sXX를 모두 c1d0sXX로 바꾸어 줍니다. a에서는 secondary Solaris boot loader에게 secondary-master disk에서 부팅한다는 것을 알리는 것이고, b에서는 fsck 가 올바른 Solaris 파티션을 체크하도록 하고 mount가 마운팅을 위한 파일시스템을 찾도록 합니다. ㄷ. 다시 touch /reconfigure를 하시고, Solaris를 shutdown하고 디스크를 primary-master 에서 Secondary master로 바꾸어 줍니다. ㄹ. 마지막으로 다른 운영제제가 있는 디스크를 원래대로 놓습니다(물론 LILO는 MBR에 설치되어 있어야 합니다). 그리고, 리눅스로 부팅하여 /etc/lilo.conf에 다음과 같이 편집하여 덧붙입니다. # Solaris at secondary master other = /dev/hdc1 loader = /boot/chain.b label = solaris /sbin/lilo하여 LILO를 재설치하여 줍니다. 6. 하나의 LILO로 리눅스 두개 이상 멀티부팅하기 시스템 : 노트북, 데스크탑 배포판 : Allix, 알짜, MIZI, 파워, 칼데라 1] 개요 리눅스를 하나 설치하고 MBR이나 로컬 부트 영역에 LILO를 설치할 수 있다면, 그것으로 여러 리눅스를 설치할 수 있다. 앞으로 소개하는 방법은 추가적인 LILO 설치 없이 가능하 며, 1024 실린더 문제와 하드디스크의 연결상태에 구애받지 않고 모두 적용된다. 즉, 하나의 LILO만 설치한다면 로드린이 더 이상 필요없게 된다. 2] 필요성 현재의 리눅스는 여러 가지 배포판이 배포가 되고 있으며, 이에 따라 여러 가지 환경의 리 눅스에서 테스팅을 하거나 학습할 필요가 생긴다. 또는 여러 리눅스를 주로 쓰는 리눅스를 지우지 않고 설치하여 사용해야 하는 경우도 있다. 이 경우에 이 방법은 최상의 솔루션이 될 수 있다. 3] 방법 방법은 의외로 쉽습니다. LILO를 설치한 배포판에서 다른 리눅스를 부팅할 수 있도록 lilo.conf 를 수정하고, LILO를 재설치하면 됩니다. 그러나, 이것을 위해 한가지 편법을 써야 합니다. 다른 리눅스의 부트 이미지를 LILO를 설치한 배포판의 boot 디랙토리 아래에 복사하는 것입니다. 다음부터는 상세한 방법입니다. 가. 첫 번째 리눅스 설치 첫 번째 리눅스는 다른 OS와 설치하든 그냥 리눅스만 설치하든 관계가 없습니다. 그리고, MBR 이나 로컬 부트 영역이나 상관없습니다. 단지 LILO를 설치할 수 있고 그것으로 부팅이 가능하면 됩니다. 나. 두 번째 리눅스 설치 두 번째 리눅스 설치를 합니다. 그러나, LILO를 설치하지 않는다. 부팅이 안될까 걱정할 필요 없습니다. 리눅스끼리는 파티션이 인식이 되기 때문에 앞으로의 설정에 아무 문제가 발생하지 않습니다. 다. 첫 번째 리눅스로 부팅 이제 멀티 부팅을 위해 처음 설치한 리눅스로 부팅합니다. 라. 다른 리눅스 파티션을 마운트 설정을 위해 다른 리눅스 파티션을 마운트합니다. 마. lilo.conf 수정하기 이제 부팅한 리눅스의 lilo.conf 에 다른 리눅스의 부팅 설정을 적어 넣습니다. 가장 손쉬운 방 법은 다른 리눅스의 lilo.conf에서 해당 부분을 복사하여 현 리눅스의 lilo.conf에 붙여 넣는 것입니다. 수정 후에 저장합니다. [예제] 다음은 엘릭스 리눅스의 부팅 설정 아래에 미지 리눅스의 부팅 설정을 붙인 것입니다. 이름 구분을 위해 label명을 바꾸어 주었습니다. image=/boot/vmlinuz-2.2.15-2.5.0ax label=linux read-only root=/dev/hda3 image=/boot/vmlinuz-mz # 이 부분의 커널 이름은 boot 아래의 # 이미지명과 같아야 한다. label=mizi # 이 부분은 이름이 같지 않도록 바꾼 것이다. read-only root=/dev/hdb2 # 어떤 하드 디스크, 어떤 파티션이라도 관계 없다. 바. 나중에 설치한 리눅스 커널 복사해 옮기기 이 부분은 기존의 리눅스와 뒤의 리눅스의 커널 이름이 같다면 불필요한 작업입니다. 그러나, 대체적으로 이름이 다르므로 필요하다. 나중에 설치한 리눅스의 커널을 복사하여 처음 설치한 리눅스의 boot 디랙토리 아래로 옮겨줍니다. 다음과 같이 합니다. # cp /data(마운트 디랙)/boot/vmlinuz /boot 사. LILO 재설치 이제 LILO를 다시 설치하기 위해 lilo 명령을 내려준다. 에러가 없다면 성공한 것입니다. # lilo 아. 재부팅하기 이제 확인을 위해 재부팅합니다. 뒤의 리눅스로 부팅해 봅니다. 부팅이 되면 성공입니다. 4] 다른 문제들 가. 다른 이미지가 존재하는 경우(initrd.img) 이 경우에는 그것을 그대로 두고 그 이미지도 커널과 같이 뒤의 리눅스에서 앞의 리눅스의 root 디랙토리로 복사해 넣으면 됩니다. 물론 lilo 명령을 내립니다. 나. 복사해서 옮겨진 커널의 역할은? 단순히 LILO를 재설치 하기 위해 사용됩니다. 시험을 위해 복사해 넣은 부트 관련 파일들을 모두 지워보라. 그래도 부팅이 될 것입니다. 다. 부팅과정은? root 라고 된 부분에서 지정된 파티션으로 부팅이 되고, image라고 된 부분을 읽어 들여 커널 이미지를 인식하여 읽어들입니다. 7. LILO 지우기 LILO가 부트섹터에 설치될 때 그것의 백업이 /boot/boot.xxyy로 생깁니다. xxyy는 hex로 그 디바이스의 major 그리고 minor 숫자입니다. 그것은 ls -l /dev/device 를 실행하여 확인할 수 있습니다. 예를 들어 /dev/hda (major 3, minor 0)의 처음 섹터의 숫자들은 /boot/boot.0300에 저장됩니다. 이에 대해 /dev/fd0 상의 LILO가 /boot/boot.0200를 만들고 /dev/sdb3 (major 8, minor 19)가 /boot/boot.0813를 만듭니다. 이것은 이미 하나가 존재한다면 다시 그 파일을 만들 필요가 없습니다. /boot/에 있는 백업본들은 항상 어떤 릴로를 설치하기 전에 그 상황을 확인합니다. 참고로 다음과 같이 하면 백업된 섹터 이미지를 복원할 수 있습니다. # /sbin/lilo -u /dev/hda 만약 Lilo가 /dev/hda에 설치되어 있다면 단지 다음과 같이 해 주면 됩니다. 1] dd if=/boot/boot.0300 of=/dev/hda bs=446 count=1 또는 cat /boot/boot.0300 > /dev/hda 그러나, 이것은 안전하지 못합니다. 원래 파티션 테이블 정보를 복원하게 되니 말이죠. 2] /sbin/lilo -U 또는 lilo -u /dev/hda(MBR이 있는 곳) 3] fdisk /mbr 이것은 도스쉘로부터 실행합니다. 만약 리눅스의 루트파티션에 LILo가 설치되어 있다면 어떤 특별한 조치가 필요하진 않습니다. 리눅스를 지울 때 이것이 함께 지워지죠. 8. 결언 지금까지 LILO에 관한 여러가지 것들을 보았습니다. 이것에 몇가지의 문서들이 있지만 전체적으로 이것들을 포괄해서 정리해준 문서는 없는 것 같았습니다. 바로 이 문서의 목적은 LILO에 대한 전체적인 것들을 포괄하여 리눅서들에게 조금 더 편리를 주고자 하는 것입니다. 여러가지 문서들을 포괄하면서 이것들을 편집하고 정리하였으며 저의 의견을 달았습니다. LILO를 구성하여 사용하시는데 조금이나마 도움이 되셨으면 합니다. 아직 정리하지 못한 것들이 있습니다. 그래서, 앞으로 내용을 조금더 덧붙이고 수정을 해 나갈 생각입니다. 더 나은 의견이나 문서에 대한 조언이 있으시다면 저에게 메일을 부탁드립니다. 이 문서를 작성하기 위해서 도움을 얻은 문서들은 다음과 같습니다. Linux Installatition HOWTO Windows 95 + Windows 3.x + Linux Howto Lilo mini-Howto Win95 + WinNT + Linux multiboot using LILO mini-HOWTO Linux Linux+DOS+Win95 mini-HOWTO Lilux + FreeBSD mini-HOWTO Linux + OS/2 (+ DOS) 미니-하우투 Solaris/x86 FAQ *** 이전 머릿글 모음 --v1.2 머릿글 - 2000.1.27-- 이번에는 윈도우 95/98을 두개 이상 설치할 때의 설정법을 수정하였습니다. 조금 잘못된 부분도 있어서였습니다. 그리고, 윈도우즈 9x/윈도우즈 2000(4.0) /리눅스 멀티부팅관련하여 약간의 참고사항을 집어 넣었습니다. 문서의 업데이트를 위해 질문해 주시는 분들의 힘이 큽니다. 질문이 있다면 항상 문서를 다시 보게 되죠. 또한 제가 보는 것과도 느낌이 다르구요. 그리고, 무엇보다 제대로 테스팅을 하게 됩니다. --v1.1 머릿글 - 1999.8.4. 수요일-- LILO를 체계적으로 정리한 문서 내지는 종합해 놓은 것이 없는 것 같습니다. 그렇기에 제가 시간을 내어서 정리해 보았습니다. 이 문서는 전적으로 네띠앙 Windows NT & Unix 동호회 소유임을 밝힙니다. 또한 글의 사용은 일반 HOW-TO 문서와 동일한 조건에서 가능합니다. 이번에는 Linux, Solaris/x86의 멀티부팅을 덧붙여 넣었고, 글자 몇개를 수정하였습니다. 미진한 부분이나 지도의 글은 저에게 메일을 주시기 바랍니다. 이 문서는 계속하여 업데이트 됩니다. --------------------------------------------------------------------------