








			      Kernel HOWTO 

		 : Brian Ward bri@blah.math.tu-graz.ac.at

			 : C.W.Huang & Asd L. Chen

	       v0.80, 26 May 1997.  : 25-29 August 1997



				   Abstract

     һݹá롢Լѽ׵ϸָ



1.  

ǷҪĶļ? κ֢״֮һĻǵģ

     ``ѽ wizzo-46.5.6 ˵Ҫ 1.8.193 ĺģȴȻֻ
     1.0.9 棡''

     Ƚµĺ֮һҪһ豸ʽ

     αһ֪

     `` README ľȫ?''

     ԣǲ

     Ҫĳ¸һֱҪΪǰװĵǣ

1.1  ȿ!

ļеĳЩ GNU tarfind Լ xargs Щ Linux
׼ı׼ߣӦò⣮
ļҲ֪ϵͳĵϵͳܹ㲢֪øϿдһ mount
ָϵͳ£ʾĽΪο(һ /etc/fstab
бܹö)
ЩѶҪң·ָµĴŵ°װϵͳԼĲǲ䶯

дʱ``Ʒ''ĺİ汾
2.0.30Ҳ˵ĵĲοǶӦ춸ð汾ģ
Ȼҳƪ¾汾޹أȴϵڷչУ
ȡһµİ汾ɱػһЩͬ
ȻӦòɴ⣬ܻһЩ

ְ汾 Linux ԭʼ룬``Ʒ''  ``չ'' ģ Ʒ汾 1.0.x
ʼĿǰżŷ; 1.0.x ǲƷ1.2.x ǲƷ 2.0.x
ҲǣЩ汾ӦñȽȶڷʱûг(bug)İ汾 չеĺ
(1.1.x, 1.3.x ȵ)


Kernel HOWTO 							      1





Kernel HOWTO 							      2



ΪõģЩҪ¶ҿõģ Ѿˣ

1.2  ·˵

 text ֻĳөĻϵĶһ
ĳɱֱӼĶѡ(㿴Ǵֵûʲ᲻ͬ)
뾭(` ')⾭͵ı:
Ŀھӵ棬ʱһ `.'
Ϊ˵ϰ߽ŷ森
ʹóʶ(ҵǣӵд``ʶ''ϰʽ)Ҳ֪ӦȽȥܶǣ
ڴҽŷͷ仰˵ҽҪ ``make config'' ʱ
һд `make config' `make config.'


2.  Ҫ

2.1  ĵʲ?

 Unix ϵͳУĳʽӲһٲߣ
ȣΪִеĳʽ()
ȷǶܹƽ(ƽԸ)ķԴ
⣬ṩһõĽøոᵽĳʽ͸Ӳ幵ͨ

ʵĹ⻹ҪһЩЩĹҪ֪ģ

2.2  ΪʲҪº?

Ƚµĺһ˵ṩǿֵֹӲ幵ͨ(Ҳ˵ӵи豸ʽ)
ܹиõгִ̹ܹеıȾɵİ汾ЧʣǿܱȾɵİ汾ĸȶ˾ɰһЩ
󲿷ֵΪҪЩµ豸ʽԼĲݶºģ

2.3  µĺ֧ԮЩӲ?

뿴 Hardware-HOWTO ļ һǣԲ鿴 Linux ԭʼʽе `con
fig.in'  ߾ڵȥ `make config' ʱҳ `make config'
㿴׼ĺԭʼʽ֧ԮӲ壬Ⲣ Linux
֧ԮȫӲ壻 ͨ豸ʽ( PCMCIA
ʽԼĳЩŴʽ)ǸάеĿģ飮

2.4  ҪǸ汾 gcc  libc ?

Linus Ľ Linux ԭʼʽ README ͷ
ûиð汾Ǹµİ汾° gcc ӦûǷҪ libc
İ汾 ʲ⣬ֻҪ˵Ϳˣ

2.5  ʲǿģ?

Ǻĵһ(ͨ豸ʽ)ǲûб뵽ȥ
Ǳֱ룬ȻἸκʱǲеĺĻȡ
ıԣѾΪһӶȥĽϺ÷ʽ
ೣõ豸ʽ PCMCIA ʽԼ QIC-80/40
Ŵʽǿģ飮










Kernel HOWTO 							      3



2.6  ҪĴŵռ?

ϵͳйأȣѹ Linux ԭʼʽ 2.0.10 ʱԼռ 6
MB վ̨ڽѹԻᱣһݣѹ⽫ռԼ 24 MB
⻹ȫ  㽫ҪĴŵռʵʱЩ
öٶĺͷȥйأ磬ĳϣ·3Com
3C503 ʽ ֵϵͳȫҪ 30 MBѹ
linux  ԭʼʽ룬ôҪõ 36MB 
һϵͳϣҪ֧Ԯ·豸(ȻҪ֧Ԯ·)ЧԵռ䣮
Уһ°汾ĺļǱȾɰ汾ռĿռ䣮
ԣһ˵Ӳ豸Ļȷ㹻Ӳռã
(Խյļ۸˵춴ռҲܲһ̨ŵ)

2.7  Ҫõʱ?

Դ󲿷ݵ˶ԣ``ܾ''Ĵٶж죬ԼӵеļжٽǾʱҪأ
ǣڰѶٶõͷȥⷽ滹ǿŬ һ̨ 16 MB
 486DX4-100 ϣһֵϵͳ֧Ԯ·ԼЧʽ
1.2 Ŀڶʮɣ Ƶãһ̨ 386DX/40(8 MB
)ϴԼҪҪ 1.5 Сʱ
ڱʱͨһЩõĽȥһ㿧ȣӣ֯Щëߣκϲ£
ĻĺĻҲų̂ϿĻ


3.  кĵ?

3.1  ȡԭʼʽ

Ծ ftp վ ftp.funet.fi  /pub/Linux/PEOPLE/Linus  MIR
ROR վȡã([ע] ̨ɴ ftp.edu.tw ȡã) һԱǳ linux-
x.y.z.tar.gz Ϊе x.y.z ǰ汾ţ
µ(õ?)汾Լ޲һǷ `v1.1' Լ `v1.2' Ŀ¼£
µİ汾ͨ``԰''Ҳ˵ beta  alpha
еĻӦͣҪķа汾ϣ

ǿҽȥ mirror  ftp ڵ㣬Ҫֱӵ ftp.funet.fi ȥ!  һЩ
mirrors ԼڵļҪб:

     USA:	  sunsite.unc.edu:/pub/Linux/kernel
     USA:	  tsx-11.mit.edu:/pub/linux/sources/system
     UK:	  sunsite.doc.ic.ac.uk:/pub/unix/Linux/sunsite.unc-mirror/kernel
     Austria:	  ftp.univie.ac.at:/systems/linux/sunsite/kernel
     Germany:	  ftp.Germany.EU.net:/pub/os/Linux/Local.EUnet/Kernel/Linus
     Germany:	  sunsite.informatik.rwth-aachen.de:/pub/Linux/PEOPLE/Linus
     France:	  ftp.ibp.fr:/pub/linux/sources/system/patches
     Australia:   sunsite.anu.edu.au:/pub/linux/kernel

һ˵sunsite.unc.edu  mirror վǺܺҵģ  /pub/Linux/MIRRORS
֪ mirror ڵ㣮 ûа취 ftp и linux  BBS
ϵͳбᶨڿ comp.os.linux.announce ϣǱȥһ£

Ѱһ Linux Ѷ׼ȥ 










Kernel HOWTO 							      4



3.2  ⿪ԭʼʽİװ

ȷ`root'ǩ룬Ȼ cd  /usr/src 㰲װ Linux
ʱѾװ˺ԭʼʽ룬Ŀ¼ӦѾһ `linux'
Ŀ¼ Ǿɰ linux
ԭʼʽ룮㻹дŵռҪðȫһ㣬ҪĿ¼ģ
иǸĿǰʹõĺİ汾޸Ŀ¼ƣ `uname -r'
ָĿǰĺİ汾 ԣ `uname -r' ʾ
`1.0.9'Ϳ԰ `linux' ( `mv')Ϊ `linux-1.0.9'
Ǹ³ç͵ˣǾֱӰĿ¼
һֻҪȷڽ⿪ȫԭʼʽ֮ǰ/usr/src Ŀ¼û
`linux' Ŀ¼Ͷˣ

 /usr/src Ŀ¼£ `tar zxpvf linux-x.y.z.tar.gz' ⿪ԭʼʽİװ
(õ .tar ĵûм .gzǾ `tar xpvf linux-
x.y.z.tar') 㽫ῴԭʼʽݷŶᣬ /usr/src
һµ `linux' Ŀ¼ cd  linux Ŀ¼Ȼ鿴 README 
ӦûһαΪ `INSTALLING the kernel' Ƶ֣
ʵĻ˵ָʾ  еķᣬƳʱ .o
ȵȵĹ

