특정 장치나 주변기기에 정확히 관련되지 않는 부트 인자들이 있다. 이들은 대신에 메모리 헨들링이나 램디스크 핸들링 루트파일시스템의 핸들링 등의 커널 내부 parameter에 관계되어 있다.
아래의 것들은 어떻게 커널을 선택하고 루트 파일 시스템을 핸들할 것인가에 알맞은 옵션들이다.
이 인자는 부트하는 동안에 루트파일 시스템으로 사용될 장치가 무엇인가를 커널에게 알려준다. 기본 값은 커널이 설정되어 있는 시스템의 루트 장치의 값이다. 예를 들면 커널이 루트 파티션으로 `/dev/hda1' 장치를 사용하는 시스템에 설치 되어 있다면 기본 루트 장치는 `/dev/hda1'일 것이다. 이 기본 값을 무효로 하고 루트 장치로서 플로피 드라이브를 사용하려 한다면 `root=/dev/fd1'을 사용하면 된다.
다음에 정확한 루트 장치들이 있다: (1) /dev/hdaN to /dev/hddN, ST-506 호환 디스크의 `a 부터 d' 의 파티션 N. (2) /dev/sdaN to /dev/sdeN, SCSI 호환 디스크의 `a 부터 e' 의 파티션 N. (3) /dev/xdaN to /dev/xdbN, XT 호환 디스크의 `a 부터 b' 의 파티션 N. (4) /dev/fdN, 플로피 디스크 드라이버의 번호 N. N 이 0이면 도스의 `A:' 드라이브이고 1이면 도스의 `B:' 드라이브이다. (5) /dev/nfs, 이것은 실제 장치가 아니며 커널에게 네트워크를 통한 루트 파일 시스템을 구하라고 커널에게 말하여 주는 플래그이다.좀더 다루기 힘들고 이식성이 없는 수치 명세도 major/minor 형식으로 표현 가능한 디스크 장치에 있어서는 가능하다. (예를 들면 /dev/sda3은 major 8, minor 3이다. 따라서 root=0x803으로도 바꿔 사용할 수 있다.) `root='는 커널 이미지안에서 rdev 유틸리티로 변경할 수 있는 기본적인 몇 몇 부트 인자들중에 한 가지이다.
커널 부트시에 기본적인 것들을 읽기 위해서는 루트 파일 시스템이 필요하다. 루트 파일시스템은 부트시에 마운트 된다. 어떻든, 루트 파일시스템이 쓰기 가능하게 마운트 되었다면 당신은 반쯤 저장된 파일을 가지고 있는 파일 시스템을 완벽하게 검사할 수 없다. 여기서 `ro' 옵션은 커널에게 루트 파일시스템을 `readonly'(읽기전용)으로 마운트 하게 한다. 그래서 파일시 스템 일관성 검사 프로그램(fsck)이 검사 도중 반쯤 저장된 파일이 없다고 가정하여 안전하게 동작하게 한다. 어떤 프로그램이나 프로세스들도 `remoounted' 될때 까지 파일 시스템안에 어느 파일에도 쓸 수 없다. `ro'는 커널 이미지안에서 rdev 유틸리티로 변경할 수 있는 기본적인 몇몇 부트 인자들중에 한 가지 이다.
이 인자는 위의 것과 정확히 반대된다. 커널에게 루트 파일시스템을 읽기/ 쓰기로 부트하게 만든다. 기본적으로 루트파일시스템은 읽기/쓰기로 마운트 된다. 읽기/쓰기로 마운트 되어있는 파일시스템에서는 `fsck' 프로그램을 실행하지 마라.
위에서 언급된 이미지 파일안에 저장된 값으로 rdev를 통하여 접근할 수 있는 parameter의 의미로 사용된다.
아래의 옵션은 RAM 디스크 드라이브를 어떻게 핸들해야 하는가에 대한 것과 관련되어 있다. 이것은 일반적인 인스톨 과정에서의 bootstrapping machine 들이나 루트 파일 시스템에 인스톨 되어야하는 modular 드라이버를 가진 기 계들을 위하여 사용된다.
커널 이미지가, 압축된 ramdisk 이미지와 함께 플로피 디스크에 존재하는 것을 허용하기 위하여 `ramdisk_start=<offset>명령이 추가되었다. 커널 은 압축된 ramdisk 파일시스템 이미지에는 포함되지 않는다. 이것은 바이오스 가 bootsector를 올리고 그때 커널이 bootstrap 자신을 실행시키기 위하여 block zero의 처음 위치에서부터 저장되어야 하기 때문이다.
주의: 압축안된 ramdisk 이미지를 사용한다면 커널은 ramdisk로 올려진 파일시스템의 일부분이 될 수 있고 플로피 디스크는 LILO나 아니면 두개로 분 리된 압축이미지를 사용여 부트될 수 있다.
만약 boot/root 이 두개의 셋업 디스크 사용한다면(첫번째 디스크는 커널, 두번째 디스크는 ramdisk 용으로) ramdisk는 block zero에서 시작하고 zero offset이 사용될 것이다. 이런 통상적인 방법으로 당신은 전혀 이 명령을 사용할 필요가 없다.
이 parameter는 커널에게 ramdisk를 올릴것인지 아닌지를 알려준다. `load_ramdisk=1'는 커널에게 플로피를 ramdisk로 올리라고 하는 것과 같다. 기본적인 값은 zero 이다. 이는 커널이 ramdisk를 올리려 시도하지 않는다는 뜻이다. 새로운 부트 인자들에 대하여 그리고 그들을 어떻게 사용하는지에 대하여 자세히 알고 싶으면 linux/Documentation/ramdisk.txt 파일을 보라 이 파일은 이러한 인자들을 `rdev'를 이용하여 어떻게 설정하고 커널 이미지에 저장할 수 있는지에 대한 설명 또한 포함한다.
이 parameter는 ramdisk 이지미를 가진 플로피 디스크를 삽입하라는 프로프 트를 보일 것인지 아니면 보이지 않을 것인지를 커널에게 알려준다. ramdisk는 커널이 하나의 플로피로서 loading/booting을 둘다 마치는 경우에는 프롬프트가 필요없다. 따라서 프롬프트가 필요 없는 단일 플로피 형태에서는 `prompt_ramdisk=0'이 사용될 수 있고 디스크를 바꾸어야 하는 두장의 플로피 환경에서는 `prompt_ramdisk=1'가 사용될 수 있다. 이것은 디폴트임으로 일일이 커널에게 알릴 필요는 없다. (역사적 주의: 어떤 사람은 부트 디스크 로 부터 루트 디스크로 교환하는 기회를 주기 위하여 잠시 멈추기 위한 방 법으로 LILO의 `vga=ask' 옵션을 사용한다.)
새로운 부트 인자들에 대하여 그리고 그들을 어떻게 사용하는지에 대하여 자세히 알고 싶으면 linux/Documentation/ramdisk.txt 파일을 보라 이러한 인자들을 `rdev'를 이용하여 어떻게 설정하고 커널 이미지에 저장할 수 있는지에 대한 설명 또한 포함한다.
Ramdisk가 요구되는 만큼 동적으로 커지는 동안, 모든 가용한 램을 모두 소 비하지 않게 하기 위한 제한 크기가 있는데 기본적으로 대부분의 요구에 만 족할 만큼 큰 4096이 된다. 이 기본 메모리 사용량을 더 크게도 더 작게도 할 수 있다.
새로운 부트 인자들에 대하여 그리고 그들을 어떻게 사용하는지에 대하여 자세히 알고 싶으면 linux/Documentation/ramdisk.txt 파일을 보라 이러한 인자들을 `rdev'를 이용하여 어떻게 설정하고 커널 이미지에 저장할 수 있는지에 대한 설명 또한 포함한다.
(주의: 이 인자는 커널 v1.3.47와 그 이후로는 잘 사용되지 않는다. ramdisk 장치를 위하여 사용된 명령어는 위에서 언급하였다.) 이는 ramdisk 장치의 kB 크기를 명세한다. 예를 들면 램 디스크 장치에 올리기 위한 루트 파일 시스템으로 1.44MB 플로피 장치를 사용하기를 원한다면 이렇게 사용한다.
ramdisk=1440
버전 2.x 나 그 이후에 새로운 커널들은 루트 파일 시스템이 처음에는 램 디스크에 위치하는 형태를 가진다. 그리고 커널은 램 이미지에 있는 /linuxrc를 실행 시킨다. 이런 방식은 실제 루트 파일 시스템을 마운트 하는데 필요로 하는 모듈들을 올리는데 종종 사용된다. (예를 들면 램 디스크 이미지안에 있는 SCSI 모듈을 올리고 그리고 나서 SCSI 디스크의 실제 루트 파일 시스템을 마운트 하는 것이다.)
실제 `noinitrd' 인자는 커널이 부트된 후에 initrd data에 무슨일이 발생 할지를 결정한다. 이것이 명시 되었을 경우 램 디스크로 변환하는 것 대신에 /dev/initrd를 통한 접근이 가능하다. 이것은 램 디스크가 시스템으로 돌려졌을 경우에 한번만 읽혀 질 수 있다. 램 디스크를 초기화하는 더 많은 세부사항에 대해서는 linux/Documentation/initrd.txt를 참조하라 덧붙혀서 대부분의 LILO, LOADLIN의 최신 버전들은 유용한 정보를 더 가지고 있다.
아래의 인자는 당신 시스템의 물리적, 가상 메모리를 어떻게 리눅스가 검출하고 다룰 것인가를 선택한다.
이 인자는 두 가지의 목적이 있다: 원래는 설치된 총 메모리(아니면 리눅스에 사용될 메모리의 총 합을 제한하기를 원할 때 사용) 합을 알려주는 것이 그 목적이었다. 두번째 목적은(잘 사용되지는 않지만) mem=nopentium이라는 명령을 사용하여 리눅스 커널에게 성능이 좋은 4MB 페이지 테이블을 사용하 지 말라고 알리는 것이다.
PC 명세서에 정의 되어 있는 본래의 BIOS call은 단지 64MB 까지만을 보고 하도록 설계되어 있다. (물론, 앞을 준비하지 못하여 디스크에서의 1024 실린더만을 인식하게 해 놓은 것 처럼...휴) 리눅스는 부트시에 얼마나 많은 메모리가 설치되어 있는 가를 결정하기 위하여 이 BIOS call을 사용한다. 설치된 램이 64MB가 넘는다면 당신은 부트 인자로서 리눅스 커널에게 당신이 가지고 있는 메모리의 양을 알려주어야 한다. 여기에 `mem=' 인자를 사 용하는데 있어 리누스가 한 말을 인용한다.
커널은 어떤 `mem=xx' 인자도 허용할 것이다. 그것이 거짓말로 밝혀진다면 커널은 즉시 아니면 조금 있다가 무지막지하게 멈춰버릴 것이다. `mem=0x1000000'는 당신이 16MB 메모리를 가지고 있다는 것을 의미한다.
예를 들면 96MB 기계는 `mem=0x6000000' 인자를 사용하여야 할 것이다.
아주 주의:어떤 기계에서는 BIOS가 케싱하는 메모리의 총합을 사용한다. 그래서 실제 96MB 이상의 주소는 불가능하다. 거꾸로 말하면 어떤 칩셋들은 BIOS가 인식하는 물리적 메모리를 메모리 꼭대기 그 이상으로 mapping 시켜 준다는 뜻이다. 예를 들면 메모리의 가장 윗단은 사실상 96MB + 386kB 이상 이 될 수 있기 때문이다. 리눅스에게 실제 존재하는 메모리모다 많은 양이 존재한다고 알린다면 아마 즉시는 아니더라도 결국에는 안 좋은 일이 꼭 발 생할 것이다.
인자는 16진수로만 이루어 져야만 하는 것은 아니고 꼬리말도 대소문자 상관 없이 `k' and `M' 모두 킬로바이트나 메가 바이트를 나타내기 위해 사용될 수 있다. (여기서 `k'는 입력할 바이트 값을 10비트 쉬프트 시킨 것이고 `M'은 20비트 쉬프트 시킨것이다.) 위에서 한 경고는 아직 유효하다. mem=97920k 사용하여 96MB 기계를 작동시킨다면 mem=98304k를 사용하든 mem=96M를 사용하든 실패할 것이다.
이 인자는 디스크를 스왑하는데 관련된 virtural memory(VM)를 사용자가 조 절하게 한다. 다음 8개의 parameter를 허용한다.
MAX_PAGE_AGE PAGE_ADVANCE PAGE_DECLINE PAGE_INITIAL_AGE AGE_CLUSTER_FRACT AGE_CLUSTER_MIN PAGEOUT_WEIGHT BUFFEROUT_WEIGHT
swap 인자와 유사하게 `buff' 인자는 사용자가 버퍼 메모리 관리에 관련된 어떤 parameter들을 조율하는 것을 가능케 한다. 아래의 6개의 parameter들을 허용한다.
MAX_BUFF_AGE BUFF_ADVANCE BUFF_DECLINE BUFF_INITIAL_AGE BUFFEROUT_WEIGHT BUFFERMEM_GRACE
리눅스는 루트 파일시스템으로 NFS(Network FileSystem)을 사용하는 디스크 없는 워크스테이션을 지원한다. 이들 인자들은 디스크 없는 워크스테이션 에게 자신의 시스템의 정보를 어디서 것을 얻을 수 있는 가를 알려주는데 사용된다. 또한 root=/dev/nfs라는 인자가 요구된다는 것을 주의하라. NFS rootfs을 사용하는데 대한 자세한 정보는 linux/Documentation/nfsroot.txt 파일 안에 있다. 그 파일을 읽어야 한다. 아래의 것들은 그 파일로 부터 직접 가져온 요약일 뿐이다.
이 인자는 어떤 디렉토리로 부터 루트 파일시스템을 읽어 들여야 하는가에 관한 NFS 옵션이다. 인자의 형태는 아래와 같다.
nfsroot=[<server-ip>]<root-dir>[<nfs-options>]
<server-ip> -- NFS 서버의 IP 주소를 결정한다. 이 필드가 안 주어진다면 아래에서 나타날 nfsaddrs 변수에 의하여 기본적인 주소로 결정된다. 이런 parameter가 사용된다면 예를 들어 RARP와 NFS를 서로 다르게 사용할 수 있게 한다. 일반적으로 이 란은 비게 된다.
<root-dir> -- Name of the directory on the server to mount as root. If there is a `%s' token in the string, the token will be replaced by the ASCII-representation of the client's IP address.
<root-dir> -- 서버에서 루트로 마운트 될 디렉토리의 이름. 문자열로 `%s' 토큰이 사용된다면 이 토큰은 NFS 클라이언트의 IP 주소에서 ASCII 형태의 표현식으로 대치된다.
<nfs-options> -- 표준 NFS 옵션들. 모든 옵션들은 콤마로 구분된다. 옵션 이 비게 된다면 아래의 기본적인 값들이 사용될 것이다.
port = as given by server portmap daemon rsize = 1024 wsize = 1024 timeo = 7 retrans = 3 acregmin = 3 acregmax = 60 acdirmin = 30 acdirmax = 60 flags = hard, nointr, noposix, cto, ac
이 부트 인자는 네트워크간 통신에 요구되어지는 여러가지 네트워크 인터페이스 주소들을 설정한다. 이 인자가 주어지지 않는다면 커널은 그 정보를 알기 위하여 RARP나(와) BOOTP를 사용하려 할 것이다.
nfsaddrs=<my-ip><serv-ip><gw-ip><netmask><name><dev><auto>
<serv-ip> -- NFS 서버의 IP 주소. 클라이언트 주소를 결정하기 위하여 RARP가 사용되고 <serv-ip> 파리미터가 주어진 서버의 응답으로부터 대답 하여 비어 있지 않다면 서로 다른 RARP와 NFS 서버를 사용하기 위하여 이부분에 RARP 서버를 명시해야 한다. (아니면 비어 있는 그대로 두던지), 그리고 위에서 이야기한 nfsroot parameter를 사용하여 당신의 NFS 서버를 적어야 한다. 이 항목이 비어 있다면 서버의 주소는 RARP나 BOOTP의 요구에 의하여 채워질 것이다.
<gw-ip> -- 서로 다른 서브넷에 서버가 있을 경우에 게이트웨이 IP주소. 이 항목이 비어 있어서 어느 게이트웨이도 사용되지 않고 서버가 로컬 네트워크에 있다고 가정한다면 BOOTP에 의하여 값을 받을 것이다. <netmask> -- 로컬 네트웨크 인터페이스의 netmask. 이것이 비어 있고 BOOTP에 의하여 값이 결정되지 않는다면 netmask는 클라이언트 IP 주소로 부터 유도된다.
<name> -- 클라이언트의 이름. 비어 있다면 클라이언트의 IP 주소가 ASCII 의 형태나 BOOTP에서 받은 값으로 사용된다.
<dev> -- 사용할 네트워크 장치 이름. 비어 있다면 모든 장치들은 RARP 요청을 위하여 사용되고 처음에는 BOOTP를 위하여 찾는다. NFS를 장치는 받은 RARP나 BOOTP의 응답으로 사용된다. 당신이 하나의 장치를 사용한다면 이란을 비워두는 것이 안전하다.
<auto> -- Autoconfiguration을 위하여 사용되는 방법. 이것이 `rarp'나 `bootp'라면 그 프로토콜이 사용된다. 이 값이 둘다 있거나 비어있다면 양쪽 프로토콜은 커널 환경설정중에 양쪽 프로토콜들이 autoconfiguration을 하지 않겠다는 의미의 'none' 을 사용하여 인에이블된다. 이 경우 당신은 그 전에 모든 필드에 필수적인 값들을 지정하여야만 한다. <auto> parameter 는 nfsaddrs parameter로서 홀로 나타날 수 있다. (<auto> 전에 `:' 문자들이 하나도 없이) 이 경우 autoconfiguration이 사용된다. 어떻든, 이 경우에는 `none' 값은 유용하지 않다.
이들 인자들은 사용자가 내부 커널의 파리미터들을 확실히 조절할 수 있게 한다.
커널은 중요한 메세지를 printk() 함수를 통하여 통신한다. 중요하다고 생 각되어진 메세지는 printk()가 현재 콘솔에 보여주고 또한 디스크에 log하기 위하여 klogd()에게 넘겨준다. 디스크에 로깅정보를 남기는 것 뿐만아니라 콘솔에 중요한 메세지를 출력하는 이유는 메세지가 디스크에 저장되지 않고 읽어 버리게 되는 안 좋은 상황 (디스크가 망가지거나 하는 경우)에 경우가 있기 때문이다. (디스크에 에러가 발생한 경우에는 이 메세지를 디스크에 저장(logging)할 수 없기 때문:역주)무엇이 중요하고 안 중요한 것인지는 console_loglevel 변수에 의하여 설정 된다. 기본적으로 DEBUG 보다 더 중요한 모든 것은 콘솔에 나타난다. (이들 레벨들은 kernel.h 파일 안에 정의 되어 있다.) 부트 인자로서 디버그를 명세하는 것은 콘솔 레벨을 0으로 할 것이다. 그래서 모든 커널 메세지들이 콘솔에 나타난다.
콘솔 loglevel은 일반적으로 실행시나 klogd() 프로그램을 사용하는 옵션을 통하여 설정이 가능하다. 이것이 어떻게 작동하는지 알기를 원하면 당신의 시스템에 설치된 버젼의 메뉴얼 페이지를 점검하라.
커널은 부트시에 일반적으로 `init' 프로그램으로 시작한다. 이것은 당신의 컴퓨터를 설정하는 getty같은 프로그램을 실행 시키거나 `rc' 스크립트나 그와 비슷한 것들을 실행함으로서 가능하다. 커널은 처음에 /sbin/init 를 찾는다. 그 다음엔 /etc/init를 찾는다. 그리고 마지막 수단으로 /bin/sh 를 사용하려 할 것이다. (/etc/rc도 가능) 예를 들면 당신의 init 프로그램 이 중지되고 부트할 수 없어졌면 당신은 부트시에 직접 쉘을 가동시키기 위 하여 간단히 init=/bin/sh 인자만을 사용하면 된다. 그리고 잘못되었던 프 로그램을 제대로 되돌리면 된다.
어떤 I387 코프로세서 칩들은 32 비트 프로텍티드 모드에서 나타나는 버그 가 있다. 예를 들면 초기의 ULSI-387 칩들 일부는 부동소수점을 계산하는 동안 단단히 잠금장치를 하게 되는데 이는 분명히 FRSAV/FRRESTOR 명령어가 가진 버그 때문이었다. `no387' 부트 인자를 사용하는 것은 리눅스가 수치 연산 코프로세서가 있어도 이것을 무시하도록 한다. 물론 수치연산 에뮬레 이션이 가능하도록 컴파일된 커널을 가지고 있어야 한다. 리눅스는 80287을 사용할 수 없기 때문에 이런 경우는 80287 FPU를 사용할 정도로 정말로 오래 된 386 기계를 가지고 있을 때나 가능한 것이다.
I386(과 이후의 이어지는) CPU 군들은 외부 장치(키보드, 모뎀, 디스크, 등 등.)에서 CPU에게 일을 하도록 깨우는 일이 발생하기 전까지는 CPU에게 아무일도 하지 말라는 의미를 가진 `hlt' 명령어를 가지고 있다. 이는 외부 장치가 CPU를 깨울 때 까지는 좀비와 같이 `low-power' 모드로 진입하는 것을 가능케 한다. 초기의 일부 i486DX-100 칩은 이 `hlt' 명령어에 문제가 있었는데 이들은 `hlt' 명령어가 사용된 후에 오퍼레이팅 모드로 되돌아올 수가 없었다. `no-hlt' 명령을 사용하여 되돌아오지 못하는 일이 발생하지 않도록 리눅스가 무한 루프 작동을 하게 한다. 비록 CPU 보증서를 가지고 가능한 교환 점을 찾으라는 조언을 받겠지만 이 `no-hlt' 인자는 문제점이 있는 CPU를 가진 사람들도 리눅스를 사용할 수 있게 하여 준다.
부트시에 이 인자는 Bralille 터미널 사용을 어렵게 하는 스크롤링 기능을 없엔다.
커널 패닉과 같이 잘 일어 나지 않는 사건에 대하여서는(즉, 커널에 의하여 검출되고 커널이 큰 소리로 신음하고 모든 것을 정지 시켜야 할 만큼 충분 히 중요한 내부적 에러) 어떤 사람이 스크린에 패닉 메시지에 대하여 주의 를 주고 기계를 리부트 시켜 줄 때 가지 그 자리에 앉아서 기다리는 것이 대부분일 것이다. 그러나 만약 기계가 동떨어진 장소에서 동작하고 있어서 컴퓨터가 자동적으로 리셋되어 원래대로 되돌아 가기를 바란다면 예를 들어 부트시에 `panic=30' 라는 인자를 주면 커널은 커널이 패닉된후에 30 초후 에 스스로 리부트하게 된다. 이 인자의 0값은 디폴트 설정으로서 커널은 영 원히 기다리게 된다.
이 타임아웃 값은 또한 /proc/sys/kernel/panic sysctl을 통하여 읽기가 가능하다.
커널 개발자들은 커널이 최대의 효율과 성능을 발휘하게 하기 위하여 어떻게 또는 어디서 CPU 사이클 시간을 소비하는 지를 알 수 있게 하는 옵션을 가능 하게 설정할 수 있다. 이 옵션은 부트시에 profile shift count를 설정한다. 대부분 이 값은 2 로 되는데 디폴트로 당신의 커널을 profiling을 가능하게 컴파일 할 수 있다. 그리고 어느 경우에나 /proc/profile 출력 값을 사용할 수 있는 readprofile.c 같은 툴이 필요하다.
이 인자는 컴퓨터가 리셋되었을 때 리부트 형을 제어한다. (대부분 Control-Alt-Delete을 다루는 /sbin/init에 의하여) 커널 버전 2.0 이 후에는 디폴트로 `warm' 리부트하는 대신에 `cold' (예를 들면 전체 리셋으로 메모리를 체크하는 등등.) 리부트한다. warm 리부트 요청했을때 리부트가 안되는 값싸고 고장난 하드웨어에서 작업을 하는 이후로 디폴트 리부트의 형태는 cold부트가 되었다. 에전처럼 작동하기 위해서는(예를 들면 warm 리부트) reboot=w 나 w로 시작하는 어느 단어를 사용해도 된다.
왜 이런 것을 가지고 당신을 괴롭히는가 하고 의문을 가질 수 있다. 보드에 캐쉬 메모리를 가지고 있는 어떤 디스크 콘트롤러는 warm 리부트를 감지한다. 그리고 캐쉬한 데이터를 디스크에 저장한다. cold 부트에서는 이 카드는 리셋되고 캐쉬 카드 메모리에 저장된어 있던 write-back 데이타를 모두 잃어버린다. 그리고 메모리 체크하는데 시간이 많이 걸리고 SCSI BIOS들은 콜드 부트시에 더 많은 초기화 시간이 걸린다. 이들이 warm 리부트를 사용 하는 좋은 이유이다. (디폴트는 리부트 형태는 cold인데 위의 경우에는 warm 부트를 사용하는 것이 좋다는 뜻:역자)
(write-back: cpu가 저장을 명령을 내리면 즉시 디스크에 저장하지 않고 콘 트롤러가 우선 보드상에 캐쉬 메모리에 저장하는 방식, 역자주:-)
이 인자는 커널의 검색으로부터 I/O port 영역을 보호하기 위해 사용한다. 명령 형태는 다음과 같다.
reserve=iobase,extent[,iobase,extent]...어떤 기계에서는 장치 드라이버가 특별한 영역에 있는 장치들을 검사 (auto-probing)하는 것을 막아야 한다. 이는 잘못 설계 되어서 부팅중에 멈추어 버리는 하드웨어이거나(어떤 이더넷 카드처럼) 제대로 인식되지 않는 하드웨어이거나 초기 검색 상태로 변하는 하드웨어이거나 단지 커널의 초기화를 원하지 않는 하드웨어일 경우에 해당한다.
부트 시에 reserve 인자는 검색하지 않을 I/O port 영역을 주소로서 지정해 준다. 영역은 이미 장치가 그 영역(같은 이름으로 예약)을 발견한 것처럼 커널 포트 예약 테이블에 예약한다. 이런 기법은 대부분의 기계에서 필수적인 것은 아니다. 단지 문제가 발생하거나 특별한 경우에만 해당하는 것이다. 지정된 영역의 I/O 포트들은 I/O 공간 영역에서 검색되기에 우선하여 check_region()을 행하는 디바이스 검색으로부터 보호 받는다. NE2000을 다루는 어떤 드라이버의 경우나 그 자신의 장치로 잘못 인식되었을 경우에 사용된다. 제대로 된 디바이스 드라이버는 다른 부트 인자가 명시적으로 검색하라고 명세하지 않는 한 예약된 영역을 검색하지 않는다. 이 말은 예약은 대부분 다른 부트 인자들과 함께 사용된다는 것을 의미한다. 그러므로 지정한 장치를 보호하기위한 예약 영역을 지정한다면 당신은 보통 그 장치를 위하여 명시적인 검색을 지정하여야 한다. 대부분의 드이버들은 명시적인 주소가 주어지지 않는다면 포트 등록 테이블을 무시한다. 예들 들어 부트 라인의 내용이 아래과 같다면
reserve=0x300,32 blah=0x300
보통 부트시간에 지정자들은 11개의 parameter가 한계이다. 그러므로 당신 은 단지 예약된 키워드당 5개의 예약된 영역을 지정할 수 있다. 당신이 특별히 복잡한 요청을 하려한다면 여러개의 예약 지정자들 사용해도 잘 동작 한다.
이 인자는 실제적인 부트 인자는 아니다. 다른 부트 인자들 처럼 커널에 의하여서가 아니라 LILO에 의하여 해석되는 인자이다. 그러나 이는 매우 일 반적으로 사용되기 때문에 여기에서 언급할 만하다. 이는 또한 rdev -v를 사용하거나 vmlinuz 파일에 비디오 모드를 이용하여 설정될 수 있다. 이것은 설정 코드가 실제 리눅스 커널로 부팅하기전에 디폴트 디스플레이 모드를 변경하기 위한 비디오 바이오스를 사용하는 것을 허락한다. 전형적으로 80x50 모드, 132x44 모드 등이 있다. 이 옵션을 사용하는 좋은 방법은 커널을 부팅하기 전에 당신의 비디오 어댑터를 이용하여 사용가능한 여러 비디오 모드들의 리스트들을 보여주는 vga=ask를 사용하는 것이다. 당신이 사용하기 원하는 번호를 리스트에서 고른 다음에 후에는 (다시 부팅할 경우:역주) 이 값을 `ask'의 위치에 적어 넣을 수 있다. (lilo.conf 파일안에) 더 많은 정보를 알고 싶다면 최근에 커널을 가져올 때 같이 온 linux/Documentation/svga.txt 파일을 보기 바란다.
근래의 커널(2.1 버젼이나 그 이상)은 옵션으로서 모드를 변경하고 비디오 모드를 선택할 수 있는 코드를 가지고 있다. 그래서 이런 기능을 원한다면 이 옵션을 가능하게 설정해야한다.