也包含 sgml 和 html。欢迎大家提供意见。
<!-- CVS revision of this document "$Revision: 1.1 $"  -->
<!-- CVS revision of original english document "1.68"  -->

<chapt id="kernel">DebianÏ嵀 Linux ÄÚºË
<p>
Debian ʹÓÃ×Ô¼ºµÄ·½·¨À´±àÒëÄں˼°Ïà¹ØÄ£¿é¡£²ÎÔÄ <ref id="kernel-details">¡£

<sect id="kernel-compile">Äں˱àÒë
<p>
Debian unstable ·¢ÐаæÖÐµÄ <prgn>gcc</prgn>¡¢<prgn>binutils</prgn> ºÍ <prgn>modutils</prgn> ¿ÉÓÃÀ´±àÒë×îÐ嵀 Linux Äںˡ£Õâ·½ÃæµÄ¹Ù·½ÐÅÏ¢£¬²ÎÔÄ <file>&f-kernel-readme;</file>£¬ÌرðÊÇÎļþµÄºó°ë²¿·Ö¡£

<p>
Äں˱àÒëÊǸöºÜÀ§ÄѵÄÒéÌ⣬ÓÉÓÚÄ¿±êÔÚ²»¶ÏµÄ±ä»¯£¬¼´Ê¹ÊÇ×îÊÜÈË×𾴵Ŀª·¢ÕßÒ²»áÓв»Í¬µÄ¼û½â£º
<taglist compact>
<tag>Manoj Srivastava дµ½£º
<item><tt>--initrd</tt> ÐèÒª Debian רÓà cramfs ²¹¶¡¡£
<tag>Herbert Xu дµ½£º
<item>²»£¬Ëü²»ÐèÒª£¬ÏëʹÓóý CRAMFS ÒÔÍâµÄÎļþϵͳֻÐèÔÚ <file>/etc/mkinitrd/mkinitrd.conf</file> ÖÐÉèÖà MKIMAGE¡£
</taglist>
<p>
°´ÕÕ Manoj ºÍ Kent ׫дµÄ <file>&f-kernel-readme;</file> µÄÖ¸µ¼Ð¡ÐÄÐÐÊ£¬Èç¹ûÒª±àÒë×îа汾µÄÄÚºËÇëÈ·Èϰ²×°ÁË×îРunstable °æ <package>kernel-package</package> Èí¼þ°ü¡£
<p>
¶ÔÓÚµ¥»úÄں˱àÒ룬<tt>initrd</tt> ²»ÊDZØÐëµÄ¡£ÎÒÓÃËüÊÇÏ£ÍûÎÒбàÒëµÄÄÚºËÓëÏàÓ¦µÄÄں˾µÏñһģһÑù¡£Èç¹ûʹÓà <tt>initrd</tt>£¬ÇëÏÈÔĶÁһϠ<manref name="mkinitrd" section="8"> ºÍ <manref name="mkinitrd.conf" section="5">¡£Òà¿É²ÎÔÄ <url id="&bug-initrd;">¡£

<sect1 id="kernel-debian">Debian ±ê×¼·½Ê½
<p>
¹ØÐÄÒ»ÏÂÓÐ¹Ø <package>kernel-package</package>¡¢<prgn>gcc</prgn>¡¢<prgn>binutils</prgn> ºÍ <prgn>modutils</prgn> µÄ´íÎ󱨸档ÔÚÐèҪʱʹÓýÏеİ汾¡£
<p>
ÔÚ Debian ϵͳÖÐÓÃÔ´Âë±àÒë×Ô¶¨ÒåÄÚºËÒªÌØ±ðСÐÄ¡£Óà <prgn>make-kpkg</prgn> µÄ <tt>--append_to_version</tt> Ñ¡ÏîÀ´´´½¨¶àÖØÄں˾µÏñ±È½Ï°²È«¡£
<example>
# apt-get install debhelper modutils kernel-package libncurses5-dev
# apt-get install kernel-source-<var>2.4.18</var>   # ʹÓÃ×îа汾
# apt-get install fakeroot
# vi /etc/kernel-pkg.conf                # ÊäÈëÎÒµÄÃû×ÖºÍ email
$ cd /usr/src                            # ´´½¨Ä¿Â¼
$ tar --bzip2 -xvf kernel-source-<var>2.4.18</var>.tar.bz2
$ cd kernel-source-<var>2.4.18</var>                # Èç¹ûÕâÊÇÄãµÄÄÚºËÔ´Âë
$ cp /boot/config-<var>2.4.18-386</var> .config     # ½«µ±Ç°ÅäÖÃÉ趨ΪĬÈÏÅäÖÃ
$ make menuconfig                        # °´×Ô¼ºµÄϲºÃÀ´¶¨ÖÆ
$ make-kpkg clean                        # ±ØÐëÖ´ÐÐÕâ²½(per: man make-kpkg)
$ fakeroot make-kpkg --append_to_version -<var>486</var> --initrd \
        --revision=<var>rev.01</var> kernel_image \
        modules_image # modules_image ¿ÉÒÔÊÇ pcmcia-cs* µÈ¡£
$ cd ..
# dpkg -i kernel-image*.deb pcmcia-cs*.deb # °²×°
</example>
<tt>make-kpkg kernel_image</tt> ʵ¼ÊÉÏÖ´ÐÐÁË <tt>make oldconfig</tt> ºÍ <tt>make dep</tt>¡£Èç¹ûûʹÓà initrd ¾Í²»ÒªÊ¹Óà <tt>--initrd</tt> Ñ¡Ïî¡£
<p>
Èç¹ûÏë¼ÓÔØ pcmcia-cs Ä£¿é»òÄÚºË pcmcia Ô´ÂëÖÐûÓеÄÄ£¿é£¬Ó¦¸ÃÔÚ <tt>make menuconfig</tt> ºóÑ¡¡°General setup  &mdash;&gt;¡±½øÈë¡°PCMCIA/CardBus support  &mdash;&gt;¡±,ÅäÖá°&lt;&nbsp;&gt; PCMCIA/CardBus support¡±Ñ¡ÏÀýÈ磬ȡÏû¸´Ñ¡Ï¡£
<p>
¶ÔÓÚ SMP »úÆ÷£¬²ÎÕÕ <manref name="kernel-pkg.conf" section="5"> µÄ˵Ã÷ÉèÖà CONCURRENCY_LEVEL¡£
</sect1>

