Linux 版 (精华区)

发信人: Baggio (傻瓜牌生活), 信区: Linux
标  题: Linux的系统设定
发信站: 哈工大紫丁香 (Tue May  4 17:55:44 1999), 转信

Linux的系统设定

linux系统的设定 

在这□我们先了解整个linux启动的流程,首先系统核心由lilo 

或loadlin程式读入记忆体,在解压缩後分别载入各周边的驱动程 

式。必须注意的是,有些驱动程式采自动侦测(auto-probe)的方 

式,判断硬体的设定情形,如果在核心载入的过程中,发现有侦测 

错误的情况,必须把确实的硬体设定参数由lilo、loadlin在载入 

时传入核心。 

 在核心完成载入後,linux会执行init程式,init程式会根据 

/etc/inittab的设定完成系统启动的程序。由於在启动系统时,我 

们可能希望进入正常的运作模式提供对外服务,或进入系统维护模 

式暂时停止对外服务,所以除了特殊事件处理外,每一个项目都指 

定run level,通知init这次启动本项目是否要执行。接著init监督 

所有由它启动的程式及停电等系统事件,直到shutdown为止。例如 

getty负责使用者签入,而一般getty的action为respawn,表示使用 

者离线後,init会再重新启动getty等待下一个使用者。 



# inittab This file describes how the INIT process should set up 

# the system in a certain run-level. 



# Version: @(#)inittab 2.04 17/05/93 MvS 



# Author: Miquel van Smoorenburg,  



# 格式:    



# Default runlevel. 



id:5:initdefault: 



# System initialization (runs when system boots). 



si:S:sysinit:/etc/rc.d/rc.S 



# Script to run when going single user. 



su:S:wait:/etc/rc.d/rc.K 



# Script to run when going multi user. 



rc:123456:wait:/etc/rc.d/rc.M 



# What to do at the "Three Finger Salute". 



ca::ctrlaltdel:/sbin/shutdown -t3 -rf now 



# What to do when power fails (shutdown to single user). 



pf::powerfail:/sbin/shutdown -f +5 "THE POWER IS FAILING" 



# If power is back before shutdown, cancel the running shutdown. 



pg:0123456:powerokwait:/sbin/shutdown -c "THE POWER IS BACK" 



# If power comes back in single user mode, return to multi user mode. 



ps:S:powerokwait:/sbin/init 5 



# The getties in multi user mode on consoles an serial lines. 



# NOTE NOTE NOTE adjust this to your getty or you will not be 

# able to login !! 



# Note: for 'agetty' you use linespeed, line. 

# for 'getty_ps' you use line, linespeed and also use 'gettydefs' 



c1:12345:respawn:/sbin/getty tty1 38400 console 

c2:12345:respawn:/sbin/getty tty2 38400 console 

c3:45:respawn:/sbin/getty tty3 38400 console 

c4:45:respawn:/sbin/getty tty4 38400 vt100 

#c5:45:respawn:/sbin/agetty 38400 tty5 

#c6:456:respawn:/sbin/agetty 38400 tty6 



# Serial lines 



#s1:45:respawn:/sbin/agetty 19200 ttyS0 

#s2:45:respawn:/sbin/agetty 19200 ttyS1 



# Dialup lines 



#d1:45:respawn:/sbin/agetty -mt60 38400,19200,9600,2400,1200 ttyS0 

#d2:45:respawn:/sbin/mgetty -D -n 5 ttyS1 38400 vt100 



# Runlevel 6 used to be for an X-window only system, until we discovered 

# that it throws init into a loop that keeps your load avg at least 1 all 

# the time. Thus, there is now one getty opened on tty6. Hopefully no one 

# will notice. ;^) 

# It might not be bad to have one text console anyway, in case something 

# happens to X. 



x1:6:wait:/etc/rc.d/rc.6 

# End of /etc/inittab 

* 上表除中文说明外,节录自slackware 2.1.0之/etc/inittab 

 从inittab可以看到,id:5:initdefault表示在载入核心时若没有 

指定runlevel,则以5作为内定值。rc.S的action属於sysinit,会 

在系统启动後首先被执行。接著id为rc那一项,指定在runlevel为 

1~6时执行,属性为wait表示init会执行rc.M且等待它执行完毕。这 

两个script和系统环境较密切,我们下面会作较详细的介绍。另外 

id为ca那一项定义了按ctrl-alt-del时,执行shutdown并立即reboot 

。至於id为c1~c6、s1~s2、d1~d2者,指定在那一个runlevel下,启 

动那些终端机,它们的action属於respawn表示这些程式在结束後, 

init会再次重新执行它们,直到shutdown为止。如果须要更详细的 

资料,可用man init得到更详细的说明。 

#!/bin/sh 



# /etc/rc.d/rc.S 



# These commands are executed at boot time by init(8). 

