이 장은 커널 그 자체에게 부트 인자들을 전달해 주는 소프트웨어의 여러 예들을 보여줄 것이다. 어떻게 인자들이 처리되는가 또한 부트 인자들의 한계는 무엇인가 그리고 어떻게 각각의 원했던 장치로의 접근이 가능한지를 알 수 있다. 부트인자에 스페이스가 사용 안되도록 아주 주의하여야 한다. 단일 인자들 은 그 값들을 나열하며 여러 인자들은 스페이스 없이 콤마로 분리된다. 아래 이어지는 예들을 보라
ether = 9,0x300,0xd0000,0xd4000,eth0 root=/dev/hda1 *RIGHT* ether = 9, 0x300, 0xd0000, 0xd4000, eth0 root = /dev/hda1 *WRONG*
Werner Almesberger가 만든 LILO(LInux LOader)는 매우 일반적으로 사용된 다. 이것은 여러 커널들중에 하나로 부팅할 수 있으며 이런 정보를 보통 텍스트로 저장한다. 대부분의 배포판에서는 기본적인 부트로더로서 LILO가 사용된다. LILO는 DOS, OS/2, Linux, FreeBSD 등을 별 어려움 없이 부팅할 수 있으며 매우 융통성이 있다.
전형적인 환경설정이라면 LILO는 멈추어서 "LILO" 를 출력할 것이다. 간단 히 말하면 당신이 컴퓨터를 켠후에 컴퓨터는 사용자로부터 옵션을 입력 받 기 위하여 몇초 동안 기다린다. 일반적인 시스템은 LILO configuration파일 을 이용하여 "linux", "backup", "msdos"라는 라벨들을 사용한다. 부트 인자 들을 넣으려 한다면 당신이 부트하기 원하는 시스템 라벨을 입력한 후에 아 래의 예처럼 입력하라.
LILO: linux root=/dev/hda1
다른 부트 로더로는 자원들이 확실하다는 가정을 하고 도스 프롬프트로부터 리눅스 커널을 작동시키는(부트 인자들 포함) 능력을 가진 LoadLin 이라는 도스 프로그램이 있다. 도스를 사용하며 도스로부터 리눅스를 시작하기를 원하는 사람에게는 좋은 프로그램이다.
만약에 당신이 하드웨어를 알려진 상태로 두는 것을 지원하는 도스 드라이 버에 기반한 하드웨어를 가지고 있다면 이 프로그램은 매우 유용하다. 예를 들면 사블 호환모드로 두기 위해 약간의 레지스터들을 조작하는 도스 드라 이버를 요구하는 `SoundBlaster Compatible' 사운드카드를 가지고 있다면 이 경우에 해당한다. 주어진 드라이버와 함께 도스로 부팅한후에 시스템을 reboot함으로써 카드에 설정된 상황을 읽어버리는 경우 없이 도스 프롬프트 에서 리눅스를 바로 올릴 수 있다. 이렇게 하여 사블 호환 카드는 리눅스 하에서도 그 모드를 유지한다.
리눅스를 부트하는데 사용하는 다른 프로그램도 있지만 완벽한 리스트는 당 신의 지역 Linux ftp 미러의 system/Linux-boot/. 밑을 보라.
커널 이미지 안에 여러 바이트로서 저장되어 디폴트 값들을 가지고 있는 부 트 인자들은 그리 많지 않다. 이러한 값들이 어디에 있는지 또 이들 값들을 어떻게 바꾸는지 알고 있는 대부분의 시스템에는 rdev 라는 유틸리티가 인스톨 되어 있다. 이는 기본적인 비디오 모드와 같이 커널 부트 인자로는 적합하지 않은 것들을 바꿀 수 있다.
rdev 유틸리티는 대게 swapdev, ramsize, vidmode 그리고 rootflags들로 다 르게 불리기도 한다. 거기엔 rdev가 변경할 수 있는 root device, swap device, RAM 디스크 parameter 디폴트 비디오 모드 그리고 root device의 읽기전용 아니면 읽고/쓰기모드의 5가지가 있다. rdev에 관한 좀더 많은 자료는 rdev -h 을 사용하거나 관련된 맨 페이지 를 보라(man rdev를 사용)
대부분의 부트 인자들이 가지는 형태:
name[=value_1][,value_2]...[,value_11]
대부분 인자들은 linux/init/main.c에 있다. 첫째로, 커널은 인자가 `root=', `ro', `rw', or `debug'와 같은 특별한 인자인가를 검사한다. 이런 특별한 인자들은 이 문서 저 뒤에서 서술한다.
특별한 인자 문자열(`foo' 같이)이 setup function(foo_setup())에 연결되 어 있는지를 보기 위하여 이후 장치나 커널의 일부분으로 구분된 setup finctions (bootsetups 배열을 포함하는)들의 목록들로 제어를 옮긴다. 커널에게 foo=3,4,5,6,bar 이라는 라인을 전송했다면 커널은 `foo' 가 등록되 어 있는지를 보기 위하여 bootsetups 배열을 검색한다. 있다면 `foo'(foo_setup())에 연결되어 있는 setup function을 실행 시키고 여기에 커널 명령행에 주어진 것처럼 정수인자 3, 4, 5그리고 6 을 전달하고 또한 문자열 인자인 bar도 건네 줄 것이다.
위에서 말한 setup function으로 하여금 허용되지 않는 `foo=bar'과 같은 형태는 어느 것이든 값을 가진 환경변수로 변환된다. `TERM=vt100'와 같은 부트 인자가 그 한 예이다.
커널에서도 설정되지 않고 환경변수로도 인터프리터 되지 않은 남은 인자들 은 일반적으로 init라고 부르는 process에 전달된다. 대부분의 일반적인 인자들 즉, init process에 전달된 대부분의 일반적인 인자는 단일 사용자 모드로 컴퓨터를 부팅하는 것을 가리키는 하나의 단어이며 이것은 평상시의 모든 데몬을 작동시키지는 않는다. 어떤 인자들이 허용되는 가를 보기 위해서 시스템에 설치된 init버젼의 메뉴얼 페이지를 점검하라.