3.3  ú

ע⣺ⲿЩظ Linus  README еӦ½ڻ޶

 /usr/src/linux ִ `make config' ʼһָ壬
ָ⣮Ҫ bash Ҫȷ bash  /bin/bash/bin/sh
 $BASH

 `make config' ķʽܻøʹã Щִ X Window
װ Tk Ļ `make xconfig' `make menuconfig'
ǸЩװ (n)curses ϲģʽѡõģ ЩиԵĺô:
ù㲻Сķ˴Լ򵥵ػȥ

ڸ׼ûشЩ⣬ͨ `y'  `n' Ϳˣ
豸ʽͨһ `m' ѡ ʾ``ģ(mod
ule)''ʾ˵ϵͳֱӷŽΪһģ飮
һȤ˵Ǳʾ``maybe''һЩԻǲҪѡڴ˼˵
``ѡ (section 10., page 17)''һڶеļ˵

 2.0.x İ汾һ `?' ѡṩòļ
ЩѶӦöµģ

3.3.1  Kernel math emulation (ĵѧģ)

ûѧ㴦(ֻһ̨ 386  486SX)
Ҫش `y'Ѿѧ㴦ȴش `y' Ҳ̫ 
linux ǻȥʹԵĵģʽ
ΨһӰǱĺı(õļ) ˵ѧ˼ģ;
Ȼͱ̫ϵӦע X Window ϵͳЧʻкܴӰ죮

3.3.2  Normal (MFM/RLL) disk and IDE disk/cdrom support (׼Ӳ֧Ԯ)

඼ûش `y'˼ǺĽ֧Ԯ׼ PC Ӳ








Kernel HOWTO 							      5



ʹõ IDE Ӳⲻ SCSI 豸֧Ԯ; ⽫趨

Ȼᱻʵ ``old disk-only''  ``new IDE'' ʽ£
Ӧѡһ; ҪĲǾɵʽֻ֧Ԯһŵ
µʽ֧Ԯڶ漰 IDE/ATAPI µʽȾɵĴԼ 4K
Ӧ``''Ҳ˵˿ܰЩ֮⣬ӦûĴŵЧʣرнµ
EIDE ӲĻ

3.3.3  Networking support (·֧Ԯ)

ԭϣ·Ʃ˵ Internet ߣ㽫ʹ
SLIPPPPterm ʽӵ Internet ϵĻش `y'
ȻĳЩ׼( X Window
ϵͳ)Ҫ·֧ԮʹĻӵ·ϣҲӦûش `y'
ȻᣬᱻʵǷҪ֧Ԯ TCP/IP ·㲻ʮȷͻش `y'

3.3.4  Limit memory to low 16MB (Ƽ 16 MB)

ܻһЩ 386 DMA ޷ȷضַ 16 MB ϵļλַ
Ļպ()ʱҲֻûش y ˣ

3.3.5  System V IPC

һ IPC (гͨѶInterprocess Communication) Ķ Perl еע⣮
Ⲣ֣һЩ Perl
ʽг֮以๵ͨ׼( DOOM)һ
˳ȫ˽ʲᣬȻñش n