# User customization should go in /etc/rc.local. 

PATH=/sbin:/usr/sbin:/bin:/usr/bin 



# 启动swap系统: 



# 1. mount所有定义在/etc/fstab内的swap partition 



#/sbin/swapon -av 



# 2. 启动swap file而不是swap partition 



/sbin/swapon /.Swapfile 



# Start update. 



/sbin/update & 



# Test to see if the root partition is read-only, like it ought to be. 



# 测试档案系统的完整性 



READWRITE=no 

if echo -n >> "Testing filesystem status"; then 

rm -f "Testing filesystem status" 

READWRITE=yes 

fi 



# Check the integrity of all filesystems 



if [ ! $READWRITE = yes ]; then 

/sbin/fsck -A -a 

# If there was a failure, drop into single-user mode. 

if [ $? -gt 1 ] ; then 

echo 

echo 

echo "**************************************" 

echo "fsck returned error code - REBOOT NOW!" 

echo "**************************************" 

echo 

echo 

/bin/login 

fi 



# Remount the root filesystem in read-write mode 



echo "Remounting root device with read-write enabled." 

/sbin/mount -w -n -o remount / 

if [ $? -gt 0 ] ; then 

echo 

echo "Attempt to remount root device as read-write failed! This is going to

" echo "cause serious problems... " 

echo 

echo "If you're using the UMSDOS filesystem, you **MUST** mount the root 

partition" 

echo "read-write! You can make sure the root filesystem is getting mounted 



echo "read-write with the 'rw' flag to Loadlin:" 

echo 

echo "loadlin vmlinuz root=/dev/hda1 rw (replace /dev/hda1 with your root 

device)" 

echo 

echo "Normal bootdisks can be made to mount a system read-write with the 

rdev command:" 

echo 

echo "rdev -R /dev/fd0 0" 

echo 

echo "You can also get into your system by using a bootkernel disk with a 

command" 

echo "like this on the LILO prompt line: (change the root partition name 

as needed)" 

echo 

echo "LILO: mount root=/dev/hda1 rw" 

echo 

echo "Please press ENTER to continue, then reboot and use one of the above 

methods to" 

echo -n "get into your machine and start looking for the problem. " 

read junk; 

fi 

else 

echo "Testing filesystem status: read-write filesystem" 

if [ -d /DOS/linux/etc -a -d /DOS/linux/dev ]; then # no warn for UMSDOS 

cat << EOF 

*** ERROR: Root partition has already been mounted read-write. Cannot

check! 

For filesystem checking to work properly, your system must initially mount 

the root partition as read only. Please modify your kernel with 'rdev' so t

hat it does this. If you're booting with LILO, add a line: 

read-only 

to the Linux section in your /etc/lilo.conf and type 'lilo' to reinstall it



If you boot from a kernel on a floppy disk, put it in the drive and type: 

rdev -R /dev/fd0 1 

If you boot from a bootkernel disk, or with Loadlin, you can add the 'ro' 

flag. 

This will fix the problem *AND* eliminate this annoying message. :^) 

EOF 

echo -n "Press ENTER to continue. " 

read junk; 

fi 

fi 



# remove /etc/mtab* so that mount will create it with a root entry 



/bin/rm -f /etc/mtab* /etc/nologin /var/adm/utmp 



# Looks like we have to create this. 



cat /dev/null >> /var/adm/utmp 



# mount file systems in fstab (and create an entry for /) 

# but not NFS because TCP/IP is not yet configured 



# mount所有定义在/etc/fstab内的档案系统,但nfs除外。因为 

# tcp/ip环境的设定是在後面rc.M内完成。 



/sbin/mount -avt nonfs 



# Configure the system clock. 

# This can be changed if your system keeps GMT. 



if [ -x /sbin/clock ]; then 

/sbin/clock -s 

fi 



# Setup the /etc/issue and /etc/motd to reflect the current kernel level: 

# THESE WIPE ANY CHANGES YOU MAKE TO /ETC/ISSUE AND

/ETC/MOTD WITH EACH 

# BOOT. COMMENT THEM OUT IF YOU WANT TO MAKE CUSTOM

VERSIONS. 



# 这一段程式会在每次重新开机时,将/etc/motd、/etc/issue这两 

# 个档写入Slackware的内定值。 



#echo > /etc/issue 

#echo Welcome to Linux `/bin/uname -a | /bin/cut -d\ -f3`. >> /etc/issue 

#echo >> /etc/issue 

#echo "`/bin/uname -a | /bin/cut -d\ -f1,3`. (POSIX)." > /etc/motd 



# Run serial port setup script: 

# (CAREFUL! This can make some systems hang if the rc.serial script isn't 

# set up correctly. If this happens, you may have to edit the file from a 

# boot disk) 



# 执行设定serial port的程式 



