FreeBSD文档

来源:百度文库 编辑:神马文学网 时间:2024/05/26 19:09:01
作者: Jerry 最后更新时间: 2004年5月18日
本文可以随意转载, 无需通知作者, 但请注明:"本文最新文档可以从http://zhdotemacs.sourceforge.net上获得, E-mail: unidevel@hotpop.com".
[Split HTML /Single HTML ]
Table of Contents1最近更新1.12004年05月18日1.22004年04月29日1.32004年03月12日
2FreeBSD下相关工具安装2.1FDP相关工具安装2.1.1FreeBSD下FDP工具的安装2.1.2Windows下FDP工具的安装
2.2mtools2.3FreeBSD下QQ的安装方法2.4shlight -- 访问windows共享文件夹
3FreeBSD下网络配置3.1安装配置DHCP3.1.1DHCP的安装3.1.2DHCP的配置
3.2VPN的安装配置3.2.1mpd的安装3.2.2mpd的配置
3.3NAT的安装配置3.3.1NAT的安装3.3.2NAT的配置
3.4使用SOCKS代理上网3.4.1SOCKS的安装3.4.2SOCKS5的配置
4FreeBSD系统管理和维护4.1FreeBSD系统备份恢复及迁移4.1.1系统迁移
4.2FreeBSD下的系统监控工具4.2.1使用SNP Watch监控用户4.2.2使用smartmontools监视硬盘状态
5IBM Thinkpad R40e 上安装配置FreeBSD 4-stable5.1基本安装5.2X-Window的配置
6FreeBSD常见问题集合6.1FreeBSD常用命令及脚本6.2FreeBSD安装配置常见问题
Chapter 1 最近更新
Jerry
新增Section 4.1.1FreeBSD系统迁移.
新增Section 4.2.1使用SNP Watch监控用户.
新增Section 4.2.2使用smartmontools监视硬盘状态.
新增Chapter 5IBM Thinkpad R40e 上安装配置FreeBSD 4-stable.
新增Section 3.4使用SOCKS代理上网.
Chapter 2 FreeBSD下相关工具安装
Jerry
本章简介FreeBSD下常见工具的安装
FreeBSD Document Project简称FDP, 是FreeBSD的文档标准, 同 LDP(Linux Document Project)一样, 都是使用sgml格式, 由相关工具生成 各种格式的文档
FreeBSD的ports为我们简化了整个安装的过程, 不过还是简单的说一 下吧, 首先安装textproc/ghostscript-gnu, 然后安装graphic/peps, 最 后到textproc/docproj下make -DJADETEX=no install进行安装, 基本上 应该可以一次搞定. 还是ports好
也许用惯FreeBSD的会问为什么要用Windows, 它可以吗? 我一次出差 本来以为拿了硬盘, 找台机器用就可以了(没本本就是不爽), 结果别人给 了个本本, 因为不是自己的, 所以不能够装上我钟爱的FreeBSD, 只能用 瘟到死, 感觉实在不爽, 被迫想了些办法, 使得我使用FDP制作的文档在 Windows下可以使用了
我看了docproj安装的软件, 有一大把, 偷了下懒, 从FreeBSD系统下将 /usr/local/share/sgml和/usr/local/share/xml下的东西打包先拷贝出 来, 首先要安装的当然是cygwin, 除了FreeBSD我就喜欢它了, 把windows 变得和unix环境差不多, 安装时要装links, tidy和ghostscript, 然后把 从FreeBSD下抓来的那两个目录拷贝到cygwin对应的目录下, 比较难找的 是cygwin下的openjade和pmake, 这个可以从下载区内下到, 已经编译成 Windows的可执行程序, 忘记了还要从FreeBSD下把/usr/share/mk打包拷 贝出来, 这个东东也比较重要, 这就差不多了, 把文档源代码从FreeBSD 下拷贝出来, 使用pmake就可以编译了, 不知道能不能把ports搞过来, ports实在是太完美了.
windows的FDP可以通过ftp://hhd.kingisme.com/incoming/FDP4cygwin 下载, 具体安装见README
mtools用于操作dos分区, 配置文件是${INSTDIR}/etc/mtools.conf, 在这个文件中设置各个盘符的信息, 例如设置a:和c:如下
drive a: file="/backup/pal/a.img"drive c: file="/backup/pal/pal.img" partition=1
新建分区, 例如分112M的分区, 注意这里要配置c:为112.disk的全路径
# truncate -S 112M 112.disk# mpartition -I -s 900 -t 17 -h 15 c:# mpartition -cpv -s 900 -t 17 -h 15 c:# mformat c:
 
