주 부트로더(MBR에 설치됨)로 사용하거나 2차 부트로더(부팅 가능한 파티션에 설치됨)로 사용할 수 있다. 파티션에 위치하게 되면 이를 불러올 무언가가 MBR에 위치해야 한다. Linux, FreeBSD(Berkeley Software Distribution), NetBSD, OpenBSD는 LILO와 GRUB을 모두 지원하며, 설정 파일을 통해서 윈도우 XP에서도 사용할 수 있다. 두 가지 모두 루트 사용자의 싱글유저모드로 부팅하는 기능을 제공한다.

LILO는 특정 파일 시스템에 의지하지 않는다.
플로피 디스크와 하드 디스크에서 가능하다.(OS 시동)
바이오스(BIOS) 드라이버를 통해 하드웨어와 접근 가능하다.
예전의 배포판의 대부분이 LILO를 기본 부트로더로 사용했다.



GRUB의 가장 큰 특징은 파일시스템과 커널 포맷을 이해한다는 점이다.
따라서 디스크상에서 커널의 물리적인 위치를 알 필요 없이 단지 파일명과 커널이 위치하고 있는 파티션만 알고 있으면 커널을 로드할 수 있다. LILO의 경우 부트로더가 커널의 하드디스크상의 물리적인 위치를 알고 있어야 한다. 따라서 커널을 다시 설치할 때마다 ‘lilo’를 실행해 부트로더를 다시 심어 주어야 하지만, GRUB의 경우 파일명만 알면 되기 때문에 파일명이 바뀌지 않는 한 다시 실행해 줄 필요가 없다.

현재 GRUB은 다음과 같은 기능들을 제공한다.

1. a.out 포맷과 ELF 포맷의 커널을 읽어들일 수 있다.
2. Linux, FreeBSD, NetBSD, OpenBSD등 비-멀티부트 커널을 지원한다.
3. 멀티플 모듈을 로드할 수 있다.
4. 텍스트 형식의 설정 파일을 제공한다.
5. 메뉴 인터페이스를 제공한다.
6. 유연한 커맨드라인 인터페이스를 제공한다.
7. BSD FFS, FAT16, FAT32, Minix, ext2 그리고 ReiserFS 파일시스템을 지원한다.
8. gzip으로 압축된 파일을 다룰 수 있다.
9. BIOS에서 인식되는 모든 장치에 엑세스할 수   있다.


GRUB에도 장점만 있는 것은 아니다. 먼저, 윈도우 등 “chainloader”를 사용해야 하는 운영체제가 첫 번째 하드디스크 외의 다른 하드디스크, 예를 들어 “hdb”에 설치되어 있을 경우 GRUB을 사용해서는 이 운영체제로 부팅할 수 없다. 다음으로, 플로피 디스크나 CD-ROM 부팅을 지원하지 않는다. 마지막으로 다른 부트로더에 비해 덩치가 상당히 크다. 특히 GRUB 플로피디스크를 이용하여 부팅할 때에는 stage2가 로드되는 동안 GRUB 자체를 부팅하는 듯한 느낌이 들 정도다. 하지만 요즘 대부분의 배포판에서는 GRUB을 기본 부트로더로 제공하고 있다.

부트로더란 무엇인가?? 왜 사용하는 거지??
: machine이 직접 OS를 로드하면 BIOS는 우선 512 바이트의 부팅 가능한 미디어(master boot record 또는 MBR)를 읽는다. 하나의 MBR에 단 하나의 OS의 부트 레코드를 저장할 수 있기 때문에 여러 OS가 필요할 경우 문제는 자명하다. 따라서 우리에겐 보다 유연한 부트 로더가 필요하다.

마스터 부트 레코드는 부트 로더 프로그램 전체 또는 일부, 그리고 파티션 테이블(나머지 미디어가 파티션으로 나뉘어지는 방법에 대한 정보를 포함하고 있음.)을 가지고 있다. BIOS가 로딩되면 하드 드라이브의 첫 번째 섹터에 있는 데이터를 찾는다. 그것이 MBR이다. MBR에 저장된 데이터를 사용하여 BIOS는 부트 로더를 활성화한다.

BIOS가 액세스 할 수 있는 데이터 양은 매우 적기 때문에, 대부분의 부트 로더는 두 단계로 로딩된다. 첫 번째 단계에서, BIOS는 initial program loader 또는 IPL로 알려진 부트 로더의 일부를 로딩한다. IPL이 파티션 테이블을 검사하고, 다양한 미디어에 존재하는 데이터를 로딩할 수 있다. 이 작동은 두 번째 단계의 부트 로더가 처음에 자리잡기 위해 사용된다. 여기에는 로더의 나머지 부분이 포함된다.

두 번째 단계의 부트 로더는 부트 로더의 핵심이라 할 수 있다. 많은 사람들은 이것을 부트 로더라고 생각한다. 여기에는 사용자 인터페이스와 커널 로더 같은 디스크를 위시한 부분들을 포함하고 있다. 이러한 사용자 인터페이스들은 간단한 명령행부터 GUI 까지 다양하다.

부트 로더는 두 가지 방식(주 부트 로더 또는 제 2의 부트 로더) 중 하나로 설정된다. 주 부트 로더는 부트 로더의 첫 번째 단계가 MBR에 설치되는 장소이다. 제 2의 부트 로더는 부트 로더의 첫 단계가 부팅 가능한 파티션에 설치되는 장소이다. 개별 부트 로더들이 이때 MBR에 설치되고, 컨트롤을 제 2의 부트 로더에 전달하도록 설정된다.

친구가 config.mak 파일이 뭐냐는 질문을 해왔다 ...
난감... 뭐지?;;

검색해본 결과 ,
configure 명령으로 컴파일 옵션을 설정해주었을 때
명령이 성공하면 생성되어지는 파일이라고 한다.

파일을 열어보면 어떤 컴파일러와 툴을 사용하는지에 대한 정보가
기록되어 있다.

이노무 기억력..

분명 예전에 삽질하면서 본 파일같은데

아직 건드려보진 않았지만

작년처럼 모르고 막 수정해버리는 실수따윈 하지 않을거다

올해는 앎의 중요성을 인지해야 한다 ㅎㅎ


뽀나스~

* ar: 정적 라이브러리들을 만든다.
* objdump: 가장 중요한 바이너리 툴; 바이너리 형식 오브젝트
파일의 모든 정보를 보여준다.
* strings: 바이너리 파일의 출력가능한 모든 문자열들을 보여준다.
* nm: 오브젝트 파일의 심볼 테이블에 정의된 심볼들의 리스트를 보여준다.
* ldd: 오브젝트 바이너리 파일이 의존하고 있는 공유 라이브러리들의
목록을 보여준다.
* strip: 심볼 테이블 정보를 지운다.

+ Recent posts