/bin/sh /etc/rc.d/rc.serial 

# end of /etc/rc.d/rc.S 

* 上表除中文说明外,节录自slackware 2.1.0之/etc/inittab 

在内定的情形下,我们会以runlevel 5进入系统,因此接著执行 

/etc/rc.d/rc.M。 

#!/bin/sh 



# rc.M This file is executed by init(8) when the system is being 

# initialized for one of the "multi user" run levels (i.e. 

# levels 1 through 6). It usually does mounting of file 

# systems et al. 



# Version: @(#)/etc/rc.d/rc.M 2.02 02/26/93 



# Author: Fred N. van Kempen,  

# Heavily modified by Patrick Volkerding 

 





# Tell the viewers what's going to happen... 



echo "Going multiuser..." 



# Screen blanks after 15 minutes idle time. 



# 设定在15分钟内没有任何动作时,自动关闭萤幕显示 



/bin/setterm -blank 15 



# Start crond (Dillon's crond): 

# If you want cron to actually log activity to /var/adm/cron, then change 

# -l10 to -l8 to increase the logging level. 



# 每个user都可用crontab -e建立一张表格,指定在特定的时间 

 # 执行某些程式,这是由下面的程式来监控 



/usr/sbin/crond -l10 >>/var/adm/cron 2>&1 



# If there's no /etc/HOSTNAME, fall back on this default: 



# 如果没有设定主机名称,下面这段程式会填入内定值 



if [ ! -r /etc/HOSTNAME ]; then 

echo "darkstar.frop.org" > /etc/HOSTNAME 

fi 



# Initialize the NET subsystem. 



# 设定网路系统,後面会再作较详细的介绍 



if [ -x /etc/rc.d/rc.inet1 ]; 

then 

/bin/hostname `cat /etc/HOSTNAME | cut -f1 -d .` 

/bin/sh /etc/rc.d/rc.inet1 

/bin/sh /etc/rc.d/rc.inet2 

else 

/sbin/hostname_notcp `cat /etc/HOSTNAME | cut -f1 -d .` 

/usr/sbin/syslogd 

/usr/sbin/klogd 

/usr/sbin/lpd 

fi 



# Remove stale locks (must be done after mount -a!) 



/bin/rm -f /var/spool/locks/* /var/spool/uucp/LCK..* /tmp/.X*lock 1> 

/dev/null 2> /dev/null 



# Remove stale hunt sockets so the game can start. 



if [ -r /tmp/hunt -o -r /tmp/hunt.stats ]; then 

echo "Removing your stale hunt sockets from /tmp..." 

/bin/rm -f /tmp/hunt* 

fi 



# Update all the shared library links automatically 



/sbin/ldconfig 



# Start the sendmail daemon: 



# 启动信件收发处理程式,每15分钟处理一次待送信件 



if [ -x /usr/sbin/sendmail ]; then 

echo "Starting mail daemon ( sendmail -bd -q 15m )..." 

/usr/sbin/sendmail -bd -q 15m 

fi 



# Load a custom screen font if the user has an rc.font script. 



# 载入自定的萤幕字型 



if [ -r /etc/rc.d/rc.font ]; then 

/etc/rc.d/rc.font 

fi 



# Start the local setup procedure. 



/etc/rc.d/rc.local 

# end of /etc/rc.d/rc.M 

* 上表除中文说明外,节录自slackware 2.1.0之/etc/inittab 

 其他系统档案 

 1. /etc/issue 

   这个档案的内容会在系统显示login:提示之前出现在使用 

   者的virtual console或终端机上。如果是telnet时,系统 

   是显示/etc/issue.net。 

 2. /etc/motd 

    即message of today,会在使用者进入shell之前显示,通 

常是放系统的最新通知事项。 

 3. /etc/mtools 

slackware有一组指令包括mdir,mcopy等,可直接读取DOS 

的磁片、硬碟内档案,这档内必须定义软碟机、硬碟机参 

数。 



# Parameters for the /usr/bin/mtools utilities 



A /dev/fd0 12 0 0 0 # Generic autodetect 

B /dev/fd1 12 0 0 0 # Generic autodetect 

# end of /etc/mtools 

*           *  

*   本文除所注明之Slackware范例外,著作权属陈建业    * 

*       * 

* 1. 未经作者同意,本文不得任意转载          * 

* 2. 在不得任意修改条件下,个人可任意使用本文件    * 

* 3. 在取得作者同意下,欢迎公开陈列本文件        * 

*    * 

* 如有任何建议或更正,欢迎email到vc0328@tpts1.seed.net.tw * 

---------------------------------------------------------------------------

-----Linux服务社 


--
☆ 来源:.哈工大紫丁香 bbs.hit.edu.cn.[FROM: bin@Parker.mtlab.hit]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:209.104毫秒