<sect1 id="kernel-classic">¾­µä·½Ê½
<p>
´ÓÏÂÁеØÖ·»ñµÃ¸É¾»µÄÔ´´úÂ룺
<list compact>
<item>Linux:     <url id="&linuxsrc;">
<item>pcmcia-cs: <url id="&pcmciasrc;">
</list>
»òʹÓà Debian Ëù¸½µÄµÈ¼ÛµÄÔ´´úÂ룺
<example>
# cd /usr/src
# tar xfvz linux-<var>whatever</var>.tar.gz
# rm -rf linux
# ln -s linux-<var>whatever</var> linux
# tar xfvz pcmcia-cs-<var>whatever</var>.tar.gz
# ln -s pcmcia-cs-<var>whatever</var> pcmcia
# cd linux
# make menuconfig
... ÅäÖÃÄÚºËÑ¡Ïî ...
# make dep
# make bzImage
... ±à¼­ lilo/grub ...
... ÒÆ¶¯ /usr/src/linux/arch/i386/boot/bzImageµ½boot ...
... /sbin/lilo or whatever you do for grub
# make modules; make modules_install
# cd ../pcmcia
# make config
# make all
# make install
... Ìí¼ÓÐèÒªµÄÄ£¿éÃû³Æµ½ /etc/modules
# shutdown -r now
... Æô¶¯µ½ÐÂÄÚºË ...
</example>
</sect1>

<sect1 id="kernel-headers">ÄÚºËÍ·Îļþ
<p>
¾ø´ó¶àÊý¡°ÆÕͨ¡±³ÌÐò²»ÐèÒªÄÚºËÍ·Îļþ£¬ÊÂʵÉÏÈç¹ûÖ±½ÓÒýÓÃËüÃÇ»á³ö´í¡£ÕâЩ³ÌÐòÓ¦¸ÃÒýÓÃÄÇЩ<strong>±àÒë <prgn>glibc</prgn></strong> ËùÓõÄÍ·Îļþ£¬ËüÃÇλÓÚ Debian ϵͳµÄ <file>/usr/include/linux</file> ºÍ <file>/usr/include/asm</file> Ŀ¼Ï¡£
<p>
¹Ê²»ÒªÔÚ <file>/usr/src/linux</file> Ŀ¼Öд´½¨Ö¸Ïò <file>/usr/include/linux</file> ºÍ <file>/usr/include/asm</file> µÄÁ´½Ó£¬Ò»Ð©¹ýʱµÄÎĵµÔø½¨Òé´´½¨ËüÃÇ¡£
<p>
Èç¹ûijЩÄÚºËÀàÓ¦ÓóÌÐò<strong>ÐèÒª</strong>ÌØ¶¨µÄÄÚºËÍ·Îļþ£¬¿ÉÐÞ¸Ä Makefile(s)£¬Ê¹Æä°üº¬Ö¸Ïò¡°<file><var>ÌØ¶¨ÄÚºËÍ·ÎļþĿ¼</var>/include/linux</file>¡±ºÍ¡°<file><var>ÌØ¶¨ÄÚºËÍ·ÎļþĿ¼</var>/include/asm</file>¡±µÄ·¾¶¡£
</sect1>

</sect>