首先, 下载gaim-0.58-1.i386.rpm
然后, 下载libqq-0.0.3-ft-0.58-gcc296.so.gz或者libqq-0.0.3-ft-0.58-gcc31.so.gz
下载gdk-pixbuf-0.14.0-0.7.2.i386.rpm
kldstat检查一下是否调入了linux.ko, 我的环境是linux_base-8-8.0_1, linux-gtk-1.2_2, linux-gnomelibs-1.2.8_2, linux-esound-0.2.22_1.
$ rpm2cpio gaim-0.58-1.i386.rpm > gaim.cpio $ rpm2cpio gdk-pixbuf-0.14.0-0.7.2.i386.rpm > gdk-pixbuf.cpio $ cpio -i -d < gaim.cpio $ cpio -i -d < gdk-pixbuf.cpio $ gunzip libqq*.gz # cp -r ./usr /usr/compat/linux/ # cp libqq*.so /usr/compat/linux/lib/gaim
最后, 启动/usr/compat/linux/usr/bin/gaim, 然后调入libqq.so就可以了
shlight对中文支持也很好, 我在FreeBSD 5.2上测试过
# cd /usr/ports/net/sharity-light/# make all install clean# mkdir /music# echo "10.0.0.1 winhost" >> /etc/hosts# shlight //winhost/music /music -U user -P password# unshlight /music
Chapter 3 FreeBSD下网络配置
Jerry
本章介绍我的FreeBSD网络配置
在FreeBSD上安装DHCP, 首先需要确定内核配置中有 `pseudo-device bpf‘选项, 然后可以从ports下的 net/isc-dhcp3安装dhcp, 安装没什么好讲的, 直接安装就是了
我配置了一个简单的, 主要有下面的几个文件
/usr/local/etc/dhcpd.conf
option domain-name "unidevel.com";option domain-name-servers 88.1.16.4;default-lease-time 600;max-lease-time 7200;authoritative;ddns-update-style none;subnet 88.1.16.0 netmask 255.255.255.0 {range 88.1.16.150 88.1.16.200;option routers 88.1.16.4;}
然后, 拷贝一个启动脚本
# cp /usr/local/etc/rc.d/isc-dhcpd.sh.sample /usr/local/etc/rc.d/isc-dhcpd.sh# chmod a+x /usr/local/etc/rc.d/isc-dhcpd.sh# /usr/local/etc/rc.d/isc-dhcpd.sh start
上面对88.1.16网段使用DHCP, 配置为主DHCP服务器, DHCP的网段为88.1.16.150 - 88.1.16.200, 缺省的路由器是88.1.16.4, 缺省的DNS为88.1.16.4
目标: 达到使用Windows 2000/XP进行VPN拨号连接, 软件选用mpd
通过ports安装mpd
# cd /usr/ports/net/mpd# make all install clean
VPN配置文件有mpd.conf, mpd.links, mpd.secret
/usr/local/etc/mpd/mpd.conf配置如下:
default:load vpnvpn:new -i ng1 vpn vpnset iface disable on-demandset iface addrs 192.168.0.1set iface idle 0set iface route 192.168.0.0/24set bundle disable multilinkset bundle authname "VpnLogin"set bundle password "VpnPassword"set link yes acfcomp protocompset link no papset link yes chapset link mtu 1460# If remote machine is NT you need this..# set link enable no-orig-authset link keep-alive 10 75set ipcp yes vjcompset ipcp ranges 192.168.0.1/32 192.168.0.254/32## The five lines below enable Microsoft Point-to-Point encryption# (MPPE) using the ng_mppc(8) netgraph node type.#set bundle enable compressionset ccp yes mppcset ccp yes mpp-e40set ccp yes mpp-e128set bundle enable crypt-reqdset ccp yes mpp-statelessopen
/usr/local/etc/mpd/mpd.links配置如下:
vpn:set link type pptpset pptp self 192.168.0.1# set pptp peer 2.3.4.5set pptp enable originate incoming outcall
/usr/local/etc/mpd/mpd.secret是用户的帐号和密码:
jerry "11111111"emma "88888888"test "test" 192.168.0.254
/usr/local/etc/rc.d/mpd.sh
#! /bin/shcase $1 instart)[ -x /usr/local/sbin/mpd ] && [ -f "/usr/local/etc/mpd/mpd.conf" ] && /usr/local/sbin/mpd -b && echo -n ‘ mpd‘;;stop)killall mpd && echo -n ‘ mpd‘;;*)echo "Usage: `basename $0` {start|stop}" <&2exit 64;;esacexit 0
使用`mpd.sh start‘启动, 在另一台WinXP上添加网络连接, 使用VPN, 输入用户和密码及主机地址就可以连上了
在 FreeBSD 5.X 上安装NAT, 首先需要确定内核配置中有下面的选项
options IPDIVERToptions IPFIREWALLoptions IPFIREWALL_VERBOSEoptions IPFIREWALL_VERBOSE_LIMIT=10options IPFIREWALL_DEFAULT_TO_ACCEPT
根据Handbook上说的, 需要配置rc.conf
gateway_enable="YES" # Set to YES if this host will be a gateway.firewall_enable="YES" # Set to YES to enable firewall functionalityfirewall_script="/etc/rc.firewall" # Which script to run to set up the firewallfirewall_type="/etc/ipfw.conf" # Firewall type (see /etc/rc.firewall)natd_program="/sbin/natd" # path to natd, if you want a different one.natd_enable="YES" # Enable natd (if firewall_enable == YES).natd_interface="ed1" # Public interface or IPaddress to use.natd_flags="-config /etc/natd.conf" # Additional flags for natd.
`/etc/ipfw.conf‘中加入
add 50 divert natd all from any to any via any
开始测试, 下图是测试用图
-+--------------------------------+-88.1.16.4 | | telnet 88.1.16.4 6666+---------------+ +-------------+| NATD MACHINE | | 88.1.16.1 |+---------------+ +-------------+192.168.0.1 |+-----------+------------+... ... ...192.168.0.XXX 子网
`/etc/natd.conf‘内容如下:
log yesredirect_port tcp 192.168.0.1:22 88.1.16.4:6666redirect_port tcp 192.168.0.1:23 88.1.16.4:6667
在88.1.16.1上使用telnet 88.1.16.4 6666测试成功
下面解决防火墙后的内网访问NATD配置的端口映射的问题
这个问题用ipfw将从192.168.0网段来的发送到目标地址88.1.16.4, 端口6666的包forward到192.168.0.1上的22端口上就可以了. `/etc/natd.conf‘加入:
add 30000 forward 192.168.0.1,22 all from 192.168.0.0/24 to 88.1.16.4 via ed1
socks5的ports需要手工下载socks5-v1.0r11.tar.gz, 将其放到/usr/ports/distfiles, 但从其官方站点很难下载到, 推荐一种方法, 使用google搜索"index of socks5-v1.0r11.tar.gz", 下载后需要校验一下MD5, 保证与distinfo中的相同就可以了.
简单的使用SOCKS5的客户端不需要配置文件, 只需要根据代理的类型设置环境变量SOCKS5_SERVER(当你的代理服务器类型是SOCKS5) 或者SOCKS4_SERVER(当你的代理服务器类型是SOCKS4) 或者SOCKS_SERVER(当你的代理服务器类型是SOCKS, 不知道是4还是5), 还有就是和SOCKS5认证相关的两个环境变量SOCKS5_USER和SOCKS5_PASSWD
当这些环境变量设置好后, 就可以使用runsocks 来运行那些需要通过代理来上网的软件了, 例如
#runsocks cvsup -Pm -gL 2 ports-supfile @M3novm#runsocks mozilla#runsocks wget ftp://60.138.164.3/movie.avi
一些软件如cvsup对runsocks需要加入一些特别的参数选项来运行, 这里的cvsup就加入了‘-Pm‘和行末的‘@M3novm‘, 详见cvsup的手册
至此我们就可以使用runsocks运行大部分需要网络支持的软件了
Chapter 4 FreeBSD系统管理和维护
Jerry
本章介绍FreeBSD系统的一些管理和维护经验
下面的例子中, 我将FreeBSD从一块20G的硬盘迁移到另一个80G 的硬盘的最后一个主分区, 该分区大小基本上仍然在20G左右
原分区情况
Filesystem 1M-blocks Used Avail Capacity Mounted on/dev/ad0s1a 313 67 221 23% /devfs 0 0 0 100% /dev/dev/ad0s1e 495 342 114 75% /tmp/dev/ad0s1f 7096 5957 570 91% /usr/dev/ad0s1d 495 339 117 74% /varlinprocfs 0 0 0 100% /usr/compat/linux/procprocfs 0 0 0 100% /proc
新硬盘计划挂载在/dev/ad0上
对新的磁盘进行分区
由于两块硬盘分区的大小不一致, 所以使用了一张FreeBSD的安装光盘进行Minimal的安装, 这时去掉原硬盘, 在ad0上挂载新硬盘, 安装时分区情况如下: /dev/ad0s4a分给`/‘, /dev/ad0s4b分给swap, /dev/ad0s4d分给`/var‘, /dev/ad0s4e分给`/tmp‘, /dev/ad0s4f分给`/usr‘, /dev/ad0s4g分给`/home‘
迁移`/‘数据
重启进入单用户模式, 将新硬盘设置为从盘, 在ad0挂载原硬盘, ad1挂载新硬盘, 由于分区的情况不一致, 不能使用dump/restore进行恢复`/‘, 因为FreeBSD的分区表信息 位于/dev/ad0s4a, 也就是现在的/dev/ad1s4a上的前512字节中, 直接的dump/restore会 导致分区信息被覆盖, 因此对`/‘采用pax进行备份和恢复, 最后修改fstab中各个挂载点的设备, 记得修改为ad0s4x, 因为最后新硬盘要挂载在ad0上, 命令如下:
# /sbin/fsck -p # /sbin/mount -a # /sbin/swapon -a # /sbin/adjkerntz -i # export HOME=/root # export TERM=vt200 # csh -l # mkdir -p /mnt/new/root # mkdir -p /mnt/new/var # mkdir -p /mnt/new/tmp # mkdir -p /mnt/new/usr # newfs /dev/ad1s4a # mount /dev/ad1s4a /mnt/fs/root # cd /mnt/fs/root; pax -rw -pe -X / . # cd /mnt/fs/root/etc # vi fstab
恢复FreeBSD其他分区的数据
这里由于不涉及对分区信息的操作, 可以使用dump/restore进行数据迁移, 同样也可以使用pax进行迁移, 这里使用dump/restore进行迁移
# newfs /dev/ad1s4d # newfs /dev/ad1s4e # newfs /dev/ad1s4f # newfs /dev/ad1s4g # newfs /dev/ad1s4h # mount /dev/ad1s4d /mnt/new/var # mount /dev/ad1s4e /mnt/new/tmp # mount /dev/ad1s4f /mnt/new/usr # (dump -0b 512 -f - /usr) | (cd /mnt/new/usr; restore -rb 512 -f - ) # (dump -0f - /var) | (cd /mnt/new/var; restore -rf - ) # umount /mnt/new/var # umount /mnt/new/tmp # umount /mnt/new/usr # tunefs -n enable /dev/ad1s4d # tunefs -n enable /dev/ad1s4e # tunefs -n enable /dev/ad1s4f # tunefs -n enable /dev/ad1s4g # tunefs -n enable /dev/ad1s4h
迁移其他数据
其他数据可以通过cp, tar, cpio, pax等迁移
迁移完毕, 关机, 重新挂载新硬盘到ad0, 重启, :)
本章介绍FreeBSD下的系统监控工具
参考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
SMART(SFF-8035i)是硬盘生产商们建立的一个工业标准, SFF-8035i工业标准经过ATA-3, ATA-4, 到了ATA-5, 加入了一个错误信息日志(error log)和一系列硬盘自测SMART命令. 这个标准就是在硬盘上保存一些跟执行情况, 可靠程度, 读找错误率等属性的数据, 所有属性都有一个1字节(大小范围 1-253)的标准化值, 还包含另一个1字节的关键阶段值, 如果属性中某个数据接近小于或达到关键阶段值,那么硬盘就很可能会在不久出现严重的读写问题, 至少也是超过它的设计使用极限了, 这时应该做系统完全备份了.
SMART适用于IDE和SCSI硬盘, 如果硬盘支持SMART标准, 就可以使用smartmontools来 监视硬盘的状态, smartmontools的安装如下, 这里我使用的是IDE的硬盘, 设备是ad0
# cd /usr/ports/sysutils/smartmontools# make all install clean# echo ‘smartd_enable="YES"‘ >> /etc/rc.conf# echo ‘/dev/ad0 -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/ad0
查看硬盘的健康状况
# smartctl -H /dev/ad0
查看硬盘错误日志
# smartctl -l error /dev/ad0
进行硬盘自检
# smartctl -l selftest /dev/ad0
终止硬盘自检
# smartctl -X /dev/ad0
Chapter 5 IBM Thinkpad R40e 上安装配置FreeBSD 4-stable
Jerry
需要准备FreeBSD 4.9的安装光盘, 并下载最新的src/sys源码包 (好象FreeBSD 4.9不支持R40e上的那块网卡). 如果你需要用到WinXP的话, 首先找个分区工具, 分好分区, 第一个分区给WinXP, 后面的分区也分好, 不然用IBM的系统恢复工具就会自动把后面未分区的与第一个分区合并, 先把WinXP恢复了(不过不恢复WinXP就没法继续后面的安装了), 并且, 进入WinXP 把最新的src/sys的tar包拷贝到C:\下
然后, 使用FreeBSD 4.9的安装光盘安装FreeBSD, 选个最小安装就可以了, 完成后启动进入FreeBSD, mount上WinXP的那个C:盘, 拷贝那个sys的源码包到/usr/src/下,解包, 重新编译内核, 安装重启, 就可以看到那个bge的网卡了
Kernel的加入的相关配置如下
options CPU_ENABLE_SSEoptions USER_LDToptions CPU_ENABLE_TCCdevice pcmoptions VESA
使用FreeBSD 4.9自带的XFree86 4.3无法正常配置出R40e继承的ATI Radeon显卡, 因此, 进入ports安装x11-server/XFree86-4-Server-snap, 安装后就可以正常配置显卡了, 配置文件如下:
Section "Module"Load "dbe" # Double buffer extensionSubSection "extmod"Option "omit xfree86-dga" # don‘t initialise the DGA extensionEndSubSectionLoad "type1"Load "speedo"# Load "freetype"Load "xtt"Load "glx"Load "dri"EndSectionSection "Files"RgbPath "/usr/X11R6/lib/X11/rgb"FontPath "/dtroot/local/share/fonts/TTF/"FontPath "/usr/X11R6/lib/X11/fonts/local/"FontPath "/usr/X11R6/lib/X11/fonts/misc/"FontPath "/usr/X11R6/lib/X11/fonts/75dpi/:unscaled"FontPath "/usr/X11R6/lib/X11/fonts/100dpi/:unscaled"FontPath "/usr/X11R6/lib/X11/fonts/Speedo/"FontPath "/usr/X11R6/lib/X11/fonts/Type1/"# FontPath "/usr/X11R6/lib/X11/fonts/TrueType/"# FontPath "/usr/X11R6/lib/X11/fonts/freefont/"FontPath "/usr/X11R6/lib/X11/fonts/75dpi/"FontPath "/usr/X11R6/lib/X11/fonts/100dpi/"# ModulePath "/usr/X11R6/lib/modules"EndSectionSection "ServerFlags"EndSectionSection "InputDevice"Identifier "Thinkpad Keyboard"Driver "Keyboard"Option "CoreKeyboard"Option "AutoRepeat" "500 30"Option "XkbRules" "xfree86"Option "XkbModel" "pc101"Option "XkbLayout" "us"EndSection# **********************************************************************# Core Pointer‘s InputDevice section# **********************************************************************Section "InputDevice"Identifier "USBMouse"Driver "mouse"Option "Protocol" "Auto"Option "Device" "/dev/ums0"Option "Emulate3Buttons" "true"Option "ZAxisMapping" "4 5"EndSectionSection "InputDevice"Identifier "Touchpad"Driver "mouse"Option "Protocol" "Auto"Option "Device" "/dev/mouse"Option "Emulate3Buttons" "true"Option "ZAxisMapping" "4 5"EndSectionSection "Monitor"Identifier "My Monitor"Option "DPMS"# HorizSync 31.5# HorizSync 30-64 # multisync# HorizSync 31.5, 35.2 # multiple fixed sync frequencies# HorizSync 15-25, 30-50 # multiple ranges of sync frequencies# VertRefresh 50-70EndSectionSection "Device"Identifier "ATI Radeon"Driver "radeon"VideoRam 16384Option "EnablePageFlip" "true"EndSectionSection "Screen"Identifier "Thinkpad LCD"Device "ATI Radeon"Monitor "My Monitor"DefaultDepth 24Subsection "Display"Depth 8Modes "1280x1024" "1024x768" "800x600" "640x480"ViewPort 0 0EndSubsectionSubsection "Display"Depth 16Modes "1280x1024" "1024x768" "800x600" "640x480"ViewPort 0 0EndSubsectionSubsection "Display"Depth 24Modes "1024x768" "800x600"ViewPort 0 0EndSubsectionEndSectionSection "ServerLayout"Identifier "Thinkpad X"Screen "Thinkpad LCD"InputDevice "Touchpad" "CorePointer"InputDevice "Thinkpad Keyboard" "CoreKeyboard"EndSectionSection "DRI"Mode 0666EndSection
Chapter 6 FreeBSD常见问题集合
Jerry
6.1.1.如何使用脚本获得PID6.1.2.将文件名从大写转换为小写6.1.3.子目录按大小排序6.1.4.ls显示颜色6.1.5.快速安装package6.1.6.使用ISO镜像6.1.7.tcsh, csh技巧
6.1.1. 如何使用脚本获得PID
参见脚本pid.sh, 如下:
$ cat pid.sh#!/bin/shpid=`ps -aux | grep $1 | grep -v grep | awk ‘{print $2}‘`echo $pid < $1.pid$./pid.sh sshd
6.1.2. 将文件名从大写转换为小写
参见脚本mklower.sh, 如下:
#!/bin/shfor file in $1;donewfile=`echo "$file" | tr "[:upper:]" "[:lower:]"`mv "$file" "$newfile"done$ mklower.sh *.JPG
6.1.3. 子目录按大小排序
$du -s * | sort -n
6.1.4. ls显示颜色
$ls -G #显示属性颜色 $ls -F #显示属性字符 $ls -FG
6.1.5. 快速安装package
你可以先设定 PACKAGEROOT,指定用该站点的package,安装时自动寻找对应pakage,而且你不需要知道版本,只要知道package名称即可,会自动安装package的最新版,中文的部分只要加上 zh-,像是 zh-xcin。
# setenv PACKAGEROOT ftp://ftp.tw.freebsd.org# pkg_add -r package_name
也可以直接指定 PACKAGESITE 指向特定的位置. 像是你希望安装的package是 最新的, 而不是 release 的版本.
# setenv PACKAGESITE ftp://ftp.tw.freebsd.org/pub/FreeBSD/ports/i386/packages-stable/Latest/
6.1.6. 使用ISO镜像
FreeBSD 4.X
#vnconfig /dev/vn0c ./IMAGE.ISO#mount -t cd9660 /dev/vn0c MOUNT_DIR#umount MOUNT_DIR#vnconfig -u /dev/vn0c
FreeBSD 5.X
#mdconfig -a -t vnode -f abc.iso -u 1#mount -t cd9660 /dev/md1 MOUNT_DIR#umount MOUNT_DIR
6.1.7. tcsh, csh技巧
在tcsh中可以使用set autolist设置文件名和路径自动补齐
在csh中可以设置limit coredumpsize 0来设置coredump的大小
设置命令行提示符
set prompt = ‘%n@%m%#‘
6.2.1.系统启动反复出现timeout-resetting6.2.2.发现FreeBSD的交换空间被耗尽6.2.3.如何将系统迁移到新的大硬盘6.2.4.如何使用主板内置声卡, 如何使多个程序同时播放声音6.2.5.如何使用make world升级系统6.2.6.Java运行awt程序经常core dumped6.2.7.JDK1.4.2 使用JDBC无法连接远程数据库
6.2.1. 系统启动反复出现timeout-resetting
acd0:MODE_SENSE_BIG command timeout-resettingata1:resetting devices...doneacd0:MODE_SENSE_BIG command timeout-resettingata1:resetting devices...doneacd0:MODE_SENSE_BIG command timeout-resettingata1:resetting devices...done..........Probing divice,please wait(this can take a few minutes
将光驱的master修改成slave来用
6.2.2. 发现FreeBSD的交换空间被耗尽
不追加分区, 可以通过增加交换文件的方式实现
Example 6-1. Creating a Swapfile on FreeBSD 4.X1. Be certain that your kernel configuration includes the vnodedriver. It is not in recent versions of GENERIC.pseudo-device vn 1 #Vnode driver (turns a file into a device)2. create a vn-device:# cd /dev# sh MAKEDEV vn03. create a swapfile (/usr/swap0):# dd if=/dev/zero of=/usr/swap0 bs=1024k count=644. set proper permissions on (/usr/swap0):# chmod 0600 /usr/swap05. enable the swap file in /etc/rc.conf:swapfile="/usr/swap0" # Set to name of swapfile if aux swapfile desired.6. Reboot the machine or to enable the swap file immediately, type:# vnconfig -e /dev/vn0b /usr/swap0 swapExample 6-2. Creating a Swapfile on FreeBSD 5.X1. Be certain that your kernel configuration includes the memorydisk driver ( md(4)). It is default in GENERIC kernel.device md # Memory "disks"2. create a swapfile (/usr/swap0):# dd if=/dev/zero of=/usr/swap0 bs=1024k count=643. set proper permissions on (/usr/swap0):# chmod 0600 /usr/swap04. enable the swap file in /etc/rc.conf:swapfile="/usr/swap0" # Set to name of swapfile if aux swapfile desired.5. Reboot the machine or to enable the swap file immediately, type:# mdconfig -a -t vnode -f /usr/swap0 -u 0 && swapon /dev/md0
6.2.3. 如何将系统迁移到新的大硬盘
建议重装系统,然后将数据迁移到新硬盘, 如果真的要直接将系统迁移到新硬盘一定要使用dump和restore,不要使用tar,cpio等, 它们对根目录的操作可能会出现问题, 步骤如下:
使用newfs新建一个分区.
mount上该分区.
cd到装载点.
使用dump备份旧的分区, 通过管道输出到新分区
例如, 假设要将根文件系统移动到/dev/ad1s1a, 使用/mnt作为临时装载点, 命令如下
# newfs /dev/ad1s1a# mount /dev/ad1s1a /mnt# cd /mnt# dump 0af - / | restore xf -
要在新硬盘上重新安排分区稍微有点麻烦, 例如要把/var文件系统放在新硬盘分区的 根文件系统下, 首先按照上面的步骤移动根文件系统, 然后在移动/var文件系统, 命令如下:
# newfs /dev/ad1s1a# mount /dev/ad1s1a /mnt# cd /mnt# dump 0af - / | restore xf -# cd var# dump 0af - /var | restore xf -
6.2.4. 如何使用主板内置声卡, 如何使多个程序同时播放声音
使用内置声卡需要添加如下内核配置
options PNPBIOS
多声道配置使用sysctl进行设置, 如下:
# sysctl hw.snd.pcm0.vchans=4# sysctl hw.snd.maxautovchans=4
6.2.5. 如何使用make world升级系统
参考FreeBSD升级指南
注意事项
备份系统, 备份一下总不至于吃亏
订阅对应邮件列表, 希望你的英文不至于太差, 在对应邮件列表上贴上你问题的描述, 描述清楚出现的问题及受影响的系统
STABLE: freebsd-stable@FreeBSD.orgCURRENT: freebsd-current@FreeBSD.org
升级步骤
使用cvsup将src同步到所要升级到的版本
读一下/usr/src/UPDATING, 上面由一些你可能需要注意的事项, 一定要读一下, 但并不代表这一定比从邮件列表上得到的信息有用, 所以推荐订阅邮件列表
检查/etc/make.conf, 查看/etc/make.conf和 /etc/default/make.conf的不同之处, /etc/default/make.conf中包含一些缺省定义, 不过大部分都被注释掉了, 可以考虑把它们加入到/etc/make.conf中, 不过要记得/etc/make.conf所有的make命令都起作用
更新/etc下的文件, /etc下存放配置和启动脚本, 有些文件在不同的版本中是不同的, 所以需要进行更新, 从FreeBSD 开始可以在编译前使用命令 mergemaster 加上 -p 选项. 它将检查为了正常运行buildworld和installworld而需要更新的文件, 示例如下:
# cd /usr/src/usr.sbin/mergemaster # ./mergemaster.sh -p
进入单用户模式, 避免多用户系统带来的文件升级不成功问题, 还有一种方法就是在多用户模式下编译, 单用户下升级安装, 命令如下
# shutdown now
重启后使用boot -s 进入单用户模式
# fsck -p # mount -u / # mount -a -t ufs # swapon -a
加入升级前系统如果使用本地时间而没有使用GMT, 必须打入命令
# adjkerntz -i
来调整时区等设置, 保证系统的正常安装
移除/usr/obj
# cd /usr/obj # chflags -R noschg * # rm -rf *
编译系统
保存编译输出, 注意不要存在/tmp目录下, /tmp下的文件可能在重启后被清除
# script /var/tmp/mw.out Script started, output file is /var/tmp/mw.out # make TARGET ... compile, compile, compile ... # exit Script done, ...
编译系统
# cd /usr/src # make -j4 -DNOPROFILE buildworld #或者在/etc/make.conf加上NOPROFILE=true
FreeBSD 2.2.5后make world分成 make buildworld和make installworld, 注意这里只作make buildworld
耗时: PIII500/128M RAM大约需要2个钟头左右
编译安装新内核, 注意这里不是make world
# cd /usr/src # make buildkernel # make installkernel
编译使用GENERIC配置的内核, 推荐编译一个, 以免以后编译内核后无法使用新内核启动 没有make installworld前定制编译新内核使用下面的命令
# /usr/obj/usr/src/usr.sbin/config/config KERNELNAME
以新内核重启到单用户模式
升级系统, 注意要使用和make buildworld使用的-D选项, 并且绝对不能使用-j选项
# cd /usr/src # make installworld
假如编译时:
# make -DNOPROFILE=true buildworld
安装时就应该:
# make -DNOPROFILE=true installworld
升级那些没有被make world升级的文件, 如/etc下的文件, 可以使用mergemaster或者手工升级, 这一点请参见mergemaster的手册, 在升级前建议备份/etc目录.
更新/dev
通常使用mergemaster, 就会重建/dev, 或使用命令 sh MAKEDEV 建立
更新/stand
# cd /usr/src/release/sysinstall # make all install
再次重启
# fastboot
结束升级, 加入有些程序无法运行的话可以重新编译安装, 例如
# cd /usr/src/usr.bin/file # make all install
6.2.6. Java运行awt程序经常core dumped
java与xim有些冲突, 可以设置java的环境变量到C, 避免调用输入法
或者这样就可以了, XIM与Motif有些冲突
# ln -sf aj /etc/malloc.conf
6.2.7. JDK1.4.2 使用JDBC无法连接远程数据库
对net.inet6.ip6.v6only进行设置, 或者取消安装INET6
# sysctl net.inet6.ip6.v6only=0
可以将这句加到/etc/rc.local里, 启动后自动设置
from: http://zhdotemacs.sourceforge.net/freebsd/index.html