带着小黑猪环游世界 發表於 2008-9-8 18:49:22

FreeBSD学习经验

1、进入单用户模式<br />
BOOT: /kernel -s<br />
就进了单用户了, 然后/sbin/mount -rw /把/设置成可写<br />
然后 vipw把root口令置空
2、开机自动fsck硬盘<br />
fsck_y_enable=&quot;YES&quot;
3、FreeBSD弹出光驱<br />
cdcontol-&gt;Eject<br />
4、OpenBSD弹出光驱<br />
eject /dev/rcd0c
5、BSD下增加帐号<br />
pw useradd hanyang -g wheel -s /usr/local/bin/bash
6、观察<a target="_blank" href="#" class="UBBWordLink">网络</a>流量<br />
systat -if 1
7、添加IP地址和网关<br />
vi /etc/rc.conf<br />
ifconfig_bge0=&quot;inet 61.135.152.35 netmask 255.255.255.0&quot;<br />
ifconfig_bge1=&quot;inet 172.16.152.35 netmask 255.255.255.0&quot;<br />
defaultrouter=&quot;61.135.152.1&quot;
/sbin/ifconfig bce0 inet 192.168.0.1 netmask 255.255.255.255
8、手动添加默认网关 <br />
route add default new_gateway<br />
route change default new_gateway
9、freebsd中<a target="_blank" href="#" class="UBBWordLink">设置</a>时区命令为:<br />
tzsetup
10、查看打开的端口<br />
bsd下:sockstat -l<br />
linux:netstat -anp|grep LISTEN
11、bsd 新内核无法启动<br />
你可以在<a target="_blank" href="#" class="UBBWordLink">系统</a>启动进行10计数的时候按Enter以外的任何键, 接着键入unload命令,再键入boot kernel.old<br />
或是执行/boot/loader
12、查看硬件信息<br />
cat /var/run/dmesg.boot |grep CPU<br />
sysctl hw.model
13、关掉NFS服务<br />
vi /etc/rc.conf<br />
增加<br />
nfs_server_enable=&quot;NO&quot; <br />
nfs_client_enable=&quot;NO&quot; <br />
portmap_enable=&quot;NO&quot; <br />
<br />
<br />
################################################<br />
######&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BSD 的防火墙ipfw语法&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ######<br />
################################################<br />
ipfw show<br />
ipfw add deny/allow all from 10.210.136.47 to any<br />
ipfw -f flush <br />
ipfw delete 表号
#Add by jinshuai to forbid IP 2006-01-26<br />
# # # # # /data1/apache2/logs/forbid_bsd.pl<br />
1 2 # # # /sbin/ipfw -f flush<br />
1 8 # # # /sbin/ipfw -f flush
<br />
################################################<br />
######&nbsp;&nbsp;&nbsp;&nbsp; FreeBSD上使用磁盘命令行工具&nbsp;&nbsp;&nbsp; #######<br />
################################################<br />
播客squid服务器( DELL 1950,4块73G 2.5寸SAS盘,每块盘单独做raid0)bsd系统下更换硬盘步骤:<br />
一、确认现场准备工作已经完成,可以随时更换故障,然后通知<a target="_blank" href="#" class="UBBWordLink">服务</a>器所属负责人,确认<a target="_blank" href="#" class="UBBWordLink">服务</a>器可以关机后,就远程关机,然后通知现场更换硬盘<br />
二、等现场更换好硬盘,并做完成riad后,执行下面<a target="_blank" href="#" class="UBBWordLink">操作</a>:<br />
1、#初始化新磁盘mfid3是指id=3的硬盘,可以根据实际情况做相应调整<br />
&nbsp;&nbsp; dd if=/dev/zero of=/dev/mfid3 bs=1k count=1<br />
&nbsp;&nbsp; fdisk -BI mfid3<br />
2、#加上标签<br />
&nbsp;&nbsp; disklabel -B -w -r mfid3s1 auto<br />
3、# 现在编辑您刚才创建的磁盘分区<br />
&nbsp;&nbsp; disklabel -e mfid3s1<br />
&nbsp;&nbsp; 删除这一行:<br />
&nbsp;&nbsp; a: 142078781&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 16&nbsp;&nbsp;&nbsp; unused&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp; 0<br />
&nbsp;&nbsp; 然后在文件最下面添加下面这行:<br />
&nbsp;&nbsp; d: 142078797&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp; 4.2BSD&nbsp;&nbsp;&nbsp;&nbsp; 2048 16384 28552<br />
4、创建文件<a target="_blank" href="#" class="UBBWordLink">系统</a><br />
&nbsp;&nbsp; newfs /dev/mfid3s1d<br />
5、修改fstab,mount新加的硬盘<br />
&nbsp;&nbsp; vi /etc/fstab<br />
&nbsp;&nbsp; /dev/mfid3s1d&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /data3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ufs&nbsp;&nbsp;&nbsp;&nbsp; rw&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2<br />
6、挂载硬盘<br />
&nbsp;&nbsp; mount -a
################################################<br />
######&nbsp;&nbsp; 内核可使用的内存不足引起的自动重启 ######<br />
################################################<br />
<a target="_blank" href="#" class="UBBWordLink">设置</a><a target="_blank" href="#" class="UBBWordLink">方法</a>是减少接收和发送缓冲区的内存的大小,需要做如下<a target="_blank" href="#" class="UBBWordLink">设置</a>: <br />
vi /etc/sysctl.conf<br />
net.inet.tcp.msl=2000<br />
net.inet.tcp.sendspace=32768<br />
net.inet.tcp.recvspace=8192<br />
net.inet.tcp.recvbuf_max=32768<br />
net.inet.tcp.sendbuf_max=131072
修改完后手工执行<br />
sysctl net.inet.tcp.msl=2000<br />
sysctl net.inet.tcp.sendspace=32768<br />
sysctl net.inet.tcp.recvspace=8192<br />
sysctl net.inet.tcp.recvbuf_max=32768<br />
sysctl net.inet.tcp.sendbuf_max=131072
vi /boot/loader.conf&nbsp;&nbsp; (这两个选项有可能已经<a target="_blank" href="#" class="UBBWordLink">设置</a>)<br />
kern.ipc.nmbclusters=0<br />
vm.kmem_size_scale=&quot;2&quot;<br />
net.inet.tcp.sendspace=&quot;16384&quot;<br />
net.inet.tcp.recvspace=&quot;8192&quot;<br />
net.inet.tcp.sendbuf_max=&quot;131072&quot;
删除loader.conf与sysctl.conf重复的行
<br />
################################################<br />
######&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 添加ftp账号&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ######<br />
################################################<br />
which proftpd<br />
修改proftpd.conf添加账号<br />
查看21端口是不是inetd启动的<br />
sockstat -l<br />
vi /etc/inetd.conf<br />
重启inetd服务<br />
killall -HUP inetd
################################################<br />
######&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BSD下关闭sendmail&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ###### <br />
################################################<br />
sh /etc/rc.sendmail stop<br />
killall -9 sendmail<br />
chmod 0 /usr/libexec/sendmail/sendmail<br />
mv /etc/rc.sendmail /etc/rc.sendmail.old
vi /etc/rc.conf<br />
sendmail_enable=&quot;NONE&quot;<br />
sendmail_submit_enable=&quot;NONE&quot;<br />
sendmail_outbound_enable=&quot;NONE&quot;
################################################<br />
######&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BSD安装qmail&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ######<br />
################################################<br />
mkdir /var/qmail<br />
mkdir /var/qmail/alias
pw groupadd nofiles<br />
pw groupadd qmail<br />
pw useradd alias -g nofiles -d /var/qmail/alias -s /sbin/nologin<br />
pw useradd qmaild -g nofiles -d /var/qmail -s /sbin/nologin<br />
pw useradd qmaill -g nofiles -d /var/qmail -s /sbin/nologin<br />
pw useradd qmailp -g nofiles -d /var/qmail -s /sbin/nologin<br />
pw useradd qmailq -g qmail -d /var/qmail -s /sbin/nologin<br />
pw useradd qmailr -g qmail -d /var/qmail -s /sbin/nologin<br />
pw useradd qmails -g qmail -d /var/qmail -s /sbin/nologin
pw useradd admin -g wheel<br />
cd /home/hanyang<br />
tar xvfz ./qmail-1.03.tar.gz<br />
patch -d ./qmail-1.03 &lt; qmail-103.patch <br />
patch -d ./qmail-1.03 &lt; qmail-maildir++.patch<br />
tar zxvf qmail-smtpd-auth-0.31.tar.gz<br />
cd qmail-smtpd-auth-0.31<br />
cp base# README.auth ../qmail-1.03<br />
patch -d ../qmail-1.03 &lt; auth.patch
<br />
################################################<br />
bsd下修改配置文件支持串口为 115200输出<br />
################################################<br />
<br />
echo '-Dh -S115200' &gt;/boot.config <br />
echo 'kern.ipc.nmbclusters=0'&gt;&gt;/boot/loader.conf<br />
echo 'comconsole_speed=&quot;115200&quot;'&gt;&gt;/boot/loader.conf<br />
echo 'console=&quot;comconsole&quot;'&gt;&gt;/boot/loader.conf<br />
echo 'boot_multicons=&quot;YES&quot;'&gt;&gt;/boot/loader.conf<br />
echo 'boot_serial=&quot;YES&quot;'&gt;&gt;/boot/loader.conf<br />
echo 'vm.kmem_size_scale=&quot;2&quot;'&gt;&gt;/boot/loader.conf<br />
echo 'net.inet.tcp.sendspace=&quot;16384&quot;'&gt;&gt;/boot/loader.conf<br />
echo 'net.inet.tcp.recvspace=&quot;8192&quot;'&gt;&gt;/boot/loader.conf<br />
echo 'net.inet.tcp.sendbuf_max=&quot;131072&quot;'&gt;&gt;/boot/loader.conf
vi /etc/ttys<br />
注释掉ttyd0 /ttyd1,增加:<br />
ttyd0 &quot;/usr/libexec/getty std.115200&quot; vt100 on secure<br />
ttyd1 &quot;/usr/libexec/getty std.115200&quot; vt100 on secure
<br />
################################################<br />
FreeBSD下的<a target="_blank" href="#" class="UBBWordLink">系统</a>监控工具<br />
################################################<br />
1 使用SNP Watch监控用户 <br />
参考How to Monitor Users with SNP Watch.<br />
watch命令使用snp设备来监视某个tty的数据的输入输出, 因此首先要保证内核调入snp模块, 所以, 在内核配置中加入<br />
pseudo-device&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; snp 4 <br />
watch常用使用方式如下<br />
监视用户的tty, 不需要使用任何参数, 只需要指定tty<br />
# who<br />
jerry&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ttyv4&nbsp;&nbsp;&nbsp;&nbsp; 5 18 13:40 <br />
# watch ttyv4&nbsp;&nbsp; <br />
监视并控制用户的tty, 需要加上参数`-W', 并指定tty<br />
# who<br />
jerry&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ttyv4&nbsp;&nbsp;&nbsp;&nbsp; 5 18 13:40 <br />
# watch -W ttyv4 <br />
watch的快捷键如下<br />
CTRL+G = 退出<br />
CTRL+W = 清屏<br />
CTRL+X = 选择需要监视tty<br />
&nbsp;&nbsp; <br />
2 使用smartmontools监视硬盘状态<br />
SMART (SFF-8035i)是硬盘生产商们建立的一个工业标准, SFF-8035i工业标准经过ATA-3, ATA-4, 到了ATA-5, 加入了一个错误信息日志(error log)和一系列硬盘自测SMART命令. 这个标准就是在硬盘上保存一些跟执行情况, 可靠程度, 读找错误率等属性的数据, 所有属性都有一个1字节(大小范围 1-253)的标准化值, 还包含另一个1字节的关键阶段值, 如果属性中某个数据接近小于或达到关键阶段值,那么硬盘就很可能会在不久出现严重的读写问题, 至少也是超过它的设计使用极限了, 这时应该做<a target="_blank" href="#" class="UBBWordLink">系统</a>完全备份了.<br />
SMART适用于IDE和SCSI硬盘, 如果硬盘支持SMART标准, 就可以使用smartmontools来 监视硬盘的状态, smartmontools的<a target="_blank" href="#" class="UBBWordLink">安装</a>如下<br />
# cd /usr/ports/sysutils/smartmontools<br />
# make all install clean<br />
# echo 'smartd_enable=&quot;YES&quot;' &gt;&gt; /etc/rc.conf<br />
# echo '/dev/sda1 -H -m <a href="mailto:mymailbox@mymachine%27"><font color="#0000ff">mymailbox@mymachine'</font></a> &gt; /usr/local/etc/smartd.conf<br />
# /usr/local/etc/rc.d/smartd.sh start<br />
上面<a target="_blank" href="#" class="UBBWordLink">设置</a>smartd在发现错误后发送邮件通知, 此外还可以根据需要定期测试硬盘, 查看其是否有错误, <br />
具体<a target="_blank" href="#" class="UBBWordLink">设置</a>可以参见/usr/local/etc/smartd.conf.sample<br />
还可以通过smartctl来查看和测试硬盘, 常用命令如下:<br />
查看硬盘是否支持SMART标准<br />
# smartctl -i /dev/sda1 <br />
查看硬盘的健康状况<br />
# smartctl -H /dev/sda1 <br />
查看硬盘错误日志<br />
# smartctl -l error /dev/sda1&nbsp;&nbsp; <br />
进行硬盘自检<br />
# smartctl -l selftest /dev/sda1 <br />
终止硬盘自检<br />
# smartctl -X /dev/sda1
&nbsp;
################################################<br />
######&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BSD的虚拟磁盘<a target="_blank" href="#" class="UBBWordLink">技术</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ######<br />
################################################<br />
去掉开机自动加载虚拟磁盘并mount到/var,网上有资料说:<br />
It seems that you have set &quot;varmfs=YES&quot; in you /etc/rc.conf or /var is not popular writable<br />
然后按照下面的<a target="_blank" href="#" class="UBBWordLink">操作</a>就可<a target="_blank" href="#" class="UBBWordLink">解决</a>。<br />
vi /etc/rc.conf<br />
varmfs=&quot;NO&quot; <br />
populate_var=&quot;NO&quot;
# mdconfig -a -t swap -s 30M <br />
这就会在虚拟内存中申请30M空间,并创建虚拟磁盘,使用的虚拟设备为第 一个md设备md0,如果<a target="_blank" href="#" class="UBBWordLink">系统</a>中的md0设备已经被占用,那么mdconfig就依序向后寻找下一个空余的md设备,并创建它。由于mdconfig能自 动创建新的设备,这样就<a target="_blank" href="#" class="UBBWordLink">解决</a>了在内核配置文件指定伪设备数量的问题。 <br />
也可以使用-u指定使用的md伪设备的序号,例如下列命令将创建md10,并使用它作为虚拟磁盘设备:<br />
# mdconfig -a -t swap -s 30M -u 10 <br />
上面的命令都是使用虚拟内存空间作为数据存储空间,是由swap参数指定的。同样,使用mdconfig也能从内核空间中创建虚拟磁盘,此时-t指定的存储类型参数为malloc,这告诉内核使用内核的MALLOC方法申请内存。 <br />
# mdconfig -a -t malloc -s 30M <br />
这种<a target="_blank" href="#" class="UBBWordLink">方法</a>就相当于老的md设备的申请内存的<a target="_blank" href="#" class="UBBWordLink">方法</a>,但显然更为灵活,因为可以在具体使用过程中申请内存和设备,这是因为FreeBSD 5.0的内核允许更灵活的使用MALLOC内存申请方式。当然,一般还是主要使用swap申请虚拟空间的内存。 <br />
由于mdconfig和伪设备md将完全代替vnconfig和伪设备vn,那么使用mdconfig也能创建使用文件作为虚拟磁盘的与vn兼容的方式,这需要指定存储类型参数为vnode,并使用 -f指定具体的存储数据的物理文件名字。 <br />
# mdconfig -a -t vnode -f imagefile -s 30M <br />
在使用mdconfig配置好虚拟磁盘之后,就可以使用disklabel、newfs、mount等管理虚拟磁盘。而在不需要这些虚拟磁盘的时候,就可以卸载相应的文件<a target="_blank" href="#" class="UBBWordLink">系统</a>,并使用mdconfig删除指定的磁盘等。 <br />
# mdconfig -l <br />
使用参数&rdquo;-l&rdquo;,则mdconfig列出<a target="_blank" href="#" class="UBBWordLink">系统</a>中所有的虚拟磁盘设备。 <br />
# mdconfig -d -u 0 <br />
为了删除指定了磁盘,需要使用&rdquo;-d&quot;参数,而使用&quot;-u 0&rdquo;则指定删除序号为0的虚拟磁盘,即md0。
頁: [1]
查看完整版本: FreeBSD学习经验