<sect id="kernel-modules">Ä£¿é»¯µÄ 2.4 ÄÚºË
<p>
<package>kerntl-mage-2.4.<var>NN</var></package> ÌṩÁËаæµÄ Debian 2.4 Äںˣ¬¸Ã°æÄÚºËÄ£¿é»¯³Ì¶È¼«¸ß¡£Äã±ØÐ뼤»îÏà¹ØµÄÄ£¿é²ÅÄÜ»ñµÃÏëÒªµÄÄں˹¦ÄÜ¡£
<p>
¾¡¹ÜÔÚ½ÓÏÂÀ´µÄ²¿·ÖÖÐÌṩÁËÐí¶àͨ¹ýÅäÖà <file>/etc/modules</file> À´½â¾öÎÊÌâµÄ·¶Àý¡£µ«¾Ý˵£¬ÔÚ <file>/etc/modutils/</file> ÖÐÓÃÒ»¸öÎļþÀ´ÌṩËùÓеÄÉ豸±ðÃû£¬¾Í¿É½â¾öÕâÀàÓйØÄ£¿éÎÊÌ⣬µ±Ç°µÄÄÚºËÓÐ×ã¹»¶àµÄ±ðÃû¹©ÄãʹÓá£Ä³Ð©Ä£¿éÒ²¿ÉÒÔ±»Ó²¼þ̽²â³ÌÐò×Ô¶¯¼¤»î£¬ÀýÈç <package>discover</package>¡£²ÎÔÄ<ref id="hdetect-x">¡£
<p>
²ÎÔÄ<ref id="modules">ºÍ Linux ÄÚºËÔ´ÂëĿ¼ÖÐµÄ <file>Documentation/*.txt</file> »ñÈ¡ÏêϸÐÅÏ¢¡£

<sect1 id="kernel-pcmcia">PCMCIA
<p>
ҪʹһЩÀ쵀 PCMCIA ¿¨ÄÜÕý³£¹¤×÷£¬ÄãÐèÔÚ <file>/etc/modules</file> Öаüº¬ÏÂÁÐÄÚÈÝ£º
<example>
# ISA PnP driver
isa-pnp
# New Low level PCMCIA driver
# yenta_socket # ÎҵĻúÆ÷ÉÏËÆºõ²»ÐèÒª
</example>
Ê£ÏµĹ¤×÷¾ÍÓÉ PCMCIA ½Å±¾£¨À´×Ô <package>pcmcia-cs</package> Èí¼þ°ü£©¡¢<prgn>depmod</prgn> ºÍ <prgn>kmod</prgn> ¸ºÔðÁË¡£ÎÒÐèÒª <prgn>isa-pnp</prgn> ÒòΪÎҵıʼDZ¾µçÄÔʹÓõÄÊÇ¾É ISA-PCMCIA¡£½ÏеıʼDZ¾µçÄÔʹÓà CardBus/PCMCIA£¬²»ÔÙÐèÒªËü¡£
<p>
Ìì²ÅµÄ Miquel van Smoorenburg <email>[EMAIL PROTECTED]</email> ˵£º
<p>
¡°ÎÒ½«±Ê¼ÇÖÐËùÓÐÓÐ¹Ø pcmcia µÄ¶«Î÷°üÀ¨ cardmgr µÈÒ»¹ÄÄÔȫɾÁË£¬Ö»×°ÁËÖ§³Ö cardbus µÄ 2.4 °æÄÚºËºÍ woody ÖÐÐ嵀 <package>hotplug</package> Èí¼þ°ü¡£
<p>
Ö»ÒªÄãʹÓõÄÊÇ 32-bit ¿¨£¬Äã¾Í²»ÐèÒª pcmcia Èí¼þ°ü£»2.4 ÄÚÖÃÁË cardservices¡£±ê×¼µÄ tulip Çý¶¯Òà¿ÉÔÚ dlink ¿¨ÉÏÕý³£¹¤×÷¡£
<p>
&mdash;Mike¡£¡±
<p>
²ÎÔÄ <url id="&pcmcia-howto;" name="Linux PCMCIA HOWTO"> ºÍ<ref id="trigger-pcmcia">¡£
</sect1>

<sect1 id="kernel-scsi">SCSI
<p>  <!-- Osamu: maybe test this section? I do not have SCSI :(  
                                     But this is almost sure :)
               I use some of these too now for firewire devices -->
[ûÓвâÊÔ¹ý] ÏëÒª SCSI ¹¤×÷£¬ÇëÔÚ <file>/etc/modules</file> Öаüº¬ÈçÏÂÄÚÈÝ£º
<example>
# SCSI core
scsi_mod
# SCSI generic driver
sg
# SCSI disk
sd_mod
# All other needed HW modules
...
</example>
¿ÉÓà <prgn>depmod</prgn> À´²Ù×÷ÉÏÊöijЩģ¿é¡£
</sect1>

<sect1 id="kernel-net">ÍøÂ繦ÄÜ
<p>
<file>/etc/modules</file> ÖÐÐèÒª°üº¬ÈçÏÂÄÚÈÝÒÔÀ©³äÍøÂ繦ÄÜ£º
<example>
# net/ipv-4
ip_gre
ipip

# net/ipv-4/netfilter
# iptable (in order)
ip_tables
ip_conntrack
ip_conntrack_ftp
iptable_nat
iptable_filter
iptable_mangle
#
ip_nat_ftp
ip_queue
#
ipt_LOG
ipt_MARK
ipt_MASQUERADE
ipt_MIRROR
ipt_REDIRECT
ipt_REJECT
ipt_TCPMSS
ipt_TOS
ipt_limit
ipt_mac
ipt_mark
ipt_multiport
ipt_owner
ipt_state
ipt_tcpmss
ipt_tos
ipt_unclean
#
#ipchains
#ipfwadm
</example>
ÉÏÊöÄÚÈݲ¢Ã»ÓнøÐÐÓÅ»¯¡£¿ÉÓà <prgn>depmod</prgn> À´²Ù×÷ÉÏÊöijЩģ¿é¡£
</sect1>

<sect1 id="ext3">EXT3 Îļþϵͳ£¨&gt; 2.4.17£©
<p>
¶ÔÔ¤±àÒëÄں˾µÏñ°ü£¨&gt; 2.4.17£©Ö´ÐÐÏÂÊö²Ù×÷¿É¼¤»î EXT3 ÈÕÖ¾Îļþϵͳ¡£
<example>
# cd /etc; mv fstab fstab.old
# sed 's/ext2/ext3,ext2/g' &lt;fstab.old &gt;fstab
# vi /etc/fstab
... ½« root ÎļþϵͳÀàÐÍÉèÖóɡ°auto¡±¶ø·Ç¡°ext3,ext2¡±
# cd /etc/mkinitrd
# echo jbd &gt;&gt;modules
# echo ext3 &gt;&gt;modules
# echo ext2 &gt;&gt;modules
# cd /
# apt-get update; apt-get install kernel-image-<var>2.4.17-686-smp</var>
... °²×°×îÐÂÄں˲¢ÅäÖà boot£¨lilo´ÓÕâ¶ùÔËÐУ©
# tune2fs -j -i 0 <var>/dev/hda1</var>
# tune2fs -j -i 0 <var>/dev/hda2</var>
... ½«ËùÓÐ EXT2 FS ת»¯³É EXT3
# shutdown -r now
</example>
ÏÖÔھͿÉʹÓà EXT3 ÈÕÖ¾ÎļþϵͳÁË¡£ ÔÚ <prgn>fstab</prgn> µÄ¡°type¡±ÖÐʹÓà <tt>ex3¡¢ext2</tt> µÄÊÇΪÁ˱£ÏÕÆð¼û£¬Èç¹ûÄں˲»Ö§³Ö·Ç root ·ÖÇø²ÉÓà EXT3 »¹¿ÉÍ˻ص½ EXT2¡£
<p>
Èç¹ûÄãÒѰ²×°ÁË 2.4 °æÄں˲¢ÇÒ²»ÏëÔÙ´Î֨װ£¬Ö´ÐÐÉÏÊö²½ÖèÖÐ <prgn>apt-get</prgn> ÃüÁî֮ǰµÄ²½Öè¾ÍÐÐÁË¡£½Ó×Å£º
<example>
# mkinitrd -o /boot/initrd.img-<var>2.4.17-686-smp</var> /lib/modules/<var>2.4.17-686-smp</var>
# lilo
# tune2fs -j -i 0 <var>/dev/hda1</var>
# tune2fs -j -i 0 <var>/dev/hda2</var>
... ½«ËùÓÐ EXT2 FS ת»¯³É EXT3
# shutdown -r now
</example>
ÏÖÔÚ EXT3 ÈÕÖ¾ÎļþϵͳÒÑÉúЧ¡£
<p>
Èç¹ûûÓÐÉèÖà <file>/etc/mkinitrd/modules</file> ¾Í <prgn>mkinitrd</prgn> ÔËÐУ¬×îºÃÔÚϵͳÆô¶¯Ê±¼ÓÔØÒ»Ð©Ä£¿é£º
<example>
... µ± initrd Ìáʾ»ñÈ¡ shell ʱ£¨5ÃëÖÓ£©£¬ÊäÈë RETURN
# insmod jbd
# insmod ext3 # modprobe ext3 »á¸ºÔðÒ»ÇÐ
# insmod ext2
# ^D
... ¼ÌÐøÆô¶¯
</example>
ÔÚϵͳÆô¶¯ÆÁÄ»£¨<prgn>dmesg</prgn>£©ÖУ¬»á³öÏÖ¡°cramfs: wrong magic¡±£¬±ðµ£ÐÄÕâûÓÐʲôº¦´¦¡£ÔÚ Sarge£¨2002/10£©ÖÐÒѽâ¾öÁËÕâ¸öÎÊÌâ¡£²ÎÔÄ <url id="&bug-ext3;"> ºÍ <url id="&howtoext3;" name="EXT3 File System mini-HOWTO">£¬»òÕßÊÇ <file>&f-howtoext3;</file> »ñµÃÓйØÏêÇé¡£
<p>
¼¤»î EXT3 ¹¦ÄÜ»áÔì³ÉijЩϵͳ·¢ÉúÑÏÖØÄÚºËËÀËøµÄÇé¿ö£¬²»¹ýÎÒûÓöµ½¹ýÕâÖÖÎÊÌ⣨ÎÒµÄÄÚºËÊÇ2.4.17£©¡£
</sect1>

<sect1 id="ss-rtl8139">2.4 °æÄÚºË¶Ô Realtek RTL-8139 µÄÖ§³Ö
<p>
²»ÖªºÎ¹Ê£¬RTL-8139 Ö§³ÖÄ£¿éÒѲ»ÔٽРrtl8139£¬ÏÖÔÚËü½Ð 8139too¡£´Ó 2.2 °æÄÚºËÉý¼¶µ½ 2.4 °æÊ±£¬Çë¼ÇµÃÔÚ <file>/etc/modules</file> ÖÐ×öÏàÓ¦Ð޸ġ£
</sect1>

<sect1 id="parport">²¢Ðж˿ÚÖ§³Ö
<p>
¶ÔÓÚ <package>kernel-image-2.4.*</package>£¬²¢Ðж˿ÚÖ§³ÖÒѱ»Ä£¿é»¯£¬Òª¼¤»î¿ÉÖ´ÐУº
<example>
# modprobe lp
# echo lp >> /etc/modules
</example>
²ÎÔÄ Linux ÄÚºËÔ´ÂëĿ¼ÖÐµÄ <file>Documentation/parport.txt</file>¡£

</sect1>
</sect>

<sect id="proc-sys">ͨ¹ý proc Îļþϵͳµ÷ÕûÄÚºË
<p>
Linux ÄÚºËÐÐΪ¿ÉÒÔÔÚÔËÐÐ״̬ÏÂͨ¹ý proc Îļþϵͳ½øÐе÷½Ú¡£
<p>
ÓйØÔÚ <file>/proc</file> ÎļþϵͳÏÂÐÞ¸ÄÄں˲ÎÊýµÄ»ù´¡ÖªÊ¶£¬¿É²ÎÔÄ Linux Ô´Âë°üÖÐµÄ <file>Documentation/sysctl/*</file> Îļþ¡£
<p>
µ÷ÕûÄں˲ÎÊýµÄÀý×Ó£¬¿É²Î¿¼ <file>/etc/init.d/networking</file> ºÍ<ref id="killecn">¡£
<p>
²ÎÔÄ <manref name="sysctl.conf" section="5"> Á˽âÈçºÎʹÓà <file>/proc</file> ÎļþϵͳºÍ½Å±¾ <file>/etc/init.d/procps.sh</file> À´ÉèÖÃÄں˿ª»úʱµÄÅäÖᣴ˽ű¾ÓÉ <file>/etc/rcS.d/S30procps.sh</file> Ö´ÐС£

<sect1 id="many-files">´ò¿ªÁËÌ«¶àÎļþ
<p>
Linux ÄÚºËÓÐʱ»á±¨¸æ¡°Too many open files¡±£¬ÆðÒòÊÇ <tt>file-max</tt> ĬÈÏÖµ£¨8096£©Ì«Ð¡¡£Òª½â¾öÕâ¸öÎÊÌ⣬¿ÉÒÔ root Éí·ÝÖ´ÐÐÏÂÁÐÃüÁ£¨»ò½«ËüÃǼÓÈë<file>/etc/rcS.d/*</file>Ï嵀 init ½Å±¾¡££©
<example>
# echo "65536"  &gt; /proc/sys/fs/file-max  # ÊÊÓÃÓÚ 2.2 ºÍ 2.4 °æÄÚºË
# echo "131072" &gt; /proc/sys/fs/inode-max # ½öÊÊÓÃÓÚ 2.2 °æÄÚºË
</example>
»ò½«ÏÂÁÐÄÚÈÝ·ÅÈë <file>/etc/sysctl.conf</file>£¬×öÓÀ¾ÃÐԵĸü¸Ä£º
<example>
file-max=65536   # ÊÊÓÃÓÚ 2.2 ºÍ 2.4 °æÄÚºË
inode-max=131072 # ½öÊÊÓÃÓÚ 2.2 °æÄÚºË
</example>

<sect1 id="bdflush">´ÅÅÌ»º´æÇå³ýʱ¼ä£¨Disk flush intervals£©
<p>
¿Éͨ¹ý proc ÎļþϵͳÀ´Ð޸ĴÅÅÌ»º´æÇå³ýʱ¼ä¡£ÏÂÃæµÄ²Ù×÷½«Ä¬È쵀 5 Ãëʱ¼ä¼ä¸ôËõ¶Ìµ½ 1 Ãë¡£
<example>
# echo "40 0 0 0 100 30000 60 0 0"  &gt; /proc/sys/vm/bdflush
</example>
Õâ¿ÉÄܶÔÎļþ I/O ÐÔÄܲúÉúÒ»µã¶ù¸ºÃæÓ°Ïì¡£µ«ËüÄܱ£Ö¤ÎļþÄÚÈÝÊÇ×î½ü 1 ÃëµÄ£¬±ÈĬÈ쵀 5 Ãë¸ü¶Ì¡£¶ÔÈÕÖ¾ÎļþϵͳÀ´Ëµ¸üÊÇÈç´Ë¡£
</sect1>

<sect1 id="over-commit">³Ù»ºµÄСÄÚ´æ¾É»úÆ÷
<p>
¶ÔijЩСÄÚ´æµÄ¾É»úÆ÷À´Ëµ£¬ÔÚ proc ÎļþϵͳÖдò¿ªÄÚ´æµÄ over-commit ¹¦ÄÜ»áºÜÓÐЧ¹û£º
<example>
# echo 1 &gt; /proc/sys/vm/overcommit_memory
</example> 
</sect1>

</sect>

<sect id="udev">2.6 °æÄÚºËºÍ udev
<p>
udev ÊÇÈ¡´ú <file>/dev/</file> µÄ¶¯Ì¬ÉèÖõÄϵͳ¡£ÎÒÃÇ¿ÉÒÔÑ¡ÔñºÜ¶ÌµÄÉ豸Ãû×Ö¡£¶ø 2.4 °æÄÚºËʹÓÃµÄ devfs ÒѾ­±»ÌÔÌ­¡£
<p>
°²×° Debian аæµÄ <package>kernel-image-2.6.<var>NN</var></package> ºÍ <package>udev</package> ¾ÍÄÜÆôÓÃÕâ¸ö¹¦ÄÜ¡£
</sect>

</chapt>

Title: Debian ²Î¿¼ÊÖ²á - DebianÏ嵀 Linux ÄÚºË

[ ÉÏÒ»Ò³ ] [ Ŀ¼ ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ A ] [ ÏÂÒ»Ò³ ]

Debian ²Î¿¼ÊÖ²á
µÚ 7 Õ - DebianÏ嵀 Linux ÄÚºË


Debian ʹÓÃ×Ô¼ºµÄ·½·¨À´±àÒëÄں˼°Ïà¹ØÄ£¿é¡£²ÎÔÄ DebianºÍϵͳÄÚºË, µÚ 2.7 ½Ú¡£


7.1 Äں˱àÒë

Debian unstable ·¢ÐаæÖÐµÄ gcc¡¢binutils ºÍ modutils ¿ÉÓÃÀ´±àÒë×îÐ嵀 Linux Äںˡ£Õâ·½ÃæµÄ¹Ù·½ÐÅÏ¢£¬²ÎÔÄ /usr/share/doc/kernel-package/README.gz£¬ÌرðÊÇÎļþµÄºó°ë²¿·Ö¡£

Äں˱àÒëÊǸöºÜÀ§ÄѵÄÒéÌ⣬ÓÉÓÚÄ¿±êÔÚ²»¶ÏµÄ±ä»¯£¬¼´Ê¹ÊÇ×îÊÜÈË×𾴵Ŀª·¢ÕßÒ²»áÓв»Í¬µÄ¼û½â£º

Manoj Srivastava дµ½£º
--initrd ÐèÒª Debian רÓà cramfs ²¹¶¡¡£
Herbert Xu дµ½£º
²»£¬Ëü²»ÐèÒª£¬ÏëʹÓóý CRAMFS ÒÔÍâµÄÎļþϵͳֻÐèÔÚ /etc/mkinitrd/mkinitrd.conf ÖÐÉèÖà MKIMAGE¡£

°´ÕÕ Manoj ºÍ Kent ׫дµÄ /usr/share/doc/kernel-package/README.gz µÄÖ¸µ¼Ð¡ÐÄÐÐÊ£¬Èç¹ûÒª±àÒë×îа汾µÄÄÚºËÇëÈ·Èϰ²×°ÁË×îРunstable °æ kernel-package Èí¼þ°ü¡£

¶ÔÓÚµ¥»úÄں˱àÒ룬initrd ²»ÊDZØÐëµÄ¡£ÎÒÓÃËüÊÇÏ£ÍûÎÒбàÒëµÄÄÚºËÓëÏàÓ¦µÄÄں˾µÏñһģһÑù¡£Èç¹ûʹÓà initrd£¬ÇëÏÈÔĶÁһϠmkinitrd(8) ºÍ mkinitrd.conf(5)¡£Òà¿É²ÎÔÄ http://bugs.debian.org/149236¡£


7.1.1 Debian ±ê×¼·½Ê½

¹ØÐÄÒ»ÏÂÓÐ¹Ø kernel-package¡¢gcc¡¢binutils ºÍ modutils µÄ´íÎ󱨸档ÔÚÐèҪʱʹÓýÏеİ汾¡£

ÔÚ Debian ϵͳÖÐÓÃÔ´Âë±àÒë×Ô¶¨ÒåÄÚºËÒªÌØ±ðСÐÄ¡£Óà make-kpkg µÄ --append_to_version Ñ¡ÏîÀ´´´½¨¶àÖØÄں˾µÏñ±È½Ï°²È«¡£

     # apt-get install debhelper modutils kernel-package libncurses5-dev
     # apt-get install kernel-source-2.4.18   # ʹÓÃ×îа汾
     # apt-get install fakeroot
     # vi /etc/kernel-pkg.conf                # ÊäÈëÎÒµÄÃû×ÖºÍ email
     $ cd /usr/src                            # ´´½¨Ä¿Â¼
     $ tar --bzip2 -xvf kernel-source-2.4.18.tar.bz2
     $ cd kernel-source-2.4.18                # Èç¹ûÕâÊÇÄãµÄÄÚºËÔ´Âë
     $ cp /boot/config-2.4.18-386 .config     # ½«µ±Ç°ÅäÖÃÉ趨ΪĬÈÏÅäÖÃ
     $ make menuconfig                        # °´×Ô¼ºµÄϲºÃÀ´¶¨ÖÆ
     $ make-kpkg clean                        # ±ØÐëÖ´ÐÐÕâ²½(per: man make-kpkg)
     $ fakeroot make-kpkg --append_to_version -486 --initrd \
             --revision=rev.01 kernel_image \
             modules_image # modules_image ¿ÉÒÔÊÇ pcmcia-cs* µÈ¡£
     $ cd ..
     # dpkg -i kernel-image*.deb pcmcia-cs*.deb # °²×°

make-kpkg kernel_image ʵ¼ÊÉÏÖ´ÐÐÁË make oldconfig ºÍ make dep¡£Èç¹ûûʹÓà initrd ¾Í²»ÒªÊ¹Óà --initrd Ñ¡Ïî¡£

Èç¹ûÏë¼ÓÔØ pcmcia-cs Ä£¿é»òÄÚºË pcmcia Ô´ÂëÖÐûÓеÄÄ£¿é£¬Ó¦¸ÃÔÚ make menuconfig ºóÑ¡¡°General setup —>¡±½øÈë¡°PCMCIA/CardBus support —>¡±,ÅäÖá°< > PCMCIA/CardBus support¡±Ñ¡ÏÀýÈ磬ȡÏû¸´Ñ¡Ï¡£

¶ÔÓÚ SMP »úÆ÷£¬²ÎÕÕ kernel-pkg.conf(5) µÄ˵Ã÷ÉèÖà CONCURRENCY_LEVEL¡£


7.1.2 ¾­µä·½Ê½

´ÓÏÂÁеØÖ·»ñµÃ¸É¾»µÄÔ´´úÂ룺

»òʹÓà Debian Ëù¸½µÄµÈ¼ÛµÄÔ´´úÂ룺

     # cd /usr/src
     # tar xfvz linux-whatever.tar.gz
     # rm -rf linux
     # ln -s linux-whatever linux
     # tar xfvz pcmcia-cs-whatever.tar.gz
     # ln -s pcmcia-cs-whatever pcmcia
     # cd linux
     # make menuconfig
     ... ÅäÖÃÄÚºËÑ¡Ïî ...
     # make dep
     # make bzImage
     ... ±à¼­ lilo/grub ...
     ... ÒÆ¶¯ /usr/src/linux/arch/i386/boot/bzImageµ½boot ...
     ... /sbin/lilo or whatever you do for grub
     # make modules; make modules_install
     # cd ../pcmcia
     # make config
     # make all
     # make install
     ... Ìí¼ÓÐèÒªµÄÄ£¿éÃû³Æµ½ /etc/modules
     # shutdown -r now
     ... Æô¶¯µ½ÐÂÄÚºË ...

7.1.3 ÄÚºËÍ·Îļþ

¾ø´ó¶àÊý¡°ÆÕͨ¡±³ÌÐò²»ÐèÒªÄÚºËÍ·Îļþ£¬ÊÂʵÉÏÈç¹ûÖ±½ÓÒýÓÃËüÃÇ»á³ö´í¡£ÕâЩ³ÌÐòÓ¦¸ÃÒýÓÃÄÇЩ±àÒë glibc ËùÓõÄÍ·Îļþ£¬ËüÃÇλÓÚ Debian ϵͳµÄ /usr/include/linux ºÍ /usr/include/asm Ŀ¼Ï¡£

¹Ê²»ÒªÔÚ /usr/src/linux Ŀ¼Öд´½¨Ö¸Ïò /usr/include/linux ºÍ /usr/include/asm µÄÁ´½Ó£¬Ò»Ð©¹ýʱµÄÎĵµÔø½¨Òé´´½¨ËüÃÇ¡£

Èç¹ûijЩÄÚºËÀàÓ¦ÓóÌÐòÐèÒªÌØ¶¨µÄÄÚºËÍ·Îļþ£¬¿ÉÐÞ¸Ä Makefile(s)£¬Ê¹Æä°üº¬Ö¸Ïò¡°Ìض¨ÄÚºËÍ·ÎļþĿ¼/include/linux¡±ºÍ¡°Ìض¨ÄÚºËÍ·ÎļþĿ¼/include/asm¡±µÄ·¾¶¡£


7.2 Ä£¿é»¯µÄ 2.4 ÄÚºË

kerntl-mage-2.4.NN ÌṩÁËаæµÄ Debian 2.4 Äںˣ¬¸Ã°æÄÚºËÄ£¿é»¯³Ì¶È¼«¸ß¡£Äã±ØÐ뼤»îÏà¹ØµÄÄ£¿é²ÅÄÜ»ñµÃÏëÒªµÄÄں˹¦ÄÜ¡£

¾¡¹ÜÔÚ½ÓÏÂÀ´µÄ²¿·ÖÖÐÌṩÁËÐí¶àͨ¹ýÅäÖà /etc/modules À´½â¾öÎÊÌâµÄ·¶Àý¡£µ«¾Ý˵£¬ÔÚ /etc/modutils/ ÖÐÓÃÒ»¸öÎļþÀ´ÌṩËùÓеÄÉ豸±ðÃû£¬¾Í¿É½â¾öÕâÀàÓйØÄ£¿éÎÊÌ⣬µ±Ç°µÄÄÚºËÓÐ×ã¹»¶àµÄ±ðÃû¹©ÄãʹÓá£Ä³Ð©Ä£¿éÒ²¿ÉÒÔ±»Ó²¼þ̽²â³ÌÐò×Ô¶¯¼¤»î£¬ÀýÈç discover¡£²ÎÔÄHardware detection for X, µÚ 9.4.2 ½Ú¡£

²ÎÔÄÄ£¿é¼ÓÔØ¹æ¶¨, µÚ 2.7.5 ½ÚºÍ Linux ÄÚºËÔ´ÂëĿ¼ÖÐµÄ Documentation/*.txt »ñÈ¡ÏêϸÐÅÏ¢¡£


7.2.1 PCMCIA

ҪʹһЩÀ쵀 PCMCIA ¿¨ÄÜÕý³£¹¤×÷£¬ÄãÐèÔÚ /etc/modules Öаüº¬ÏÂÁÐÄÚÈÝ£º

     # ISA PnP driver
     isa-pnp
     # New Low level PCMCIA driver
     # yenta_socket # ÎҵĻúÆ÷ÉÏËÆºõ²»ÐèÒª

Ê£ÏµĹ¤×÷¾ÍÓÉ PCMCIA ½Å±¾£¨À´×Ô pcmcia-cs Èí¼þ°ü£©¡¢depmod ºÍ kmod ¸ºÔðÁË¡£ÎÒÐèÒª isa-pnp ÒòΪÎҵıʼDZ¾µçÄÔʹÓõÄÊÇ¾É ISA-PCMCIA¡£½ÏеıʼDZ¾µçÄÔʹÓà CardBus/PCMCIA£¬²»ÔÙÐèÒªËü¡£

Ìì²ÅµÄ Miquel van Smoorenburg [EMAIL PROTECTED] ˵£º

¡°ÎÒ½«±Ê¼ÇÖÐËùÓÐÓÐ¹Ø pcmcia µÄ¶«Î÷°üÀ¨ cardmgr µÈÒ»¹ÄÄÔȫɾÁË£¬Ö»×°ÁËÖ§³Ö cardbus µÄ 2.4 °æÄÚºËºÍ woody ÖÐÐ嵀 hotplug Èí¼þ°ü¡£

Ö»ÒªÄãʹÓõÄÊÇ 32-bit ¿¨£¬Äã¾Í²»ÐèÒª pcmcia Èí¼þ°ü£»2.4 ÄÚÖÃÁË cardservices¡£±ê×¼µÄ tulip Çý¶¯Òà¿ÉÔÚ dlink ¿¨ÉÏÕý³£¹¤×÷¡£

—Mike¡£¡±

²ÎÔÄ Linux PCMCIA HOWTO ºÍÍøÂçÉèÖÃºÍ PCMCIA, µÚ 10.8.5 ½Ú¡£


7.2.2 SCSI

[ûÓвâÊÔ¹ý] ÏëÒª SCSI ¹¤×÷£¬ÇëÔÚ /etc/modules Öаüº¬ÈçÏÂÄÚÈÝ£º

     # SCSI core
     scsi_mod
     # SCSI generic driver
     sg
     # SCSI disk
     sd_mod
     # All other needed HW modules
     ...

¿ÉÓà depmod À´²Ù×÷ÉÏÊöijЩģ¿é¡£


7.2.3 ÍøÂ繦ÄÜ

/etc/modules ÖÐÐèÒª°üº¬ÈçÏÂÄÚÈÝÒÔÀ©³äÍøÂ繦ÄÜ£º

     # net/ipv-4
     ip_gre
     ipip
     
     # net/ipv-4/netfilter
     # iptable (in order)
     ip_tables
     ip_conntrack
     ip_conntrack_ftp
     iptable_nat
     iptable_filter
     iptable_mangle
     #
     ip_nat_ftp
     ip_queue
     #
     ipt_LOG
     ipt_MARK
     ipt_MASQUERADE
     ipt_MIRROR
     ipt_REDIRECT
     ipt_REJECT
     ipt_TCPMSS
     ipt_TOS
     ipt_limit
     ipt_mac
     ipt_mark
     ipt_multiport
     ipt_owner
     ipt_state
     ipt_tcpmss
     ipt_tos
     ipt_unclean
     #
     #ipchains
     #ipfwadm

ÉÏÊöÄÚÈݲ¢Ã»ÓнøÐÐÓÅ»¯¡£¿ÉÓà depmod À´²Ù×÷ÉÏÊöijЩģ¿é¡£


7.2.4 EXT3 Îļþϵͳ£¨> 2.4.17£©

¶ÔÔ¤±àÒëÄں˾µÏñ°ü£¨> 2.4.17£©Ö´ÐÐÏÂÊö²Ù×÷¿É¼¤»î EXT3 ÈÕÖ¾Îļþϵͳ¡£

     # cd /etc; mv fstab fstab.old
     # sed 's/ext2/ext3,ext2/g' <fstab.old >fstab
     # vi /etc/fstab
     ... ½« root ÎļþϵͳÀàÐÍÉèÖóɡ°auto¡±¶ø·Ç¡°ext3,ext2¡±
     # cd /etc/mkinitrd
     # echo jbd >>modules
     # echo ext3 >>modules
     # echo ext2 >>modules
     # cd /
     # apt-get update; apt-get install kernel-image-2.4.17-686-smp
     ... °²×°×îÐÂÄں˲¢ÅäÖà boot£¨lilo´ÓÕâ¶ùÔËÐУ©
     # tune2fs -j -i 0 /dev/hda1
     # tune2fs -j -i 0 /dev/hda2
     ... ½«ËùÓÐ EXT2 FS ת»¯³É EXT3
     # shutdown -r now

ÏÖÔھͿÉʹÓà EXT3 ÈÕÖ¾ÎļþϵͳÁË¡£ ÔÚ fstab µÄ¡°type¡±ÖÐʹÓà ex3¡¢ext2 µÄÊÇΪÁ˱£ÏÕÆð¼û£¬Èç¹ûÄں˲»Ö§³Ö·Ç root ·ÖÇø²ÉÓà EXT3 »¹¿ÉÍ˻ص½ EXT2¡£

Èç¹ûÄãÒѰ²×°ÁË 2.4 °æÄں˲¢ÇÒ²»ÏëÔÙ´Î֨װ£¬Ö´ÐÐÉÏÊö²½ÖèÖÐ apt-get ÃüÁî֮ǰµÄ²½Öè¾ÍÐÐÁË¡£½Ó×Å£º

     # mkinitrd -o /boot/initrd.img-2.4.17-686-smp /lib/modules/2.4.17-686-smp
     # lilo
     # tune2fs -j -i 0 /dev/hda1
     # tune2fs -j -i 0 /dev/hda2
     ... ½«ËùÓÐ EXT2 FS ת»¯³É EXT3
     # shutdown -r now

ÏÖÔÚ EXT3 ÈÕÖ¾ÎļþϵͳÒÑÉúЧ¡£

Èç¹ûûÓÐÉèÖà /etc/mkinitrd/modules ¾Í mkinitrd ÔËÐУ¬×îºÃÔÚϵͳÆô¶¯Ê±¼ÓÔØÒ»Ð©Ä£¿é£º

     ... µ± initrd Ìáʾ»ñÈ¡ shell ʱ£¨5ÃëÖÓ£©£¬ÊäÈë RETURN
     # insmod jbd
     # insmod ext3 # modprobe ext3 »á¸ºÔðÒ»ÇÐ
     # insmod ext2
     # ^D
     ... ¼ÌÐøÆô¶¯

ÔÚϵͳÆô¶¯ÆÁÄ»£¨dmesg£©ÖУ¬»á³öÏÖ¡°cramfs: wrong magic¡±£¬±ðµ£ÐÄÕâûÓÐʲôº¦´¦¡£ÔÚ Sarge£¨2002/10£©ÖÐÒѽâ¾öÁËÕâ¸öÎÊÌâ¡£²ÎÔÄ http://bugs.debian.org/135537 ºÍ EXT3 File System mini-HOWTO£¬»òÕßÊÇ /usr/share/doc/HOWTO/en-txt/mini/extra/ext3-mini-HOWTO.gz »ñµÃÓйØÏêÇé¡£

¼¤»î EXT3 ¹¦ÄÜ»áÔì³ÉijЩϵͳ·¢ÉúÑÏÖØÄÚºËËÀËøµÄÇé¿ö£¬²»¹ýÎÒûÓöµ½¹ýÕâÖÖÎÊÌ⣨ÎÒµÄÄÚºËÊÇ2.4.17£©¡£


7.2.5 2.4 °æÄÚºË¶Ô Realtek RTL-8139 µÄÖ§³Ö

²»ÖªºÎ¹Ê£¬RTL-8139 Ö§³ÖÄ£¿éÒѲ»ÔٽРrtl8139£¬ÏÖÔÚËü½Ð 8139too¡£´Ó 2.2 °æÄÚºËÉý¼¶µ½ 2.4 °æÊ±£¬Çë¼ÇµÃÔÚ /etc/modules ÖÐ×öÏàÓ¦Ð޸ġ£


7.2.6 ²¢Ðж˿ÚÖ§³Ö

¶ÔÓÚ kernel-image-2.4.*£¬²¢Ðж˿ÚÖ§³ÖÒѱ»Ä£¿é»¯£¬Òª¼¤»î¿ÉÖ´ÐУº

     # modprobe lp
     # echo lp >> /etc/modules

²ÎÔÄ Linux ÄÚºËÔ´ÂëĿ¼ÖÐµÄ Documentation/parport.txt¡£


7.3 ͨ¹ý proc Îļþϵͳµ÷ÕûÄÚºË

Linux ÄÚºËÐÐΪ¿ÉÒÔÔÚÔËÐÐ״̬ÏÂͨ¹ý proc Îļþϵͳ½øÐе÷½Ú¡£

ÓйØÔÚ /proc ÎļþϵͳÏÂÐÞ¸ÄÄں˲ÎÊýµÄ»ù´¡ÖªÊ¶£¬¿É²ÎÔÄ Linux Ô´Âë°üÖÐµÄ Documentation/sysctl/* Îļþ¡£

µ÷ÕûÄں˲ÎÊýµÄÀý×Ó£¬¿É²Î¿¼ /etc/init.d/networking ºÍÎÞ·¨·ÃÎÊijЩվµãµÄ¹ÖÎÊÌâ, µÚ 3.7.5 ½Ú¡£

²ÎÔÄ sysctl.conf(5) Á˽âÈçºÎʹÓà /proc ÎļþϵͳºÍ½Å±¾ /etc/init.d/procps.sh À´ÉèÖÃÄں˿ª»úʱµÄÅäÖᣴ˽ű¾ÓÉ /etc/rcS.d/S30procps.sh Ö´ÐС£


7.3.1 ´ò¿ªÁËÌ«¶àÎļþ

Linux ÄÚºËÓÐʱ»á±¨¸æ¡°Too many open files¡±£¬ÆðÒòÊÇ file-max ĬÈÏÖµ£¨8096£©Ì«Ð¡¡£Òª½â¾öÕâ¸öÎÊÌ⣬¿ÉÒÔ root Éí·ÝÖ´ÐÐÏÂÁÐÃüÁ£¨»ò½«ËüÃǼÓÈë/etc/rcS.d/*Ï嵀 init ½Å±¾¡££©

     # echo "65536"  > /proc/sys/fs/file-max  # ÊÊÓÃÓÚ 2.2 ºÍ 2.4 °æÄÚºË
     # echo "131072" > /proc/sys/fs/inode-max # ½öÊÊÓÃÓÚ 2.2 °æÄÚºË

»ò½«ÏÂÁÐÄÚÈÝ·ÅÈë /etc/sysctl.conf£¬×öÓÀ¾ÃÐԵĸü¸Ä£º

     file-max=65536   # ÊÊÓÃÓÚ 2.2 ºÍ 2.4 °æÄÚºË
     inode-max=131072 # ½öÊÊÓÃÓÚ 2.2 °æÄÚºË

7.3.2 ´ÅÅÌ»º´æÇå³ýʱ¼ä£¨Disk flush intervals£©

¿Éͨ¹ý proc ÎļþϵͳÀ´Ð޸ĴÅÅÌ»º´æÇå³ýʱ¼ä¡£ÏÂÃæµÄ²Ù×÷½«Ä¬È쵀 5 Ãëʱ¼ä¼ä¸ôËõ¶Ìµ½ 1 Ãë¡£

     # echo "40 0 0 0 100 30000 60 0 0"  > /proc/sys/vm/bdflush

Õâ¿ÉÄܶÔÎļþ I/O ÐÔÄܲúÉúÒ»µã¶ù¸ºÃæÓ°Ïì¡£µ«ËüÄܱ£Ö¤ÎļþÄÚÈÝÊÇ×î½ü 1 ÃëµÄ£¬±ÈĬÈ쵀 5 Ãë¸ü¶Ì¡£¶ÔÈÕÖ¾ÎļþϵͳÀ´Ëµ¸üÊÇÈç´Ë¡£


7.3.3 ³Ù»ºµÄСÄÚ´æ¾É»úÆ÷

¶ÔijЩСÄÚ´æµÄ¾É»úÆ÷À´Ëµ£¬ÔÚ proc ÎļþϵͳÖдò¿ªÄÚ´æµÄ over-commit ¹¦ÄÜ»áºÜÓÐЧ¹û£º

     # echo 1 > /proc/sys/vm/overcommit_memory

7.4 2.6 °æÄÚºËºÍ udev

udev ÊÇÈ¡´ú /dev/ µÄ¶¯Ì¬ÉèÖõÄϵͳ¡£ÎÒÃÇ¿ÉÒÔÑ¡ÔñºÜ¶ÌµÄÉ豸Ãû×Ö¡£¶ø 2.4 °æÄÚºËʹÓÃµÄ devfs ÒѾ­±»ÌÔÌ­¡£

°²×° Debian аæµÄ kernel-image-2.6.NN ºÍ udev ¾ÍÄÜÆôÓÃÕâ¸ö¹¦ÄÜ¡£


[ ÉÏÒ»Ò³ ] [ Ŀ¼ ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ A ] [ ÏÂÒ»Ò³ ]

Debian ²Î¿¼ÊÖ²á

CVS, ÐÇÆÚËÄ ÆßÔÂ 28 03:50:01 UTC 2005

Osamu Aoki [EMAIL PROTECTED]
Translator: Hao "Lyoo" Liu [EMAIL PROTECTED]
×÷Õß, µÚ A.1 ½Ú


回复