3.3.6  Processor type (386, 486, Pentium, PPro)     (΢)

(ڽϾɰ汾ĺΪ: Use -m486 flag for 486-specific optimizationsʹ
-m486  486 ѻ)

չأǶһر΢ĳѻ;
ԿƬܵúܺãܻȽϴЩ
ڽ°汾ĺϣѾˣӦȷػشҪ΢࣮
``386'' ĺĿеĻϹ

3.3.7  SCSI support (SCSI ֧Ԯ)

 SCSI 豸ͻش `y'
ʾҪһѶǷҪ֧Ԯŵʹõһ
SCSI 濨 ⲿ SCSI-HOWTOиϸ˵

3.3.8  Network device support (·豸֧Ԯ)

·Ҫʹ SLIPPPPǲв濨Ǿͻش `y'
ʾʹõһ·ҪʹһͨѶЭ

3.3.9  Filesystems (ϵͳ)

⽫ʾҪشҪ֧Ԯĵϵͳ࣬У

Standard (minix)  µ׼ٽ minix








Kernel HOWTO 							      6



ϵͳҺܶ˲ʹǰںȻǸ⣮
ĳЩ``ȴƬ''ʽõȻƬ minix ϵͳΪ
minix ϵͳ춴Ƭ⣮

Extended fs 
䵵ϵͳĵһ棬ѾʹãʹõʱǣҪͻ֪ģûɣͲҪ

Second extended 
·е׼㷺õĵϵͳܻһ֣Աش
`y'

xiafs filesystem 
ϵͳһȺձ飬дļʱѾ֪κʹˣ

msdos  Ҫ linux ʹӲе MS-DOS ָ뽫 MS-DOS
ʽƬҽĻش `y'

ums-dos  ֵϵͳʹ MS-DOS ϵͳӵи Unix
ԣǳȵȣЩʹ MS-DOS ()Ǻã

