前见过vi,今日再次领教,最变态的软件。
己经在Ubuntu申请了25张i386的CD,不知能不能给我寄来。
升级本机的内核
$sudo apt-get install linux-k7
安装NVIDIA显卡驱动
apt-get install nvidia-glx
nvidia-glx-config enable
终于搞定GRUB引导Windows启动
在/boot/grub/menu.lst加入
title Windows 95/98/NT/2000
map (hd0) (hd1)
map (hd1) (hd0)
root (hd1,0)
chainloader (hd1,0)+1
启动服务的删除
the services that runs are in /etc/rcX.d folder (where X is 0 -> 6)
运行的服务被放在/etc/rcX.d目录中(在这里X的取值是从0到6)
to add a service (services must be in /etc/init.d folder
添加一个服务(服务必须已在/etc/init.d目录中存在)
sudo update-rc.d nameoftheservice defaults
to remove it
删除一个服务
sudo update-rc.d nameoftheservice remove
to customise it, man update-rc.d and read what is writen there
要定制服务,请参阅man update-rc.d中所写内容。
禁用启动的时候校正系统的时钟
用update-rc.d移去NTPupdate服务
Ubuntu Start-up 服务说明
http://joe.terrarum.net/geek/linux/ubuntu-startup.html(start-stop-daemon)
An important utility to understand first is the Debian utility, start-stop-daemon. It's a simple program that manages starting and stopping running daemons. Each program under /etc/rc2.d utilizes this program to manage their process.
(init-functions)
All services run /lib/lsb/init-functions. This file contains helper functions for the start-stop-daemon program. It helps manage the pid files under /var/run and provides the text-output and logging when the status of a service changes.
(sysklogd)
Sysklogd is the system log daemon. As the description implies, it allows the system to log messages. Options may be specified in the SYSKLOGD variable. The daemon then starts and reads its configuration from /etc/syslog.conf. More information can be found here
(klogd)
Klogd provides kernel logging. Klogd will obtain kernel messages from /proc/kmsg, but if /proc doesn't exist, it will use the system call interface. All kernel messages are routed through syslog which then places them in the /var/log/kern.log file.
(ppp)
This file checks if /etc/ppp/ppp_on_boot exists and if it does, connect to the users ISP.
(portmap)
Portmap converts RPC calls into standard DARPA (tcp/ip) port numbers. This file reads /etc/default/portmap which tells portmap to only run on the local loopback interface.
(acpid)
acpid is a power management daemon. It will sit and read /proc/acpi/event until it receives a whole line. Once then, it checks /etc/acpi/events for a qualifying action for that event. By default, Ubuntu loads the following acpi related modules: battery, ac, processor, button, fan, and thermal. More info can be found here
(alsa)
Alsa is the Advanced Linux Sound Architecture. It reads in some basic settings from /etc/default/alsa then loads up the stored alsa settings. More info can be found here
(apmd)
apmd is another power management daemon. This one really just cares about battery power, system standby, system suspend, and system resume. More info can be found here
(autofs)
autofs controls the automount daemon. autofs reads /etc/auto.master for various mount points of mounting drives.
(cups)
cups is the Common Unix Printing System. It provides and extremely easy system for configuring a printer under linux. More info can be found here
(dbus-1)
dbus is a system for providing Inter Process Communications between two applications. As freedesktop explains, examples of this include a camera being plugged in or file monitoring. More info can be found here
(famd)
famd is the File Alteration Monitor daemon. It provides a system that applications can use to detect when a file changes.
(inetd)
inetd provides a list of services and ports they run on under /etc/inetd.conf. It then listens for requests for those ports, and once received, runs that service.
(makedev)
makedev simply re-creates a symlink from /sbin/MAKEDEV to /dev/MAKEDEV
(postfix)
Postfix is a Mail Transport Agent or MTA. This provides local system mail transportation, and if configured correctly, internet-wide mail transportation. More info can be found here
(powernowd)
powernowd is a client for cpufreq which, as the name implies, controls the CPU frequency. By using this, you may raise the frequency of your cpu when your computer may need the extra power and lower it during idle time. This is especially useful for laptops when heat is concerned.
(rsync)
This would start the rsync daemon on your system but, by default, it is disabled.
(mdadm)
mdadm manages software RAID under linux. More info can be found here
(atd)
atd is the at daemon and manages processes scheduled to run at later times.
(crond)
crond is the cron daemon and manages processes that may be on a repetitive schedule.
(acpi-support)
This is just a helper script for the acpi daemon. Depending on what mode a laptop is in (battery or AC), it will set the systems power accordingly.
(fetchmail)
fetchmail manages retrieving email. This script checks for /etc/fetcmailrc and if it doesnt exist (it doesnt by default), then it does not start. More info can be found here
(gdm)
gdm is the GNOME Display Manager. It starts X Windows and provides a graphical login screen. More info can be found here
(rmnologin)
This script removes the /etc/rmnologin file. rmnologin prevents non-root users from logging in.
(stop-bootlogd)
Just like the name implies, this stops the bootlogd daemon. bootlogd logs all strings sent to the console.
Linux系统各项服务
1、alsasound
Alsa声卡驱动程序支持。Alsa声卡驱动程序本来是为了一种声卡Gravis UltraSound(GUS)而写的,该程序被证 明很优秀,于是作者就开始为一般的声卡写驱动程序。Alsa和OSS/Free 及OSS/Linux兼容,但是有自己的接口,甚至比OSS优秀。
2、amd
运行automount精灵程序,该精灵在必要时自动安装一些本地设备和NFS文件系统。
3、apmd
apmd用来监视系统用电状态,并将相关信息通过syslogd 写入日志。也可以用来在电源不足时关机。
4、arpwatch
该程序主要用来维护以太网物理地址和IP地址的对应关系。
5、atalk
AppleTalk精灵程序。注意不要在后台运行该程序,该程序的数据结构必须在运行其他进程前先花一定时间初始化。
6、atd
运行用户用At命令调度的任务。也在系统负荷比较低时运行批处理任务。
7、autofs
当您需要时自动转载文件系统,而当您不需要时自动卸载。
8、bootparamd
该服务允许老的Sun工作站从Linux网络启动,它和rarp现在很少使用,基本上被bootp和dhcp取代了。
9、crond
cron是Unix下的一个传统程序,该程序周期地运行用户调度的任务。比起传统的Unix版本,Vixie版本添加了不少属性,而且更安全,配置更简单。
10、dhcpd
该精灵提供了对动态主机控制协议(Dynamic Host Control Protocol)的访问支持。
11、gated
gated通过一个数据库提供了网络路由功能支持。它支持各种路由协议,包括RIP版本1和2、DCN HELLO协议、OSPF版本2以及EGP版本2到4。
12、gpm
gpm为文本模式下的Linux程序如mc(Midnight Commander)提供了鼠标的支持。它也支持控制台下鼠标的拷贝,粘贴操作以及弹出式菜单。
13、httpd
http是著名的www服务器,可用来提供HTML文件以及CGI动态内容服务。
14、inetd
因特网操作服务程序。监控网络对各种它管理的服务的需求,并在必要的时候启动相应的服务程序。通常,inetd管理的程序有telnet、ftp、rsh和rlogin。关闭inetd也就关闭了这些由它管理的服务。
15、innd
inn是最流行的用户组新闻服务器。它允许您建立起本地新闻服务器。配置有一定的难度,可以先阅读/usr/doc/ inn*文档获得帮助。
16、keytable 该程序的功能是转载您在/etc/sysconfig/keyboards里说 明的键盘映射表,该表可以通过kbdconfig工具进行选 择。您应该使该程序处于激活状态。
17、ldap
LDAP代表Lightweight Directory Access Protocol,实现了目录访问协议的行业标准。
18、linuxconf
linuxconf是Linux下的一个有效的系统配置工具,该服务允许远程运行。
19、lpd
lpd是系统打印守护程序,负责将lpr等程序提交给打印作业。
20、mcserv
Midnight Commander服务进程允许远程机器上的用户通过Midnight Commander文件管理器操作本机文件。服务进程用PAM来验证用户,需要给出“用户名/口令”以通过验证。
21、mysql
一个快速高效可靠的轻型SQL数据库引擎。
22、named
域名服务器,将Internet主机名解析为点分的IP地址。
23、netfs
负责装载/卸载NFS、Samba、NCP(Netware)文件系统。
24、network 激活/关闭启动时的各个网络接口。
25、nfs
NFS是一个流行的基于TCP/IP网络的文件共享协议。该服务提供了NFS文件共享服务,具体的配置在/etc/ exports文件里。
26、nscd
该服务负责密码和组的查询,并且缓冲查询结果。如果您的系统有比较慢的服务(如NIS和NIS+),则应该启动该服务。
27、pcmcia
pcmcia主要用于支持笔记本电脑。
28、portmap
portmap用来支持RPC连接,RPC被用于NFS以及NIS等服务。
29、postgresql
PostgreSQL关系数据库引擎。
30、proftpd
proftpd是Unix下的一个配置灵活的ftp守护程序。
31、radvd
路由广播程序。
32、random
保存和恢复系统的高质量随机数生成器,这些随机数是系统一些随机行为提供的。
33、routed
该守护程序支持RIP协议的自动IP路由表维护。RIP主要使用在小型网络上,大一点的网络就需要复杂一点的协议。
34、rstatd
Rstat协议允许网络上的用户获得同一网络上各机器的性能参数。
35、rusersd
该服务使网络用户可以定位同一网络上的其他用户。
36、rwalld
Rwall协议允许远程用户向在同一系统中活跃着的终端发送消息,类似wall的本地行为。
37、rwhod
允许远程用户获得运行rwho精灵的机器上所有已登录用户的列表,与finger类似。
38、sendmail
大名鼎鼎的邮件服务器。
39、smb
启动和关闭smbd和nmbd精灵程序以提供SMB网络服务。
40、snmpd
简单网络管理协议(SNMP)的守护精灵。
41、syslog
syslog是操作系统提供的一种机制,守护程序通常使用这种机制将各种信息写到各个系统日志文件。通常应该启动该服务。
42、xfs
X的字体服务器。
43、ypbind
NIS/YP的客户端守护程序。如果您需要使用NIS/YP机器,请启动这项服务,否则,关闭这项服务。
44、yppasswd
让NIS用户能够修改密码。运行在NIS域的服务器上。客户端程序同样也叫yppasswd。
45、ypserv
标准NIS/YP网络协议的一个实现。允许主机名,用户名和其他信息分布于网络各端。运行在NIS服务器上,客户端不需要。
Fedora core 2启动服务详解
http://www.gbunix.com/htmldata/2005_06/1/3/article_1227_1.html最近笔者重装了一遍Fedora core 2,安装类型为Workstation,没有安装X-Window环境。安装完毕后,执行ntsysv对系统所有的启动服务进行设置,发现有一些服务比较陌生,所以就就写了这篇文章,对系统所有的启动服务进行一个简单的总结,希望和大家一起来分享。
服务名称
含义
acpid
配置文件:/proc/acpi/event
预设端口:无
说明:Advanced Configuration and Power Interface,为替代传统的APM电源管理标准而推出的新型电源管理标准。
是否需要启动:如果你需要对电源进行管理,那就需要启动。
anacron
配置文件:/etc/anacron
预设端口:无
说明:一个自动化运行任务。Red Hat Linux 随带四个自动化任务的工具:cron、 anacron、at、和 batc。当你的Linux主机并不是全天候开机,这个anacron就可以帮你执行在“crontab”设定的时间内没有执行的工作。举例来说,当你的主机在晚上12:00会自动关闭,但是偏偏crontab这个例行性工作是在4:00工作,这个时候例行性工作就不能起作用了。不过利用anacron就能做到。
是否需要启动:如果主机已经24小时开机,而且运行了cron,那么这个守护程序就不需要启动了。
apmd
配置文件:/etc/sysconfig/apmd
预设端口:无
说明:Advanced Power Management,高级电源管理。传统的电源管理标准。一般系统都会同时支持APM和APMD两种标志,但系统加载时只需加载一个即可。对于笔记本电脑比较有用,可以了解系统的“电池电量”。
是否需要启动:如果我们使用的是台式电脑或一直开机的机型,就不需要使用这个守护程序。
atd
配置文件:/etc/at.allow,/etc/at.deny
预设端口:无
说明:一个自动化运行任务。
是否需要启动:通常需要启动。不过如果你一直使用cron,那么也可以不启动。
autofs
配置文件:/etc/rc.d/init.d/autofs
预设端口:无
说明:实现光盘、软盘的自动加载。
是否需要启动:一般不需要启动。
chargen
chargen-udp
预设端口:TCP/UDP 19
说明:Character Generator Protocol,一种网络服务,主要功能是提供类似远程打字的功能。
更多细节:http://www.networksorcery.com/enp/RFC/Rfc864.txt
是否需要启动:为安全起见,尽量关闭这个服务。
cpuspeed
说明:监测系统空闲百分比,降低或加快CPU时钟速度和电压从而在系统空闲时将能源消耗降为最小,而在系统繁忙时最大化加快系统执行速度。
更多细节:
http://altlinux.org/index.php?module=sisyphus&package=cpuspeed
是否需要启动:需要启动。
crond
配置文件:/etc/crontab
预设端口:无
说明:用来执行例行性命令的守护程序。
是否需要启动:必须启动。
cups
配置文件:
CUPS服务器配置文件:/etc/cups/cupsd.conf
CUPS客户端配置文件:/etc/cups/client.conf
CUPS打印机配置文件:/etc/cups/printers.conf
CUPS中类(class)配置文件:/etc/cups/classes.conf
说明:Common UNIX Printing System,公共UNIX打印支持,为Linux提供打印功能。
是否需要启动:如果不安装打印机,就不需要启动。
cups-lpd
预设端口:无
说明:CUPS Line Printer Daemon ("LPD"),提供打印功能。
是否需要启动:如果不安装打印机,就不需要启动。
daytime
daytime-udp
预设端口:TCP 13
说明:Daytime协议(RFC867)是一个简单的协议,为客户机实现从远程服务器获取日期和时间的功能。
是否需要启动:不用启动。
echo
echo-udp
预设端口:7
说明:服务器回显客户数据服务。
是否需要启动:不用启动。
gpm
配置文件:/etc/sysconfig/mouse
预设端口:无
说明:General Purpose Mouse Daemon ,gpm为文本模式下的Linux程序如mc(Midnight Commander)提供了鼠标的支持。它也支持控制台下鼠标 的拷贝,粘贴操作以及弹出式菜单。
是否需要启动:没必要的话,建议不要启动。
iptables
说明:防火墙。
是否需要启动:必须启动。
irda
Infrared Data Association,是一个实现红外无线数据传输的工业标准。
irqbalance
对多个系统处理器环境下的系统中断请求进行负载平衡的守护程序。
是否需要启动:如果你只安装了一个CPU,就不需要加载这个守护程序。
isdn
Integrated Services Digital Network,综合数字服务网络。提供对isdn设备的支持。
kudzu
配置文件:
/etc/sysconfig/hwconf
/etc/sysconfig/kudzu
说明:硬件自动检测程序,会自动检测硬件是否发生变动,并相应进行硬件的添加、删除工作。当系统启动时,kudzu会对当前的硬件进行检测,并且和存储在 /etc/sysconfig/hwconf中的硬件信息进行一一对照,如果某个硬件从系统中被添加或者删除时,那么kudzu就会察觉到,并且通知用户是否进行相关配置,然后修改/etc/sysconfig/hwconf,使硬件资料与系统保持同步。如果/etc/sysconfig/hwconf这个文件不存在,那么kudzu将会从/etc/modprobe.conf,/etc/sysconfig/network-scripts/和 /etc/X11/XF86Config中探测已经存在的硬件。
是否需要启动:如果启动kudzu,则每次启动系统,都会检查新硬件(checking new hardware),会延长系统启动的时间。如果你不打算增加新硬件,那么就可以关闭这个启动服务,以加快系统启动时间。
mdmonitor
与RAID设备相关的守护程序。
mdmpd
与RAID设备相关的守护程序。
messagebus
D-BUS是一个库,为两个或两个以上的应用程序提供一对一的通讯。
dbus-daemon-1是一个应用程序,它使用这个库来实现messagebus守护程序。多个应用程序通过连接messagebus守护程序可以实现与其他程序交换信息。
更多细节:
http://www.freedesktop.org/software/dbus/doc/dbus-daemon-1.1.html
microcode_ctl
可以编码以及发送新的微代码到kernel以更新Intel IA32系列处理器(Pentium Pro,PII,PIII,Pentium 4,Celeron, Xeon 等等 – 全部 P6 以及更高,不包括 pentium classics)。
更多细节:
http://www.urbanmyth.org/microcode/
http://microcodes.sourceforge.net/
netdump
News Backup Dump Server,远程备份服务器。
netfs
Network Filesystem Mounter,安装和卸载NFS、SAMBA和NCP网络文件系统。
netplugd
配置文件:
/etc/netplug/netplugd.conf
/etc/netplug.d/netplug
说明:network cable hotplug management daemon,netplugd是一个守护程序,可以监控一个或多个网络接口的状态,当某些事件触发时运行一个外部脚本程序。
更多细节:http://people.debian.org/~enrico/netplugd.html
network
在系统启动时激活所有的网络接口。
nfs
网络文件系统。
nfslock
NFS是一个流行的通过TCP/IP网络共享文件的协议,此服务提供了NFS文件锁定功能。
ntpd
配置文件:/etc/ntp.conf
说明:Network time Protocol daemon,网络时间校正协议。简单的说,NTP是用来使系统和一个精确的时间源保持时间同步的协议。
推荐大家看一篇文章:《NTP-让网络里的电脑时间精确到毫秒》
发表在2004年12月份的《在线技术》杂志第63页
pcmcia
Pcmcia卡,支持笔记本电脑的PCMCIA 设备,如调制解调器, 网络适配器, SCSI卡等等。
portmap
Portmap守护程序为RPC服务,如NIS和NFS提供动态端口的分配。
psacct
包括几个工具用来监控进程活动的工具,包括ac,lastcomm, accton 和sa。
random
说明:快速的将系统的状态在随机的时间内存到景象档案中,对于系统相当重要。因为在开机之后,系统会迅速的恢复到开机之前的状态。
是否需要启动:必须启动。
rawdevices
在使用集群文件系统时用于加载raw设备的守护程序。
readahead
readahead_early
配置文件:/etc/readahead.early.files /etc/readahead.files
说明:readahead和readahead_early是在Fedora core 2中最新推出的两个后台运行的守护程序。其作用是在启动系统期间,将启动系统所要用到的文件首先读取到内存中,然后在内存中进行执行,以加快系统的启动速度。而上面两个配置文件就保存着将要读取到内存的文件列表。
rhnsd
Red Hat 网络服务。通知你有关官方的安全信息以及为你的系统打补丁。
rpcgssd
rpcidmapd
rpcsrcgssd
说明:gestion NFS v4,是Linux 2.6内核新添的功能。
是否需要启动:不需要启动。
rsync
remote sync,远程数据备份工具。
saslauthd
使用SASL的认证守护程序。
sendmail
邮件服务器。
services
一个内部xinetd服务,用于监听活动的服务。
sgi-fam
实现实时数据镜像。监控文件的变更,提供一个应用程序API接口用来当指定的文件火目录改变时及时通知。
smartd
Self Monitor Analysis and Reporting Technology System,监控你的硬盘是否出现故障。
sshd
配置文件:
OpenSSH服务器配置文件:/etc/ssh/sshd_config
OpenSSH客户端配置文件:/etc/ssh/ssh_config
预设端口:22
说明:Secure Shell Protocol,实现安全地远程登陆管理主机。
是否需要启动:如果想实现远程管理,就需要启动。
syslog
配置文件:/etc/syslog.conf
说明:记录所有的系统行为。
是否需要启动:必须启动。
time
从远程主机获取时间和日期,采用TCP协议。
time-udp
从远程主机获取时间和日期,采用UDP协议。
vncserver
VNC (Virtual Network Computing,虚拟网络计算),它提供了一种在本地系统上显示远程计算机整个“桌面”的轻量型协议。
更多细节:http://www.realvnc.com/
xfs
预设端口:TCP 7100
说明:x font server,X Window字型服务器,为本地和远程X服务器提供字型集。
是否需要启动:如果使用run-level为5的图形界面,那么就需要启动。
xinetd
配置文件:/etc/xinetd.conf
说明:xinetd作为inetd的后续版本,负责管理系统中不频繁使用的服务,这些服务程序在有请求时才由xinetd服务负责启动运行,一旦完成服务请求服务程序结束运行,这样可以有效地减少对系统资源的占用率。通常,xinetd管理的程序有telnet、ftp、rsh和rlogin。关闭inetd也就关闭了这些由它管理的服务。
更多细节:http://www.xinetd.org/
是否需要启动:必须启动。
yum
配置文件:/etc/yum.conf
说明:Yellow Dog UpdaterModified,是一个自动更新、安装和删除RPM软件包的管理程序,它会自动计算软件包的管理程序,并判断哪些软件应该安装,哪些软件则不必安装。
更多细节: http://linux.duke.edu/projects/yum/
是否需要启动:以系统管理策略而决定是否启动。
一口气写了这么多服务,想必大家也看累了吧。大家再检查一下,还没完。众所周知,为了系统的安全起见,我们不可能把所有的服务都启动了。越简单就越安全,一个系统安装完毕后,我们只需要启动一些必备的服务以保证系统能够正常使用就行了,其余用不到的服务可以暂时关闭。下面是我列出的需要启动的服务。另,本人水平有限,仅供参考。
acpid:提供高级电源管理。
cpuspeed:可以提高系统运行效率。
crond:执行例行性程序。
Iptables: 防火墙。
Kudzu:自动检测硬件的变更。
Network: 激活网络接口。
Random:加快系统的启动。
Readahead和Readahead_early:加快系统的启动。
Syslog:把各类事件写入日志。
另外,还有一些服务笔者还是不太明白,希望大家能帮我解答。这些服务有:mdmonitor、mdmpd、messagebus、netplugd、 random、rpcgssd、rpcidmapd、rpcsrcgssd、sgi-fam、smartd。如有新的体会,我会继续修改这篇文章的。
参考文献
[1] 《Linux Daemons and Services》 http://www.sorgonet.com/linux/linuxdaemons/
[2] 《鸟哥的Linux私房菜》 http://www.vbird.org
[3] 《Red Hat Linux 9 系统管理
GRUB的使用?
什么是启动管理器?
启动管理器是存储在磁盘开始扇区中的一段程序,例如,硬盘的MBR(Master Boot Record),在系统完成启动测试后,如果系统是从MBR启动,则BIOS(Basic Input/Output System)将控制传送给MBR。然后存储在MBR中的这段程序将运行。这段程序被称为启动管理器。它的任务就是将控制传送给操作系统,完成启动过程。
有许多可用的启动管理器,包括GNU GRUB (Grand Unified Boot Loader), Bootmanager, LILO (LInux LOader), NTLDR (boot loader for Windows NT systems),等等。下面我将讨论GNU GRUB以及它的使用方法。
什么是GRUB?
GRUB是一款功能强大的启动管理器,它能加载多种操作系统,例如Windows, DOS, Linux, GNU Hurd, *BSD,等等。
目前,LILO是最流行的启动管理器,被用来管理多个系统的引导。但是,如果使用了LILO,你必须记住,当你每次改变了它的配置或安装了新的内核,都要重新运行一下LILO。而且,LILO的灵活性也逊色于GRUB。
GRUB使用灵活。它的最新版本,0.5.96.1,支持的文件系统包括ext2(Linux使用的一种文件系统),FFS(Fast File System used by *BSD UNIX),ReiserFS(一种为Linux开发的新型日志文件系统,以被融入2.4.1内核中,minix(一种为MINIX系统开发的老式文件系统,在早期的Linux中也使用)。使用GRUB,你甚至不用引导操作系统,就能“看”到这些文件系统。例如,假如你想查看一下存放在文本文件中的日期和时间,而又不想引导整个操作系统,你可以使用GRUB shell(提示“grub>”),键入如下命令:
grub> cat (partition number)/home/god/2003106110531.htm.txt.
你可以看到与文件有关的所有信息,包括日期和时间。
GRUB最好的应用是,你可以方便的引导不在列表中的任何分区上的任何内核。例如,如果你没有将新编译的内核加在启动列表中,而你又需要引导它,你可以将它先加在列表中,重新启动后使用。但是使用GRUB后,可以简单到只使用GRUB shell就可以加载所需要的内核映象。
现在我将解释使用GRUB的三个基本步骤:编译、安装和配置。
第一步:编译和安装GRUB
可以从ftp://alpha.gnu.org/pub/gnu/grub 下载GRUB的源代码。
可以用命令“tar -xvzf 2003106110531.htm.tar.gz”解开压缩文档。我得到的文件是grub-0.5.96.1.tar.gz,所以我这样做:
# tar -xvzf grub-0.5.96.1.tar.gz
这个命令将解开的文件和目录放在一个名为grub-0.5.96.1的目录中。现在运行如下命令:
[root@heaven ~/grub-0.5.96.1 ]# ./configure
如果你想定制GRUB,使之包含流行的文件系统和对网卡的支持,或者删除你不需要的网卡,可以运行如下命令:
[root@heaven ~/grub-0.5.96.1 ]# ./configure --help
这个命令将输出所有的命令选项。现在可以使用—enable和—disable选项增加或删除对特定网卡的支持。(注意:GRUB支持网络启动)
为了开始编译过程,键入如下命令:
[root@heaven ~/grub-0.5.96.1 ]# make
为了将所有文件进行正确的安装,键入命令:
[root@heaven ~/grub-0.5.96.1 ]# make install
至此你已经为安装GRUB真正做好了准备。
将GRUB的相关文件保存在诸如/boot/grub的目录中不失为一个好主意。为此,按如下步骤:
1.默认状态下,GRUB所有文件将安装在/usr/share/grub/i386-pc或者/usr/local/share/grub/i386-pc目录下,这只取决于你的shell变量的设置。
2.建立一个叫做/boot/grub的目录,然后拷贝下列文件到这个目录:
stage1
stage2
*_stage1_5
稍候我将解释这些文件。同时也要把GRUB(可能在/usr/sbin或者/usr/local/sbin目录下)拷贝到/boot/grub目录下。
安装GRUB之前,你需要了解GRUB是怎样识别你的硬盘和分区信息的。首先,计数是从0开始的,而不是从1。在Linux中,你的连接到主控制器上的第一块硬盘被称为“had”。在GRUB中即为“hd0”。同样的,在GRUB中,你的第一个软驱是“fd0”。这样,第一块硬盘上的第一、二、三个分区分别为“hd0,0”、“hd0,1”、“hd0,2”。注意:逗号是GRUB分区命名法的必要组成部分。
为了将逗号隔开的部分整合在一起,需要使用括号。例如:(hd0,0) (hd0,1) (hd0,2)等等。(hd0,0)是第一块硬盘上的第一个分区。类似的,(hd1,5)是第二快硬盘上的第六个分区,(hd2,0)是第三块硬盘上的第一个分区。
message. This may take a long time.
第二步:安装GRUB
安装GRUB可以分为三个单独的步骤:
1.将“stage1”安装到MBR中。
2.设置“stage2”的地址或者位置。
3.设置一个菜单或选项,用来决定启动哪一个操作系统。
使用下面的命令开始安装GRUB。
[root@heaven /boot/grub ]# ./grub
这个命令根据BIOS的设置检测硬件设备,同时产生一些输出信息。这会花较长的时间。
end_request: I/O error, dev 02:00 (floppy), sector 0
GRUB version 0.5.96.1 (640K lower / 3072K upper memory)
注意:虽然它让人感到非常惊奇,GRUB确实有简洁的界面—就象支持行编辑一样。TAB列出可能的命令列表。其它情况下TAB会列出设备或文件名。看到这些你会很惊奇吧。类似下面的提示会出现:
grub>
现在,我假设你将Linux安装在了第一块硬盘的第一个扩展分区中或者/dev/hda5中。记住GRUB的命名规则,将上面的名字改为(hd0,4)。键入下面的命令:
grub> install (hd0,4)/boot/grub/stage1 (hd0) (hd0,4)/boot/grub/stage2 p (hd0,4)/boot/grub/menu.conf
现在让我们分析一下这个命令的细节。
install
一个内置的命令,它告诉GRUB将(hd0,4)/boot/grub/grub/stage1安装到hd0的主引导纪录中。
(hd0,4)/boot/grub/stage2
告诉GRUB stage2映象的位置。
p with the the following options: (hd0,4)/boot/grub/menu.conf
为菜单的显示设置配置文件。稍候我将讨论这个配置文件的结构。
下面是对这个命令用法的总结:
1.nstall
2.ource_of_stage1
3.where_to_install
4.source_of_stage2
5.p source_of_configuration_file
现在,你完成了硬盘上的基本安装工作。
在软盘上的安装:
为了在软盘上安装GRUB,你要会用“dd”命令,并且了解它是如何工作的。为了做一张GRUB启动盘,你要将stage1和stage2文件放到软盘的开始扇区中。
安装stage1到软盘上:
插入一张已格式化的软盘,键入命令:
[root@heaven /boot/grub ]# dd if=stage1 of=/dev/fd0 bs=512 count=1
命令的详细说明如下:
if=input file
i.e., stage1
of=output file
i.e., floppy drive (this may be different on your computer)
bs=bytes to read and write
Here it is 512 bytes.
count=how many times to perform this operation
每次拷贝“bs”数目的块到目标地址。
安装stage2到软盘
[root@heaven /boot/grub ]# dd if=stage2 of=/dev/fd0 bs=512 seek=1
这里的步骤同stage1的相同,除了一个seek选项外。Seek选项将调过一个“bs”。例如,在上面的命令中bs的值是512,这样seek=1意味着将跳过软盘上前512个字节,从513字节开始。这将使得第一步操作不会覆盖stage1的前512字节。
现在你完成了基本的软盘驱动器安装。
第三步:配置GRUB
在这一节,我们来看一下如何在启动后进入各种操作系统,如何建立menu.conf文件。
我们就从GRUB支持的启动过程开始。可以有两种方法来完成启动过程:
·A.通过调用内核本地启动
·B.连续启动或者将控制转给另一个引导器
A模式启动过程
1.置跟设备或者告诉GRUB你的根文件系统。
2.诉GRUB你的内核影像的位置,然后将参数传送给内核。
3.重新启动,试一下。
为了启动Linux,我将内核以bzImage的文件名放在/boot/目录中,跟文件系统是/dev/hda5,或者GRUB中的(hd0,4)。我的启动过程如下:
1.root (hd0,4) [This sets the root partition]
2.kernel /boot/bzImage root=/dev/hda5 [This sets the kernel]
B模式启动过程(这种模式假设当前的分区中安装了另一个启动管理器,例如LILO或者NTLDR):
1.设置根分区但不要安装它
2.激活这个分区
3.配置需要启动的分区的第一个扇区
4.重新启动,看一下效果。
我们在试试启动安装在/dev/hda1或者(hd0,0)的widows。启动windows的过程如下:
1.rootnoverify (hd0,0)
2.makeactive
3.chainloader +1 [+1 sets the first sector of the current root partition]
4.boot [transfers the control and quits GRUB]
menu.conf文件:它用于建立启动多操作系统时的菜单。建立menu.conf并不难。它使用简单的英语,就象你在这一节看到的那样。
所有的菜单项目都以没有逗号分隔的“title TITLENAME”开头。你可以随意设置TITLENAME。
设置Linux启动菜单步骤如下:
1.设置标题
2.设置根分区
3.设置内核的相应参数
4.启动
一个菜单例子:
title Debian GNU/Linux 2.2 kernel 2.4.1
root (hd0,4)
kernel /boot/bzImage.2.4.1
boot
#----
前面有#的行是一个注释。
建立启动Windows 或者 DOS的菜单:
title Windoze
rootnoverify (hd0,0)
makeactive
chainloader +1
boot
#----
如果你安装了两个版本的Windows—一个是你自己用的,另一个给你的家人用的—这样第二个就无法安装,因为有提示说Windows已经安装了。
有一种简单的方法可以安装两个版本的Windows,即在启动时隐藏一个分区而使用另一个。你甚至可以为你的分区设置密码保护,这样可以避免别人错误的加载你的分区。下面介绍如何完成两个Windows的安装,hda1和hda2 或者 (hd0,0) 和 (hd0,1),用到的命令有lock, password, hide 和 unhide。
建立windows 项目"My Entry":
title My Entry
lock
unhide (hd0,0)
hide (hd0,1)
rootnoverify (hd0,0)
makeactive
chainloader +1
boot
#----
为了更好的使用lock命令,你需要在配置文件开头使用password命令。Password命令的语法如下:password secret(“secret”就是密码)。任何时候你都可以通过按p键儿输入密码。
建立Windows 项目"Family Entry"
title Family Entry
unhide (hd0,1)
hide (hd0,0)
rootnoverify (hd0,1)
makeactive
chainloader +1
boot
----
任何人都可以启动这个项目,而无须输入密码。
这有一个使用password命令的有趣的窍门。为了在缺省菜单列表或配置文件中隐藏某些项目,你可以使用下面的命令加载一个定制的列表:
password secret
在这个命令中,“secret”是密码,而/boot/grub/secret-list.conf是密码文件。这样做之前,你要先进入到根目录或者给出全路径名。例如:
password secret (hd0,4)/boot/grub/secret-list.conf
还有一个更重要的命令是“map”。当你有两块硬盘,一个无法从第二块硬盘启动的操作系统,例如Windows,就可以使用map命令。例如,你能够将hd0映射为hd1,将hd1映射为hd0。换句话说,你可以虚拟的交换两个硬盘而启动所需要的操作系统。命令形式如下:
grub> map (hd0) (hd1)
grub> map (hd1) (hd0)
启动FreeBSD:
title FreeBSD 4.0
root (hd0,4,a)
kernel /boot/loader
boot
#----
这里我们调用了FreeBSD的启动管理器。Root (hd0,4,a)由四个参数,是因为FreeBSD对一个单独分区进行了虚拟分割。我们称根分区为“a”。如果FreeBSD占据了整个第二块硬盘,这里就应该是root (hd0,a)。这样,就不是调用内核而是调用FreeBSD的启动管理器,它要比调用内核更易使用。
(注意:我推荐在使用OpenBSD和GNU/Hurd之前,要先试一下链式加载。)
现在你已经完成了基本的GRUB编译、安装和配置。你对GRUB了解的越多,就越会发现GRUB是一种控制启动的易用和高效的方法。
各种GRUB命令:
default xx
表明xx是缺省的启动项目
timeout yy
表明在yy秒后缺省启动项目将启动
fallback zz
在第一个启动项目失败后,过了timeout时间后,就将启动zz项目。
color
这个命令将生成彩色菜单。它的语法是:color normal current_selection。这两个域都可以有两个值,形如foreground/background。例如:
color green/black or light-gray/blue
你也可以使用相关的数字。
记住:所有的值都是从0开始,所以0是第一个。
在我的下一篇文章中,我将会讲到对GNU/Hurd and OpenBSD的测试,也许还有一些网络启动的内容。但是你必须要等至少三个月或更多的时间,到是我会谈一下我的测试结果。等着看吧。
打造Ubuntu下的SLAMP
现在LAMP(Linux+Apache+Mysql+PHP)架站模式是越来越流行了,几乎都可以说是成为了架站的时尚了。但常言道树大招风,相应的安全问题也就随之而来了,象层出不穷的SQL脚本注入(SQL Injection)及CSS跨站脚本攻击(Cross Site Script)等让人不厌其烦。那么有没有什么好的方法来尽量减少这方面的危险呢?甚至在事发之后可以有效的进行日志反查以明白其攻击手法为日后响应做准备呢?答案是肯定的!其实这已经不再属于局限于架站而更多属于安全的范畴了,也就是如标题所言要如何建立一个SLAMP(Security)服务器了。
本来是想利用makejail包做一个chroot环境的。但由于makejail包只在基于Debian woody的Apache 1.3.22 上做过测试,而由于没有时间,本人暂时也还没做过基于Ubuntu 5.04上的Apache2的测试,所以不敢妄语,有哪位朋友做过或有类似方式的话,还请不吝赐教!好了废话少说,下面就开始我们的安全架站之旅了。本文的所有操作在Ubuntu 5.04发行版上测试通过。具体步骤如下:
1.将系统更新到最新状态,在做任何操作之前都要做这一步,以确保系统的稳定,同时也不会有一些莫名其妙的现象出现。
$sudo apt-get update
$sudo apt-get upgrade-dist
2.架设LAMP服务器
$sudo apt-get apache2 mysql-server php4 php4-gd php4-mysql
3.配置LAMP服务
a) 我们编辑/etc/php4/apache2/php.ini文件,先做一般配置,在改动之前,请先将该配置文件做个备份。以便在出错的时候可以恢复。
>memory_limit = 8M =>修改成你所需的内存大小
>upload_max_filesize = 2M =>修改文件最大上传尺寸
>extension=mysql.so
>extension=gd.so =>将你要用到模块前面的注释给去掉
b) 这样LAMP服务就算是架设完成了,下面就要对该架构进行安全加固了。
4.编辑/etc/apache2/apache2.conf文件,在改动之前,请先将该配置文件做个备份。以便在出错的时候可以恢复。
>AddDefaultCharset ISO-8859-1 =>AddDefaultCharset GB2312
6.然后开始加固php,我们再次编辑/etc/php4/apache2/php.ini文件,之所以没有一次改完,主要是为了给大家一个清晰的思路。
>#打开安全模式,打开他的好处就是PHP文件只能访问所有者和PHP文件所有着一样的文件,即使在chroot环境下也无法访问jail中属主不一样的 文件,类似于php shell这样的后门就没用武之地了哦,phpshell是很流行的php后门,他可以执行系统命令,就象他的名字一样,和shell很接近。
>safe_mode = On
>#上面的设置就限制了fopen(), file()等函数可以操作的目录范围,避免了入侵者非法读取文件,一定要在/var/www后面加"/",否则/var/wwww下的文件也能被访问 。
>open_basedir = /var/www/
>#禁止使用phpinfo和get_cfg_var函数,这样可以避免泄露服务信息,一般在在确认PHP能正常工作之后再使之关闭
>disable_functions = phpinfo,get_cfg_var
>#设置php程序错误日志
>error_reporting = E_ALL
>log_errors = On
>error_log = /var/log/php_err.log
>#如果php程序没有指明需要register_globals的话,最好把register_globals设置为Off,这样可以避免很多安全问题的。注意,如果你的程序是需要register_globals的话,可千万别关。Ubuntu默认是关闭的。
>register_globals = Off
>#禁止打开远程地址,记得最近出的php include的那个漏洞吗?就是在一个php程序中include了变量,那么入侵者就可以利用这个控制服务器在本地执行远程的一个php程序,例如phpshell,所以我们关闭这个。
>allow_url_fopen = Off
7.这样PHP的安全优化就做好了,下面做MySQL的安全优化。
a)在Ubuntu下用apt装的mysql默认是禁止从网络连接MySQL的,我们可以从/etc/mysql/my.cnf文件中看到有skip-networking语句的,如果你做的是MySQL服务器的话,那么是要将其注释掉的,这样其他机器才能访问你这台机器,如果该服务仅供本机使用的话,那么就保持原状,这样别的机器不能访问你这台机器的MySQL。由于这里是做在一起的,所以保持不变好了。
b)然后我们给mysql设置一个密码并修改管理员用户名(默认是root),但一定得记得,无论怎么样修改密码,都会有记录的,如果通过mysqladmin修改,shell的历史记录会有的,如果登陆了mysql之后再修改,在 ~/.mysql_history会记录的,所以我们一定得处理这两个历史记录文件,我们把他们删了,再从/dev/null做个软连接过来就可以解决问题了。注意由于我们会在SHELL下用的是sudo,所以该历史是保存在本用户目录下的,而不是在根用户目录下的。而mysql也是在本用户目录下使用的,所以也是保存在本用户目录下的。如果你觉得不能记忆历史记录麻烦的话,也可以在用到了MySQL的Root用户之后,进入这两个文件中,将相关语句删除。
$rm .bash_history
$rm .mysql_history
$ln -s /dev/null .bash_history
$ln -s /dev/null .mysql_history
c)然后我们删除多余的数据库并去掉匿名帐号
[root@debian ~]mysql -u root -p
Enter password:XXXXXX
mysql> drop database test;
mysql> use mysql;
mysql> delete from db;
mysql> delete from user where user = '';
mysql> delete from user where not(host="localhost") and user="root";
mysql> flush privileges;
d)然后修改默认的管理员帐号root为你喜欢的,我这里改成myadmin
mysql> update user set user="myadmin" where user="root";
mysql> flush privileges;
这样就可以通过myadmin而不是root用户名来访问MySQL数据库了!
8.现在我们安装mod-security。
a)首先安装libapache2-mod-security包
$sudo apt-get install libapache2-mod-security
b)该模块默认是没激活的,我们可以在/etc/apache2/mods-available目录下看到有mod-security.load文件,但在/etc/apache2/mods-enabled目录却没有它的软链接。我们现在激活它:
$sudo ln -s /etc/apache2/mods-available/mod-security.load /etc/apache2/mods-enabled/mod-security.load
$sudo cp /usr/share/doc/libapache2-mod-security/examples/httpd2.conf.example-full /etc/apache2/mods-available/mod-security.conf
$sudo vi /etc/apache2/mods-available/mod-security.conf,老规则改动之前先做好备份。
># 检测内容长度以避免堆溢出攻击
>SecFilterForceByteRange 32 254 =>SecFilterForceByteRange 32 126
># debug设置
>SecFilterDebugLevel 9 =>SecFilterDebugLevel 0
># 设置缺省的动作
>SecFilterDefaultAction "deny,log,status:499" =>SecFilterDefaultAction "deny,log,status:404"
># 把设置传递给子目录
>SecFilterInheritance Off
># Redirect user on filter match
># 当匹配sh的时候,重新定向到一个特殊的警告页面,该页面是自行编写的,写些警告的话让攻击者知难而退,该段先不要生效,等到相关配置配好之后再失效不迟。记住在配好之后要使之生效。
>#SecFilter sh redirect:http://localhost/hack/warning.htm
># Prevent OS specific keywords
>#过滤一些敏感的东西,我们使用*是为了攻击者使用/etc/./passwd来绕开检测
>SecFilter /etc/passwd =>SecFilter /etc/*passwd
>SecFilter /bin/*sh
># Very crude filters to prevent SQL injection attacks
># 防止SQL插入(SQL Injection)攻击
>SecFilter "delete[[:space:]]+from"
>SecFilter "insert[[:space:]]+into"
>SecFilter "select.+from"
>SecFilter "select[[:space:]]+from"
>SecFilter "union[[:space:]]+from"
$sudo ln -s /etc/apache2/mods-available/mod-security.conf /etc/apache2/mods-enabled/mod-security.conf
c)重启Apache2服务即可。
$sudo /etc/init.d/apache2 restart
grub的用法
以前用的NT Loader来加载LILO启动Linux, 用得也挺好; 不过看到grub那么漂亮
界面,就喜新厌旧了,
系统安装有: Windows xp, Linux Redhat 7.2
C:\ 对应于Linux中 /dev/hda
Linux ROOT 为Linux中 /dev/hda4
硬盘分区情况:
/dev/hda1 * 1 261 2096451 6 FAT32 (WINNT xp)
/dev/hda2 262 783 4192965 5 Extended
/dev/hda3 784 792 72292+ 82 Linux swap
/dev/hda4 793 1027 1887637+ 83 Linux (Redhat 7.2)
/dev/hda5 262 522 2096451 7 HPFS/NTFS
/dev/hda6 523 783 2096451 7 HPFS/NTFS
1. 安装grub
我用的grub是Redhat7.2带的grub安装包: grub-0.90-11.i386.rpm
安装: rpm -ivh grub-0.90-11.i386.rpm
其他安装方式也一样,只要你安装上grub就行了.RH7.2缺省用的grub, 1,2步骤可以
省了.
2. 建立grub的环境
cp /usr/share/grub/i386-redhat/* /boot/grub
3. 生成grub的配置文件/boot/grub/menu.conf
menu.conf的内容如下:
######### beginning of menu.conf ####################
default=1
timeout=4
#splashimage=(hd0,3)/boot/grub/splash.xpm.gz # 想要漂亮的启动画面,去掉行首"#"
title Red Hat Linux (2.4.12)
root (hd0,3)
kernel /boot/vmlinuz-2.4.12 ro root=/dev/hda4
title Red Hat Linux (2.4.14)
root (hd0,3)
kernel /boot/vmlinuz-2.4.14 ro root=/dev/hda4
######### end of menu.conf ####################
系统有两个内核, 第一为稳定的内核, 以确保第二个内核(刚编译的)启动
失败时,能引导进系统.另外, 这个menu.conf没有设password, 安全起见,最
好加上,具体怎么加,看看手册了.
注意了, 我的linux在/dev/hda4,所以menu.conf那些分区位置为(hd0,3),
你的可能不一样了,不能完全照着"画瓢"噢! 下面第3步install的中的分区
位置也应该和你的系统一致.
3. 安装grub至Linux分区boot
将grub的stage1安装到/dev/hda4的boot扇区(hd0,3). 过程如下:
/sbin/grub (运行grub)
grub> install (hd0,3)/boot/grub/stage1 d (hd0,3) (hd0,3)/boot/grub/stage2 p
(hd0,3)/boot/grub/menu.conf
(注意,上面"grub>"为grub的提示符,其后内容写在一行上.)
4. 取得grub的boot信息
过程如下:
dd if=/dev/hda4 of=/grub.lnx bs=512 count=1
这样得到grub的引导信息,只要用NT Loader来加载它就行了.
5. 将上面得到的grub.lnx弄到Windows的C盘根目录下
可以先把grub.lnx弄得软盘上,然后启动windows,拷贝到C:\; 情况允许也可以直接
在Linux下拷贝到C:了. 我的C盘(即设备/dev/hda1)为FAT32, 可以直接从Linux下弄
过去了. 如下:
mount -t vfat /dev/hda1 /mnt/c
cp /grub.lnx /mnt/c
umount /mnt/c
6. 修改NT Loader的boot.ini
在其中加入一行: C:\grub.lnx="Redhat Linux - GRUB"
加入后boot.ini的内容如下:
[boot loader]
timeout=5
default=C:\boot.lnx
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\PNT40W="Windows xp
.00"
multi(0)disk(0)rdisk(0)partition(1)\PNT40W="Windows xp
.00
[VGA mode]" /basevideo /sos
C:\grub.lnx="Redhat Linux - GRUB"
OK. 可以用NT Loader加载Linux了, 其实上面过程基本上和用NT Loader加载LILO
一样.其基本思想就是用NT Loader来加载LILO或grub的引导区(grub.lnx), 其中的关
键就是LILO或grub的引导区的获取了,我喜欢把它们安装在Linux的ROOT分区上,然后用
dd取得这个引导分区信息(即分区的第1个扇区), 存为一个文件,放到windows的C:\下,
在boot.ini中加入相应的引导指示行即可.
http://bbs.chinaitlab.com/dispbbs.asp?boardid=158&id=147944