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