/proc  һĶ(Ҳ޳ܵشӱʵ͵)
ӲָκζǺ֮ĵϵͳ森򹤾(
`ps')õ ʱ `cat /proc/meminfo'  `cat /proc/devices'
ĳЩ shell (ر rc) ʹ /proc/self/fd (ϵͳ /dev/fd)
붯 㼸Ӧûش `y'; Ҫ Linux ߶ģ

NFS  ·¶Ҫ NFS ʹĵϵͳش `y'

ISO9660  󲿷ֵĹƬʹϵͳй Linux
ʹãش `y'

OS/2 HPFS  ڱдļʱϵͳֻ֧Ԯ OS/2 HPFS Ķȡ

System V and Coherent  Ϊ System V Լ Coherent
ϵͳķָ(һ PC ϵ Unix ϵͳ)

3.3.9.1  Ҳ֪ҪЩϵͳ!

ðɣ `mount'

	 blah# mount
	 /dev/hda1 on / type ext2 (defaults)
	 /dev/hda3 on /usr type ext2 (defaults)
	 none on /proc type proc (defaults)
	 /dev/fd0 on /mnt type msdos (defaults)

ϸÿһУ `type' Ǹ־ǵϵͳĸʽ Уҵ /
 /usr ָ second extended ʽ ʹ /proc ҹһ msdos
(bleah) ΪϵͳʽĴƬ

ʹ /proc `cat /proc/filesystems'
һĿǰʹõĺ֧Ԯĵϵͳб

òʹãҪĵϵͳʹԵӷ;








Kernel HOWTO 							      7



μģһڵ˵ԱԼ`` (section 7., page
11)''һ˵Ϊӷ׵ĺĲã

3.3.10	Character devices (Ԫ豸)

㽫ᷢ豸ƣ趨ӡŻPS/2
(󲿷ֱʼ͵ʹڽ PS/2 )
ԼһЩŴʽԼ``Ԫ''豸кʵѡʱش `y'

ע⣺Selection ʽʹ X window
֮ʹûڸ̨Ķ
длĻĺܰΪ X window ֮Ĺͨã
ĻҪ㼼ˣSelection
һѡѾǱ׼ˣ

ע: Selection Ѿʱˣµĳʽ ``gpm''
£תЭػȡ

3.3.11	Sound card (Ч)

 biff ʽеĻش `y'
Ȼһ»һóʽϸѯйЧ⣮ (ע:
Ƿװ汾ʽʱԻش `n'
Լļ岢ֻѡҪģ) Чǿҽ鿴һ Sound-
HOWTO ֪ϸڣ

3.3.12	ѡ

ûнеѡгΪЩı䣬൱(  3Com 3C509
support Ǳر̫·ʽ)
һʮѡб(Ƿŵ Configure ָķ)
URL ҵ( Axel Boldt axel@uni-paderborn.de ռ):




 FTP վ:




 x.yz ǰ汾룮

ĺ(2.0.x )ѱϵԭʼʽУ

3.3.13	Kernel hacking

>Ǵ Linus  README ժ¼ģ

``kernel hacking'' õϸͨһǸĺ(ִ)
ҿΪһЩʽóɺܻԾȥжһЩĳʽԱҳ⣨
kmalloc() 
ʹúıñȽϲȶҪһ``Ʒ''ĻӦûش
`n'








Kernel HOWTO 							      8



3.4  ? (The Makefile)

 make config ֮ᣬӦûһѶϢѾúˣ
ԼҪȥ``check the top-level Makefile for additional configuration''
ȵѶϢ

Բ鿴һ MakefileӦòظıǿ޷
һºɣҲ `rdev' ָıеѡ


4.  

4.1  ȷ

õִָʱȥ `make dep' Լ `clean'
Ҫִ`make dep'⽫ȷеϵ include files û⣮
ĵĺỨ̫ʱģ
ᣬڽϾɰ汾ĺ㻹Ӧ `make clean'
ıĿĵԼؽһ֮ǰҪ裮

4.2  ʱ

 `make dep'  `make clean' ֮ᣬڿִ `make zImage' 
`make zdisk' (ⲿҪʱ) `make zImage' ģ
arch/i386/boot һ `zImage' ĵµѹģ `make
zdisk' ҲһѺķŵϣĴƬȥֻҪŴƬ
``A:''
`zdisk'춲ºĺܷ㣻()ֻҪѴƬõþɵĺɣ
ɾ˺ĻʲģҲǸ취
һ̨ŵ㵹һ̨ȥʱҲװµϵͳ(Щ֮⻹и;)

нĺĶѹģи `z'
ǰ森ѹĺִеʱԶԼѹ

4.3  ``make''Ķ

`make mrproper' 㷺 `' 
ʱǱģܻϣÿ޲ʱִ `make
mrproper' ὫõɱΪҪĻӦһ(
.config)

`make oldconfig' ᳢һɵõĺģΪִ `make con
fig'
㻹δĻûоɵõܲΪ㼸ȷԤã

μģһڶ `make modules' ˵

4.4  װ

Ѿһܹϣº֮ᣬǰװʱˣ
󲿷ݵʹ LILO (Linux Loader) £ `make zlilo'
ᰲװģȻִ LILOʹп׼ ֻ LILO
ѾַʽúõʱſԣΪ /vmlinuz  lilo  /sbin
£ LILO (/etc/lilo.conf)һ£








Kernel HOWTO 							      9



һ棬Ҫֱʹ
LILOһ൱װװ壬Ȼõʹţ
鿴õ(Ǿɰ /etc/lilo/config °
/etc/lilo.conf)Щʲᣮ ӵĶ

	 image = /vmlinuz
	  label = Linux
	  root = /dev/hda1
	  ...

ȣ`image =' 趨ΪѾװĺģ󲿷ݵƺ /vmlinuz `label'
Ǹ lilo ҪǸĻҵϵͳ  `root'
رҵϵͳĸĿ¼ / һݾɵĺģȻὫ zImage
ȥ(磬 `/vmlinuz' Ļ `cp zImage /vmlinuz')
Ȼᣬִ `lilo'ڽϾɵϵͳϣִܱ /etc/lilo/install
 /etc/lilo/lilo -C /etc/lilo/config

֪й LILO ã㲢û LILO ҪװĻ
ϲ ftp ڵȡµİ汾Ȼ˵£

ҪܹӲľɺ֮һĻ(һºĳ״±Լķ)
 LILO õе() `image = xxx' ׶ˣ Ȼ `image =
xxx' ĳ `image = yyy' е `yyy' 㱸ݾɺ浵֣ 
`label = zzz' ĳ `label = linux-backup' Ȼִ lilo
ܵҪһ `delay=x'е x ʮ֮һΪλʱ䣬 Ǹ
LILO ǰȵһ£жִ( shift )
Ȼݵӳ֮ label (ڷĳЩ˲)


5.  ޲

5.1  ʹ޲

ĵС޲ķʽУ磬İ汾 1.1.45 
ע⵽һ `patch46.gz' 
Խʹ޲汾 1.1.46
ҲҪȱԭʼʽ(`make clean' Ȼ `cd /usr/src; tar zcvf old-
tree.tar.gz linux' Ϊһ tar
ѹԭʼʽ䵵ܹ)

ڽӣѾȡ `patch46.gz'  /usr/src £ cd
 /usr/src Ȼִ `zcat patch46.gz | patch -p0'
(ѹ޲ִ `patch -p0 < patch46')
㽫ῴණŶ(ĵĺĻ)޲ʽԼǷɹ
ͨ̿޷ϸĶ޷ȷûгɹִУ
ܻ patch ָм -s ѡ patch ʽֻѶϢͺã
(Ͳõ``!
ҵĵĳЩı!''ĸоԸ)
͵ҿһЩܲ˳£cd  /usr/src/linux ѰβΪ
.rej ĵ ĳЩ汾
patchȽϾɵİ汾ǿڱȽڵĵϵͳϱģЩûгɹĲ¼ڵ
# ĵ  `find' ң

	 find .  -name '*.rej' -print








Kernel HOWTO 							     10



ὫĿ¼Ŀ¼о .rej βĵӡ׼

һȷĻִеڸĽ۵ `make clean'`config' Լ
`dep'

 patch ָ⻹һЩѡǰpatch -s
Ƴ˴ѶϢ Ѻԭʼʽ /usr/src/linux
ĵطڸĿ¼ patch -p1 ҲǬִ޲  patch
ѡֲ(man page)ﶼкϸ

5.2  д

(ע: ᵽĴ󲿷ָɰĺ)

ͨǵ patch ޸һ `config.in'
ĵʱԾ
Ϊ޸һЩѡĻѾСĵעˣǿ˻ڽϾɵİ汾⣮
ҪĻ鿴 config.in.rej ЩʲѶϢ
޸ĹĲ˵ÿһпʼĵط `+'  `-'
鿴бǵĸУȻǵ `y'  `n' ڱ༭ config.in
Ȼʵĵ  `y' ĳ `n' Լ `n' ĳ `y'ִ

	 patch -p0 < config.in.rej


ɹĻ(ûд)ͿԼĹ  config.in.rej
ǻԿ

Ȼ⣬㰲װһ𻵵޲  patch ʾ
`previously applied patch detected: Assume -R?'
ʹһЩĿǰİ汾Ż͵޲; ش
`y'᳢Խĳʽ뽵Ҽһʧ;
ˣҪȡһµԭʼʽ룮

Ҫԭ޲ǰ״̬Ļԭȵ޲ִ `patch -R'

޲ʧܵʱõİ취ǴһǬԭʼʽ( linux-
x.x.x.tar.gz ֮һ)ʼִУ

5.3   .orig 

ֻҪ޲ᣬЩ .orig ĵῪʼѻ 磬ҵһ 1.1.51
ĳʽһɨ 1.1.48 棨ǰɣ ɾЩ .orig
ʡĴŵռ䣮

	 find .  -name '*.orig' -exec rm -f {} ';'


£ĳЩ汾 patch  ~  .orig

õĵİ취ɿЩ .orig  GNU  xargs:

	 find .  -name '*.orig' | xargs rm









Kernel HOWTO 							     11



ǸȫЩµķ:

	 find . -name '*.orig' -print0 | xargs --null rm --

5.4  ޲

һЩ Linus е޲(ҽ֮Ϊ``Ǳ׼'')
ʹǣLinus ޲ܻ޷ȷִУ
㲻ǵýǻԭǵ˶ȥ޸ԭʼʽ޲ԳѧͨǺᣬ
㲻ȥ޸ԭʼʽ(ͨ)ʹ Linus
޲֮ǰȻԭЩǱ׼޲°װµĳʽ룮
ȻǱ׼޲ܲãܵĻҪͼʹþɵĺģ
޸޲ʹãҪ͵ȴ()°Ǳ׼޲֣

Ǳ׼޲жձ? пǣʹ Bill Paul
Ĳ˸޲޸ҵ̨Ϊ˸α(޲Ϊ°Ķ)
춴󲿷ݽµ豸ʽѾչɿģʽǱ׼޲Ҫ𽥽ͣ


6.  ӵ׼

 Linux ԭʼʽ뱾沢û˵ԣ
ЩһǾãгһձģ

6.1  kbd

Linux
Ŀ̨ܳԾɫлͣ¶ӳļ̣лʾģʽ(°ĺ)ȵȣ
kbd
ܹʹЩ֧ԮʽһѵԼκμ̵һЩ̶ӳ
ڷúԭʼͬһվ̨ҵ

6.2  util-linux

Rik Faith (faith@cs.unc.edu) ռһ Linux Ĺߣ util-linux
 Nicolai Langfeldt (util-linux@math.uio.no) ά ɴ sun
site.unc.edu  /pub/Linux/system/misc ȡã  settermrdev Լ
ctrlaltdel йصĹߣ  Rik ˵ģҪ붼Ͱװȥ!
㲻Ҫװ׼еÿһĻܻص⣮

6.3  hdparm

ܶһһ޲֧Ԯʽ
Щ޲ҵУѻԼӲ֧ԮʽһǷֿеģ

6.4  gpm

gpm  general purpose mouse ļд
ʽʹòͬĻ̨֮ԼһЩ飮


7.  һЩ










Kernel HOWTO 							     12



7.1  make clean

ºĻһЩĺֵ£пΪڱǰ make
clean
֢״ĺĲرֵ⣬һֱִЧʵȵȲһ㣬κ£
ҲҪȷ make dep

7.2  ޴ĺ

ĺռ˴ļ壬ǺܴܴҲǼʹȫµ
786DX6/440 ȴԶ벻Ļ
пΪ̫಻ҪĶ(豸ʽϵͳȵ)
㲻õĳЩǾͲҪΪĻռü壮
ĹӷԵ֢״Ƿŵ֮쳣Ͻ
㲻ľ Fujitsu Eagles
Ӳһĺã

ҳȫȻ /proc/meminfo  ``total mem''
 `free' ָõļ֪ʹ˶ټ壮 Ҳִ `dmesg'
(ҲԲ鿴ĵļ¼һڻϵͳ)һУ

Memory: 15124k/16384k available (552k kernel code, 384k reserved, 324k data)

ҵ 386 (ú)ʾ£

Memory: 7000k/8192k available (496k kernel code, 384k reserved, 312k data)

`'õһͺĵϵͳȴ `make bzimage'
ܱ밲װ° LILO £

7.3  ޷

ûб룬и޲ʧˣĳطõԭʼʽ⣮
ҲпΪ gcc 汾ȷ򻵵(纬뵵д) ȷ Linus 
README ķᶼȷ
һ˵ûܱ룬ʾĳЩطصĴ°װĳЩ߿Ǳģ

߿ ELF  (gcc 2.6.3 )  1.2.x ĺģ
õһѵ xxxx undefined ѶϢ⣮
ķ󲿷ݶܼ򵥣⼸мӵ arch/i386/Makefile Ķ:
arch/i386/Makefile:

     AS=/usr/i486-linuxaout/bin/as
     LD=/usr/i486-linuxaout/bin/ld -m i386linux
     CC=gcc -b i486-linuxaout -D__KERNEL__ -I$(TOPDIR)/include


Ȼִ make dep  zImage

£gcc ܻӲѶϢ ``xxx exited with sig
nal 15'' ֮ģһῴ֣
ұģҲһ - һЩ cache
壬ʱص дĻ°װ
gcc㽫ⲿ cache صһЩ RAM








Kernel HOWTO 							     13



֮ľͱɹˣֻÿɣ

Ӳⳣʹţⲻҷģ һ FAQ --
	ҵ

7.4  °ĺƺ

ûִ LILO ûȷһǳõ
 `boot = /dev/hda1'  `boot = /dev/hda'
(ڸտʼʱǺᣬһһõõӦòҪȥȥı)

7.5  ִ LILOϵͳ

ޣõİ취ôƬ׼һſĴƬ(`make
zdisk'ʱĴƬ) ֪ĸĿ¼(/)ڵķָԼĸʽ(second
extended, minix ȵ) УҲ֪ /usr/src/linux
ԭʼʽǸָĸʽԼһǶ

У Ŀ¼ /  /dev/hda1 /usr/src/linux ķָ
/dev/hda3һ /usr £ Ƕ second extended
ϵͳĺӳ zImage  /usr/src/linux/arch/i386/boot
£

ģһĺӳ zIm
ageܿ԰µĴƬϣ
һһõıͨ취(ϵͳɵй)˵֮۵

ȣ boot/root ƬǼȴƬȻὫпĵķָ

	 mkdir /mnt
	 mount -t ext2 /dev/hda3 /mnt

 mkdir ָʾĿ¼ѾڣԵ ڣcd
пĵĵطע:

     /mnt + /usr/src/linux/arch/i386/boot - /usr = /mnt/src/linux/arch/i386/boot


һŸʽĴƬŽ ``A:'' ŵ(ȷ boot/root Ƭ!)
ӳ㵹ƬȥȻĸĿ¼ָ:

	 cd /mnt/src/linux/arch/i386/boot
	 dd if=zImage of=/dev/fd0
	 rdev /dev/fd0 /dev/hda1

cd Ŀ¼ / ж±׼ /usr ָ:

	 cd /
	 umount /mnt

ӦÿԴŴƬĿˣο᲻Ҫִ lilo
(ʲ)!

ͬǰģһֺձıͨʽ








Kernel HOWTO 							     14



һĺڷ / ( /vmlinuz)Ҳʹ
ٶеһҵĺӳ
/vmlinuzֻҪЩı:  /dev/hda3 ĳ /dev/hda1 (/ ָ)
 /mnt/src/linux ĳ /mntҰ if=zImage ĳ if=vmlinuz
ǰйעƵ /mnt/src/linux/arch/i386/boot ǸֿԺԣ

 LILO ʹڴӲ( 1024 )ܻ⣮ μ LILO mini-HOWTO
ļ˵

7.6  ϵͳʾ `warning: bdflush not running'

һ൱ص⣮ 1.0 ĺĿʼ( 1994
¶ʮ) иԵظµϵͳĳʽ `update'
ȡˣ ȡ `bdflush'
ԭʼʽ(ӦÿԴȡúĵĵطҵ)
Ȼ(ܻϣھɰĺִб뼰װ)  `update'
ΪװԼؿᣬºӦûã

7.7  ϵͳ˵ undefined symbols ޷

һ ELF (gcc 2.6.3 ) 1.2.x ()ԭʼ룮
һķǽ⼸мӵ arch/i386/Makefile Ķ:

     AS=/usr/i486-linuxaout/bin/as
     LD=/usr/i486-linuxaout/bin/ld -m i386linux
     CC=gcc -b i486-linuxaout -D__KERNEL__ -I$(TOPDIR)/include

 a.out ʽ 1.2.x ģ

7.8  ޷ҵ IDE/ATAPI CD-ROM 

֣һ޷ǵ ATAPI Ϊ̫׳

Ĺһر IDE ϵΨһ豸뱻Ϊ ``master''  ``sin
gle'' Ĵ

Creative Labs ڽ IDE ŵЧ
Ȼ⽫һȤ⣬ȻЩֻһ IDE
棬ڽ IDE (ͨ IRQ15)
һİ취ǽԿĽɵ IDE (˸ IRQ11)

 1.2.x  Linux ϻ⣬Ϊ֧Ԯ IDE ( 1.3.x
ϵѿʼ֧ԮڷչУҲԶ)
Ҫ⣬һЩѡ

Ѿеڶ IDE ûû豸Ļлᣮ 
ATAPI
ЧŵڶϣȻԹصЧϵĽ棬Ϳʡһ
IRQ

ûеڶ IDE 棬ЧĽ(ЧЧ)ڶõ
IRQ15Ӧûᶯ

ΪĳЩɷǵʹ``''治ɣ⣬ ȡ 1.3.x








Kernel HOWTO 							     15



ĺ( 1.3.57 )Ķ drivers/block/README.ide 
иѶ˵

7.9  ϵͳʾ obsolete routing requests ѶϢ

ȡ° route ʽ route йصĳʽ /usr/include/linux/route.h
( /usr/src/linux µһ)Ѿ޸ģ

7.10  ǽ޷ 1.2.0 Ϲ

 1.2.1 森

7.11  ``Not a compressed kernel Image file'' (ѹӳ)

Ҫ /usr/src/linux  vmlinux Ϊӳ;
[..]/arch/i386/boot/zImage ȷģ

7.12   1.3.x ڿ̨ն˻ϵ

̨趨 /etc/termcap е dumb Ϊ linux ܻһ ter
minfo

7.13  ƺ޷붫

Linux ĺԭʼʽĺ뵵( .h βĵ)Ϊ׼
/usr/include ο ַͨο( xyzzy.h 
/usr/include/linux ):

	 #include <linux/xyzzy.h>


£ /usr/include »һ linux ᵽĺԭʼ
include/linux Ŀ¼(һϵͳ /usr/src/linux/include/linux)
ûˣָĵط󲿷ݵĶ޷룮
úԭʼռ̫ĿռȻ⣮
һܵĴĵȨ;  root Ԥ費ʹ߿ĵ
⿪ԭʼʱûм p (ģʽ)ѡʹҲ޷ʹ C
 Ȼ chmod ָ׵ķ½⿪뵵
һʼ⿪ԭʼͬһ:

	 blah# tar zxvpf linux.x.y.z.tar.gz linux/include


ע:  /usr/src/linux ᲻ڵĻ ``make config'' ؽ֮

7.14  

һЩָӺṩ:

     echo 4096 > /proc/sys/kernel/file-max
     echo 12288 > /proc/sys/kernel/inode-max
     echo 300 400 500 > /proc/sys/vm/freepages










Kernel HOWTO 							     16



8.   2.0.x ע

 2.0.x ڰװĸı䣮 ԭʼʽ Documentation/Changes
 2.0.x Ӧ֪Ѷ ܻҪһЩؼ׼
gcclibc  SysVInitıһЩϵͳҲţ


9.  ģ

ģܹʡ壬Һ趨
ģġΧѾ˵ϵͳ̫·ʽŴӡʽи࣮

9.1  װģ鹤

ģ鹤߿Դȡúĵĵطҵ modules-x.y.z.tar.gz;
ѡĿǰİ汾ȻԵ͵ӽ x.y.z  `tar zxvf modules-
x.y.z.tar.gz' ⿪ cd Ŀ¼(modules-x.y.z)һ
READMEȻᰴհװָʾִ (ܼͨ򵥣 make install ֮) Ȼ
/sbin ӦûЩʽ insmod, rmmod, ksyms, lsmod, genksyms, modprobe, Լ
depmod Ļ insmod ġʽ``hw''Щ; μ
INSTALL ϸ˵

insmod ָһģеĺģģͨ .o Ϊβ;
ᵽġʽͽ drv_hello.oҪģ飬 `insmod
drv_hello.o' Ҫ˽Ŀǰʹõģ飬 lsmod ָ:

	 blah# lsmod
	 Module:	#pages:  Used by:
	 drv_hello	    1


`drv_hello' ģƣһҳ (4K)
ļ壬Ŀǰûĺģ ҪƳģ飬 `rmmod
drv_hello'ע rmmod Ҫģƣǵ;  lsmod
ָгģŹߵֲж˵

9.2  ķеģ

 2.0.30 УеĶԱɿģ飮
Ҫʹÿģ飬ȷûнõĺҲ˵ `make con
fig' ʱǻش y ºĲȻᣬٴ cd 
/usr/src/linuxȻִ `make modules'
⽫δָںģ飬ᵽ /usr/src/linux/modules
ֱɴĿ¼ʹãִ `make modules_install' 䰲װ /lib/mod
ules/x.y.z x.y.z Ǻİ汾

Դϵͳرܲʹ minix  MS-DOS ĵϵͳ
磬һ MS-DOS Ƭһ insmod /usr/src/linux/mod
ules/msdos.oʹ rmmod msdos ָȥ
˹̴ԼԽʡ 50K ҵļ壮 minix
ϵͳһҪעľǣ
ΪҪʹ``ȴƬ''ӦֱӽõУ










Kernel HOWTO 							     17



10.  ѡ

ڰһδгĺѡ( make config ʱ)
󲿷ݵ豸ʽδг

10.1  General setup (һ趨)

Normal floppy disk support (һ֧Ԯ) -  ܻ뿴һ
drivers/block/README.fd ;  IBM Thinkpad ʹ˵رҪ

XT harddisk support (XT Ӳ֧Ԯ) - ϹŶİλԪ XT Ļ

PCI bios support (PCI bios ֧Ԯ) -  PCIܻ򿪴ѡ
ҪСģĳЩɵ PCI ڴѡ¿ܻᵱ PCI  Linux
ʹõѶ PCI-HOWTO ҵ

Kernel support for ELF binaries (֧Ԯ ELF ִе) - ELF
һµĶλִе Linux ƺ˷ǰܻҪ

Set version information on all symbols for modules -
ڹȥģÿºһ𱻱룮 ش yʹòͬ
patchlevel ±ģ飮 μ README.modules еϸ˵

10.2  Networking options (·ѡ)

·ѡ NET-3-HOWTO ( NET-ʲ-HOWTO)


11.  ͼ

11.1  ص make  patch ָ

Ҫ¼Щ `make'  `patch' ָЩʲᣬ
԰өĻصһȥȣҪ֪õһ shell `grep
root /etc/passwd' ȻѰҿ `/bin/csh' һĶ

ʹõ sh  bash

	 (command) 2>&1 | tee (output file)


һ (command) ŵ `(output file)' ȥ

 csh  tcsh

	 (command) |& tee (output file)


﷨

 rc (ע⣺Ӧò rc)﷨

	 (command) >[2=1] | tee (output file)









Kernel HOWTO 							     18



11.2  ʽĺİװ

ʹƬڲɺĵ²ºĵķ  Unix
ϵͳLILO дκεطĵ (дӲ 500 MB
ģο LILO ļ˵⣮) ˣ LILO
õ

	 image = /usr/src/linux/arch/i386/boot/zImage
	     label = new_kernel


ڲɺ /vmlinuz ѡִ±ĺ(Ȼִ lilo
)  LILO º򵥵ķʱ shift (өĻֻ
LILO ʱ) һʾţʱԼ `new_kernel' ºģ

ϵͳͬʱֲͬĺԭʼʽ(СģõӲռ)
ͨķǽΪ /usr/src/linux-x.y.z x.y.z Ǻİ汾
Ȼ÷``ѡ''һԭʼ; 磬 `ln -sf linux-1.2.2
/usr/src/linux'  1.2.2 ΪĿǰĺ ڽ֮ǰȷ ln
ָһһĿ¼(ɵķûйϵ);
ܲԤڵģ

11.3  ĸ

Russell Nelson (nelson@crynwr.com) ܽ°ĵĸı䣮
ЩǼ̵ģǰӦȿһ£Դ FTP վ ftp.emlist.com
 pub/kchanges


12.  õ HOWTOs

     Sound-HOWTO: Ч빤

     SCSI-HOWTO: й SCSI ƿ豸Ѷ

     NET-2-HOWTO: ·

     PPP-HOWTO: ر PPP ·

     PCMCIA-HOWTO: ʼ͵Եʽ

     ELF-HOWTO: ʲ ELFתȡ

     Hardware-HOWTO: ֧ԮӲĸҪ

     Module-HOWTO: ģйص

     Kerneld mini-HOWTO:  kerneld

     BogoMips mini-HOWTO: ܻȤ












Kernel HOWTO 							     19



13.  

13.1  

Linux Kernel-HOWTO ߼ά Brian Ward (bri@blah.math.tu-graz.ac.at)
뽫κۣĸ(˵رҪ)

ԴЩ URL ҵҵҳ:





ȻҾܵȥʼסÿ춼յżԿҪһʱŻظ㣮
رǼģ뾡ǳ꾡ѶϢ
˵ĳ޷Ӳ(Ƶ)Ҫ֪Ӳʲᣮ
Ҫر󣬲Ҫֻ˵``ԵһѶϢ'';
Ҫ֪ѶϢʲᣮ ҿҲ֪ĺģgcclibc
İ汾ʲᣬֻǸõǸ׼ûʲã
ҲҼ򵥵; ס㲻ʣ㽫Զõ
Ҫлÿһǣ

дŸҵһκʱûеõӦ(ڻ)ҲСĿż(Ǹ)
һΣ

յżǹӲģû⣬˽ҲϤӲ˶Ҳ֪ܰæ
ҸʹõĻ IDE  SCSI ӲSCSI 3Com  WD
̫·л PCI 壬NCR 810 SCSI AMD 386DX40 w/Cyrix
AMD 5x86AMD 486DX4  Intel 486DX4 
(ֻʹöϤӲժҪǽ飬Ҫãӭѯ :-)
)

0.1  1994 ʮգļ SGML, PostScript, TeX, roff
봿ָʽȡã

13.2  ԤĿ

``ͼ'' һ̫ˣϣôӱ˵õĽ䣮

``ӵ׼'' һҲǣ

Ҫ/ظѶ

13.3  

һС Linus  README  (kernel hacking ѡ)л Linus!

uc@brian.lunetix.de (Ulrich Callmeier): patch -s and xargs.

quinlan@yggdrasil.com (Daniel Quinlan): corrections and additions in many sec
tions.

nat@nat@nataa.fr.eu.org (Nat Makarevitch): mrproper, tar -p, many other things









Kernel HOWTO 							     20



boldt@math.ucsb.edu (Axel Boldt): collected descriptions of kernel configura
tion options on the net; then provided me with the list

lembark@wrkhors.psyber.com (Steve Lembark): multiple boot suggestion

kbriggs@earwax.pd.uwa.edu.au (Keith Briggs): some corrections and suggestions

rmcguire@freenet.columbus.oh.us (Ryan McGuire): makeables additions

dumas@excalibur.ibp.fr (Eric Dumas): French translation

simazaki@ab11.yamanashi.ac.jp (Yasutada Shimazaki): Japanese translation

jjamor@lml.ls.fi.upm.es (Juan Jose Amor Iglesias): Spanish translation

mva@sbbs.se (Martin Wahlen): Swedish translation

jzp1218@stud.u-szeged.hu (Zoltan Vamosi): Hungarian translation

bart@mat.uni.torun.pl (Bartosz Maruszewski): Polish translation

donahue@tiber.nist.gov (Michael J Donahue): typos, winner of the ``sliced bread
competition''

rms@gnu.ai.mit.edu (Richard Stallman): ``free'' documentation concept/distribu
tion notice

dak@Pool.Informatik.RWTH-Aachen.DE (David Kastrup): NFS thing

esr@snark.thyrsus.com (Eric Raymond): various tidbits

ŸҲкܴ

13.4  Ȩɣ

Copyright  Brian Ward, 1994-1997.

Permission is granted to make and distribute copies of this manual provided the
copyright notice and this permission notice are preserved on all copies.

Permission is granted to copy and distribute modified versions of this manual
under the conditions for verbatim copying, provided that the derived work is
distributed under the terms of a permission notice identical to this one.
Translations fall under the catagory of ``modified versions.''

Warranty: None.

Recommendations: Commercial redistribution is allowed and encouraged; however,
it is strongly recommended that the redistributor contact the author before the
redistribution, in the interest of keeping things up-to-date (you could send me
a copy of the thing you're making while you're at it). Translators are also
advised to contact the author before translating. The printed version looks
nicer. Recycle.









Kernel HOWTO 							     21





































































				   CONTENTS



1.   .................................................................... 1
    1.1  ȿ! .......................................................... 1
    1.2  ·˵ ....................................................... 2

2.  Ҫ .......................................................... 2
    2.1  ĵʲ? .................................... 2
    2.2  ΪʲҪº?  ............................................... 2
    2.3  µĺ֧ԮЩӲ? ............................................ 2
    2.4  ҪǸ汾 gcc  libc ? ................................... 2
    2.5  ʲǿģ? .................................................. 2
    2.6  ҪĴŵռ? .............................................. 3
    2.7  Ҫõʱ? .................................................. 3

3.  кĵ? ................................................. 3
    3.1  ȡԭʼʽ ..................................................... 3
    3.2  ⿪ԭʼʽİװ ............................................... 4
    3.3  ú ........................................................... 4
    3.4  ? (The Makefile)  ............................................ 8

4.   ................................................................ 8
    4.1  ȷ ......................................................... 8
    4.2  ʱ ........................................................... 8
    4.3  ``make''Ķ ............................................. 8
    4.4  װ ........................................................... 8

5.  ޲ ................................................................ 9
    5.1  ʹ޲ ......................................................... 9
    5.2  д .................................................... 10
    5.3   .orig  ................................................... 10
    5.4  ޲ ...................................................... 11

6.  ӵ׼ ............................................................. 11
    6.1  kbd ............................................................... 11
    6.2  util-linux ........................................................ 11
    6.3  hdparm ............................................................ 11
    6.4  gpm ............................................................... 11

7.  һЩ ............................................................... 11
    7.1  make clean  ....................................................... 12
    7.2  ޴ĺ .................................................. 12
    7.3  ޷ ...................................................... 12
    7.4  °ĺƺ ............................................ 13
    7.5  ִ LILOϵͳ ............................... 13
    7.6  ϵͳʾ `warning: bdflush not running'  .......................... 14
    7.7  ϵͳ˵ undefined symbols ޷ ............................. 14
    7.8  ޷ҵ IDE/ATAPI CD-ROM  .............................. 14
    7.9  ϵͳʾ obsolete routing requests ѶϢ ................. 15
    7.10 ǽ޷ 1.2.0 Ϲ ..................................... 15
    7.11 ``Not a compressed kernel Image file'' (ѹӳ) ......... 15
    7.12


				       i









	  1.3.x ڿ̨ն˻ϵ ............................. 15
    7.13 ƺ޷붫 ........................................ 15
    7.14  .......................................................... 15

8.   2.0.x ע ................................................ 16

9.  ģ ............................................................. 16
    9.1  װģ鹤 ...................................................... 16
    9.2  ķеģ .................................................. 16

10. ѡ ........................................................... 17
    10.1 General setup (һ趨) .......................................... 17
    10.2 Networking options (·ѡ) ..................................... 17

11. ͼ ............................................................. 17
    11.1 ص make  patch ָ ................................... 17
    11.2 ʽĺİװ .................................................. 18
    11.3 ĸ .......................................................... 18

12. õ HOWTOs .............................................. 18

13.  ................................................................... 19
    13.1  .............................................................. 19
    13.2 ԤĿ .......................................................... 19
    13.3  ............................................................ 19
    13.4 Ȩɣ ........................................ 20






























				       ii


