FreeBSD网络配置

FreeBSD网络配置

/etc/rc.conf 相关

如何修改 IP address

1 修改/etc/rc.conf,需要/etc/rc.d/netif重起,或reboot才能生效。

ifconfig_re0=”inet 192.168.0.76  netmask 255.255.254.0″

增加第二个 IP

ifconfig_re0_alias0=”inet 192.168.0.76  netmask 255.255.254.0″

2 直接使用ifconfig,立刻生效

#ifconfig re0 192.168.0.76 255.255.254.0

注意,使用方法2修改,重启机器后ip会变回未修改之前的ip

设定系统默认网关

1 修改 /etc/rc.conf

defaultrouter=”192.168.0.1″

2 直接使用 route 命令,立即生效

route add default 192.168.0.1

启用 NFS 客户端

1 修改 /etc/rc.conf

nfs_client_enable=”YES”

2 修改 /etc/fstab,添加远程 nfs 分区。例如:

remote_server:/path/to/export /local/mount/point nfs rw,late 0 0

注: 选项 late 也可以不添加。如果添加了,就可以用 /etc/rc.d/mountlate 来挂载启动时没有挂载或挂载失败的 nfs 分区。

3 执行 /etc/rc.d/nfsclient

#/etc/rc.d/nfsclient start

设定系统默认域名服务器

修改 /etc/resolv.conf 文件到如下内容,如果这个文件不存在,可以直接创建。

nameserver 192.168.0.1

更复杂的设定可以参考这个文件的 man 文档。

/etc/hosts 文件的作用

系统默认查询域名的顺寻是,先从 /etc/hosts 查询,如果查不到就从 dns 服务器查询。因此,你可以把一些常用的 域名-IP 地址对应写到 /etc/hosts 里面以加快网络速度。

原文链接:http://wiki.freebsdchina.org/faq/networking

在FreeBSD上搭建NTP时间服务器

电脑的时间放置不理的话过不久就会出现误差。
这个误差会反映在email送信时刻的time stamp上,会反映在你的论坛帖子发表时刻上。至少我遇到过这个问题。
网络上有ntp(network time protocol)服务器,提供当前的时刻。我们可以将本地的时刻与ntp服务器的时刻进行同步。

目的如下:
1,启动时用ntpdate进行时刻修正。
2,启动中,通过ntpd进行时刻校正的同时,将各个客户端电脑的时刻也进行同期校正。
3,如果不能找到ntp服务器,那么就使用local time,同时同步客户。

全世界约有100多个ntp服务器,从下面地址找一个离你最近的
http://www.eecis.udel.edu/~mills/ntp/clock1a.html
我选择了两个
clock.nc.fukuoka-u.ac.jp 133.100.9.2
clock.tl.fukuoka-u.ac.jp 133.100.11.8
步骤:

FreeBSD中有两个标准的ntp程序,其一为ntpdate。
ntpdate通过从ntp服务器获取时刻,调整本地时刻。
# ntpdate clock.nc.fukuoka-u.ac.jp
9 Oct 18:12:23 ntpdate: step time server 133.100.9.2 offset -19.112674
大约有19秒钟的误差

自动设定
# grep ntpdate /etc/defaults/rc.conf >>/etc/rc.conf
# vi /etc/rc.conf
ntpdate_enable="YES" # Run ntpdate to sync time on boot (or NO).
ntpdate_program="ntpdate" # path to ntpdate, if you want a different one.
ntpdate_flags="clock.nc.fukuoka-u.ac.jp" # Flags to ntpdate (if enabled).
重新启动以后就运行了,当然设定没有完,不必急着启动
FreeBSD的另一个标准ntp程序,ntp
ntp程序使的获取ntp时刻的同时,向其他pc提供时刻。

添加文件ntp.conf:

用来作为标准时刻的ntp服务器我选择了两个
clock.nc.fukuoka-u.ac.jp 133.100.9.2
clock.tl.fukuoka-u.ac.jp 133.100.11.8
同时指定复数个服务器也没有问题,系统会自动选择一个可以信赖的。
这里,为避免多余的DNS数据包传递,我们直接指定IP地址。
server行 server 127.127.1.0 为参考本地时刻时用的地址。然后用fudge指定阶层编号为5,降低其优先度。

接着用restrict对每一个IP地址指定相应的规则。
最后,指定波长校正用的drift文档保存地址。关于这个命令行,具体的含义不太清楚。不过如果没有的话,时间校正起来就会比较慢
# vi /etc/ntp.conf
server 133.100.9.2 #clock.nc.fukuoka-u.ac.jp
server 133.100.11.8 #clock.tl.fukuoka-u.ac.jp
server 127.127.1.0
fudge 127.127.0.1 stratum 5
restrict default ignore
restrict 127.0.0.0 mask 255.0.0.0
restrict 192.168.1.0 mask 255.255.255.0 noquery nopeer notrust
restrict 133.100.9.2 noquery
restrict 133.100.11.8 noquery
driftfile /etc/ntpd.drift
启动测试
# ntpd -p /var/run/ntpd.pid
# tail /var/log/messages
Oct 9 16:46:56 chiwawa ntpd[89409]: ntpd 4.1.0-a Thu Apr 3 08:26:24 GMT 2003 (1)
Oct 9 16:46:56 chiwawa ntpd[89409]: kernel time discipline status 2040
……
Oct 9 16:50:10 chiwawa ntpd[89409]: time set -0.189546 s
看到类似的结果就可以了。

运行测试
ntpd的运行用ntpq命令
# ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
*clock.nc.fukuok .GPS. 1 u 43 64 37 19.067 -6.884 10.339
+clock.tl.fukuok .GPS. 1 u 36 64 35 19.670 -3.259 2.341
LOCAL(0) LOCAL(0) 5 l 45 64 37 0.000 0.000 0.001
启动后到时刻校正完成需要一点时间。*是第一候补,+是第二。
本地时刻校正完成以后就可以为其他PC提供时刻校正服务了。

自动启动的设定
完成以上设定,确认运行无误以后:
# grep ntpd /etc/defaults/rc.conf >>/etc/rc.conf
# vi /etc/rc.conf
xntpd_enable="YES" # Run ntpd Network Time Protocol (or NO).
xntpd_program="ntpd" # path to ntpd, if you want a different one.
xntpd_flags="-p /var/run/ntpd.pid" # Flags to ntpd (if enabled).

往rc.conf追加上面3行内容,并修改。
客户端PC设定:
UNIX OS
# vi /etc/ntp.conf
server [local ntp server IP] prefer
driftfile /etc/ntpd.drift
或者追加下面内容到crontab,这样,每过一个小时0分的时候就自动更新。
# vi /etc/crontab
0 * * * * root ntpdate [ntp server IP] >/dev/null 2>&1
当然,你的主机其实也是一个客户机,这些内容也可以用上。
Windows
精工的网站上有下载软件,不过是日语的
http://www.seiko-p.co.jp/systems/down/time.html
windows2000自带了sntp机能,请自己研究吧。

原文链接: http://www.bsdlover.cn/html/12/n-112.html

FreeBSD NTP服务器配置笔记

一组服务器里面配置一台NTP服务器也是必要的,可以让所有服务器的时间同步。

一、配置NTP服务器

vi /etc/rc.conf

ntpd_enable="YES"

vi /etc/ntp.conf

server www.freebsd.org prefer
server time.windows.com
server 127.127.1.0
fudge 127.127.0.1 stratum 5

restrict default ignore
restrict 127.0.0.0 mask 255.0.0.0
restrict 192.168.0.0 mask 255.255.255.0 nomodify notrap

driftfile /var/db/ntp.drift

启动NTP服务:

/etc/rc.d/ntpd start

二、客户端配置

vi /root/scripts/synctime.sh

#!/bin/sh
/usr/sbin/ntpdate 192.168.0.100 #内网NTP服务器地址

chmod +x /root/scripts/synctime.sh
crontab -e

*/30 * * * * cd /root/scripts;./synctime.sh

这样客户端服务器每半小时就会和NTP服务器同步一次。

FreeBSD NFS架设

FreeBSD下的NFS配置

服务                 描述
nfsd NFS,          为来自NFS客户端的 请求服务。
mountd NFS          挂载服务,处理nfsd(8)递交过来的请求。
rpcbind             此服务允许 NFS 客户程序查询正在被 NFS 服务使用的端口。

配置NFS
NFS的配置过程相对简单。这个过程只需要 对/etc/rc.conf文件作一些简单修改。

安装rpc  #cd /usr/ports/math/rpc  make install clean

在NFS服务器这端,确认/etc/rc.conf 文件里头以下开关都配上了:

nfs_server_enable=”YES”
nfs_server_flags=”-u -t -n 4″
rpc_statd_enable=”YES”
rpc_lockd_enable=”YES”
mountd_flags=”-r”

只要NFS服务被置为enable,mountd 就能自动运行。

在客户端一侧,确认下面这个开关出现在 /etc/rc.conf里头:

nfs_client_enable=”YES”
nfs_client_flags=”-n 4″
像nfsd,-n 4告诉nfsiod运行自己的4个拷贝。

二,设置

etc/exports文件指定了哪个文件系统 NFS应该输出(有时被称为“共享”)。 /etc/exports里面每行指定一个输出的文件系统和哪些机器可以访问该文件系统。在指定机器访问权限的同时,访问选项开关也可以被指定。

格式:

[共享的目录] [主机名1或IP1(参数1,参数2)] [主机名2或IP2(参数3,参数4)]

下面是一些NFS共享的常用参数:

ro                      只读访问
rw                      读写访问
sync                    所有数据在请求时写入共享
async                   NFS在写入数据前可以相应请求
secure                  NFS通过1024以下的安全TCP/IP端口发送
insecure                NFS通过1024以上的端口发送
wdelay                  如果多个用户要写入NFS目录,则归组写入(默认)
no_wdelay               如果多个用户要写入NFS目录,则立即写入,当使用async时,无需此设置。
hide                    在NFS共享目录中不共享其子目录
no_hide                 共享NFS目录的子目录
subtree_check           如果共享/usr/bin之类的子目录时,强制NFS检查父目录的权限(默认)
no_subtree_check        和上面相对,不检查父目录权限
all_squash              共享文件的UID和GID映射匿名用户anonymous,适合公用目录。
no_all_squash           保留共享文件的UID和GID(默认)
root_squash             root用户的所有请求映射成如anonymous用户一样的权限(默认)
no_root_squas           root用户具有根目录的完全管理访问权限
anonuid=xxx             指定NFS服务器/etc/passwd文件中匿名用户的UID
anongid=xxx             指定NFS服务器/etc/passwd文件中匿名用户的GID

配置文件/etc/exports内容如下:

$ cat /etc/exports
/home/share 192.168.1.15(rw,sync) *(ro)
配置说明: 对192.168.1.15赋予读写权限,其他机器仅有只读权限。

四.客户端配置

1.查看NFS服务器的输出
#showmount -e 192.168.1.1
2.挂载NFS服务器中的共享目录到本地目录/mnt/下
#mount -t nfs 192.168.1.1:/home  /mnt/
3.卸载系统中已挂载的NFS共享目录
#umount /mnt/
4.修改fstab文件让系统启动时自动挂载NFS文件
#vi /etc/fstab
192.168.1.1:/home    /mnt    nfs     defaults    0 0

五、安全性
———
portmap: 111
NFS: 2049
防止使用IP欺骗和RPC重定向技术通过lo回环进行攻击以及限定授权主机:
iptables -A INPUT -p udp -d 127.0.0.1 –dport 111 -j DROP
iptables -A INPUT -p udp -d 127.0.0.1 –dport 2049 -j DROP
iptables -A INPUT -p udp -s 10.0.0.2 –dport 111 -j ACCEPT
iptables -A INPUT -p udp -s 10.0.0.2 –dport 2049 -j ACCEPT

原文链接:http://blog.chinaunix.net/u/27383/showart_499159.html

FreeBSD 8.0 NFS服务器配置笔记

一组服务器系统里面必然存在一台NFS服务器,实现多服务器的文件共享。
NFS服务器:nfs_server
NFS客户端:host1,host2,host3
共享目录:/share

一、NFS服务器配置

vi /etc/rc.conf

rpcbind_enable="YES"
nfs_server_enable="YES"
mountd_flags="-r"

二、客户端配置

vi /etc/rc.conf

nfs_client_enable="YES"

三、文件共享配置

vi /etc/exports

/share  -alldirs    host1 host2 host3

共享设置好了之后,重启NFS服务器以启动NFS服务。

四、客户端挂载NFS文件系统

mount nfs_server:/share /share

或者写进fstab让系统启动时自动挂载文件系统:
vi /etc/fstab

nfs_server:/share   /share  nfs rw  0   0

权限问题:最好让所有服务器上操作NFS共享文件的用户ID相同。

关于NFS的其他问题请参考FreeBSD手册。

原文链接: http://garey.bsdart.org/2010/11/freebsd-8-0-nfs%E6%9C%8D%E5%8A%A1%E5%99%A8%E9%85%8D%E7%BD%AE%E7%AC%94%E8%AE%B0/

FreeBSD桌面应用软件

桌面应用软件

FreeBSD拥有独立的内核和基本系统(包括常用的Unix命令、函数库等)。同时,多数可以在其他Unix,以及在Linux上运行的软件,也可以在 FreeBSD 上运行。下面列出一些日常用的软件

终端界面

虚拟终端

urxvt的特点是占内存少,启动速度快,中文支持好
xterm的特点是普及, 中文字体显示效果漂亮.
gnome-terminal 配置简单,界面不错,中文支持好。
mlterm 速度快,Unicode 支持好的虚拟终端。
full-screen window manager

screen用来开多个终端的软件,就算退出开的程序还在执行,下次还可以继续

浏览器

lynx 终端下面的浏览器。用户界面比w3m好。不过访问不了google
w3m 能访问google

邮件

mutt 小巧,强大,高度可配置的邮件客服端。用户界面好。配置麻烦。

新闻

slrn news阅览器。用户界面好。配置麻烦。
raggle rss阅读器。操作简洁,上手快。
Liferea rss阅读器。
gnus Emacs 内嵌的强大的 Email/News 阅读工具。

即时通讯

irssi irc工具.操作一流,配置简单,速度快。
weechat irc工具.集 irssi 优点。

多媒体工具

sox 瑞士军刀式的音频格式转换软件

安全工具

Clamav 开源的杀毒软件。安装,使用都简单。

图形用户界面

X Windows系统机理

xdm
X与3D加速重要,但是不晓得怎么说
X中文机制重要,但是不晓得怎么说

窗口管理器

fvwm 高度可定制。速度和内存占用看你怎么配置,界面可以异常简洁,也可以异常华丽。配置麻烦。
kde 非常成熟的桌面套件,基于Qt。进入4.5以后,不得不说很漂亮、很稳定。
gnome 开源的桌面套件。项目起步晚于kde,依赖于GTK库。

浏览器

firefox 桌面上面启动最慢的,内存占用最多,经常导致X崩溃的,不能不用的软件。看flash有点问题.
FireFox扩展 FireFox扩展是一个丰富多彩的世界
opera 有瑞士军刀的美称.
tor 俗称“套”。配合privoxy可以访问一些平时无法访问网站。

多媒体

MPlayer 能播放几乎所有格式电影的软件。速度极快,播放任何格式时,快进快退、拖动进度条都是瞬间完毕。
smplayer 它是mplayer的Qt界面封装品,KDE下不二的选择。
vlc 原生的Qt界面播放器。功能上可能不如mplayer,但是代码架构清晰,发展应该很快。
gqview 图片预览软件。

邮件

kmail 界面不错,操作不错
evolution Gnome 的邮件处理套件
Thunderbird Mozilla 的邮件处理程序
Sylpheed 界面简洁,操作不错;每封邮件都以文本保存,速度超快。

新闻

pan Gnome 新闻阅读软件。
knode KDE 新闻阅读软件。

即时通讯

xchat irc聊天工具。操作勉强。
eva中国人做的高度仿qq的聊天工具,界面不错,操作勉强。
pidgin gaim。聊天的,支持msn,qq,irc等。操作勉强。

文档及其编辑

LaTex一流排版系统.论文必备工具.生成漂亮版面,字体,数学公式,的PDF的工具.让你关注要写的内容,而让计算机来处理版面.
xpdf能看中文,不过要调整一下。操作不错。启动速度快。
Openoffice.org办公软件。
gimp专业的图像处理软件
denemo音乐打谱软件。操作不错。
blender 3d建模软件

科学与教育

R 统计学常用的计算软件,S的免费版本。
Maxima十分钟教程 用lisp写的符号计算数学工具。
scilab仿matlab的软件
solfege一个训练耳朵的软件。主要是和弦,音程,节奏听辨。增加你大脑里面音乐细胞数目的软件

下载和共享

amule界面不错,不常用的操作就不说了。特别强调的是,amule有命令行下面的界面,通过网页来配置的。

游戏

FretsOnFire 用键盘玩吉他的软件。界面,速度,操作不错。
美国陆军 超大。免费的商业水准的3D,FPS游戏。
tremulous 非常好玩的FPS/动作类联网游戏。网上人多。
supertux Linux/BSD下的超级玛丽,主角是企鹅。简单耐玩,堪称经典。

残障

flite英文语音合成软件。安装,使用都简单。

安全工具

ClamTKClamav的图形。安装,使用都简单。

原文链接:http://wiki.freebsdchina.org/faq/desktop

FreeBSD已测硬件清单

品牌服务器

品牌 型号 状态 已知问题 解决方法
Dell PowerEdge 1435 可用
Dell PowerEdge 1950(RAID) 可用
Dell PowerEdge 1950(SAS无RAID) 可用 某些型号会在启动时出现bce0: watchdog timeout或在检测到acd0之后停止响应 启用或禁用 MSI (消息信号中断) 支持(6.3或更高版本)
Dell PowerEdge 1850 可用 外接SCSI卡时,由于主板设计原因在高负载情况下会出现Interrupt Storm;
尽量避免外接SCSI卡与共享中断的网卡同时出现高负载
Dell PowerEdge 1750 可用
Dell PowerEdge 1650 可用
HP Proliant DL-140G3 可用 1. 仅能从网络安装
2. 安装完成后使用中一直有如下信息:
mpt0: QUEUE FULL EVENT: Bus 0x00 Target 0x02 Depth 65
解决方法:升级硬盘固件,或使用camcontrol降低tag数:
camcontrol tags da0 -N 64
HP Proliant DL380G4 可用
IBM x3250 可用
SUN
Lenovo

品牌笔记本

品牌 型号 状态 已知问题
Lenovo ThinkPad T61 可用 无线网卡目前不支持
Lenovo ThinkPad T60 可用 7.0以下版本无线网卡wpi不支持
Lenovo ThinkPad T43 可用
Lenovo ThinkPad R400 可用 蓝牙未尝试,摄像头可能无法使用,”硬盘安全气囊“可以检测震动但无法控制磁头

主板

品牌 型号 状态 已知问题
华硕 A8N-Sli-Deluxe 可用 N/A
华硕 M2A-VM 可用
华硕 P5B 可用 网卡经常失去响应
技嘉 GA-MA69VM-S2 可用 网卡经常失去响应
任何 intel-845pe 可用

显卡

型号 状态 备注
NV-fx5200 可用 完美

声卡

名字 状态 备注
intel-845pe-集成 可用 完美
ATI SB600 HDA(ASUS M2A-VM 集成) 可用 完美

USB设备

名字 状态 备注
蓝牙耳麦 不可用 仅指耳麦,非蓝牙其他

原文链接:http://wiki.freebsdchina.org/faq/hardware

配置你的csh/tcsh

选择 csh/tcsh

和许多刚从 Linux 转到 BSD 的人不同,我并没有装完 BSD 就顺手安装 bash,
因为之前除了打命令,我没有用到额外的功能,bash 也好,csh 也罢,在我眼里都是当做 shell 来用。
但是渐渐地,我发现 csh 真的挺好用,它小巧、简单、开放,不需要额外依赖。
可能有人要拿脚本能力来作对比,比如bash脚本支持函数,csh不支持等。
对我来说,其实我从未像模像样地写过一个脚本,我的工作是 C++ 程序员。
从我的角度来看,
论脚本能力,其实bash、csh、zsh都比不上Python,
论兼容性,bash、csh、zsh都比不上sh,
论强大,bash、csh、zsh都比不上C/C++,甚至asm。
再看易学程度,bash、csh、zsh可能还是要输给Python。
综上,脚本能力忽略不计。
好了,说了这么多大不敬的话,我们开始切入正题。

配置文件

全局配置文件 /etc/csh.cshrc
个人配置文件 ~/.cshrc或~/.tcshrc
为了方便,建议修改全局性的配置文件,这样每个账号都可以享受便利。
按键绑定

通常,我们不设置按键绑定也能很好地工作,
但是对于远程登录,可能需要一些额外的配置。
比如,为了避免putty登录后,Home、End、Delete等变成~,你需要如下配置:
bindkey ‘\e[1~’ beginning-of-line      # Home
bindkey ‘\e[3~’ delete-char            # Delete
bindkey ‘\e[4~’ end-of-line            # End
bindkey “^W” backward-delete-word      # Delete
bindkey -k up history-search-backward  # PageUp
bindkey -k down history-search-forward # PageDown
提示符

设置一个漂亮使用的的提示符可以让工作变得更愉快高效。
以下是一个合理的配置方案:
if ( $?prompt ) then                                #如果$prompt变量尚未设置,则做如下设置
if ( “$uid” == “0” ) then                      #判断用户的uid
set prompt = “%U%n%u@%m [%l] %B%~%b # ”    #对于root,我们显示“#”号
else
set prompt = “%U%n%u@%m [%l] %B%~%b % ”    #对于普通用户,显示“%”号。
endif
endif
Konsole中的效果如下:

一种彩色的配置方案如下:
set cr = “%{\e[31m%}” #开始红色
set cg = “%{\e[32m%}” #开始绿色
set c0 = “%{\e[0m%}”  #恢复为默认色彩

# Set some variables for interactive shells
if ( $?prompt ) then
if ( “$uid” == “0” ) then
set prompt = “%B%U%n%u@%m.$cr%l$c0%b %c2 %B%#%b ”
else
set prompt = “%B%U%n%u@%m.$cg%l$c0%b %c2 %B%%%b ”
endif
endif
Konsole中的效果如下:

颜色代码:
1 for brighter colors
4 for underlined text
5 for flashing text
30 for black foreground
31 for red foreground
32 for green foreground
33 for yellow (or brown) foreground
34 for blue foreground
35 for purple foreground
36 for cyan foreground
37 for white (or gray) foreground
40 for black background
41 for red background
42 for green background
43 for yellow (or brown) background
44 for blue background
45 for purple background
46 for cyan background
47 for white (or gray) background
查看更多参数,及其作用:
man tcsh  #查看man手册
/%/       #搜索到“%/”开始的地方
环境变量等

你在抱怨 FreeBSD下的 ls 没有显示颜色, grep 出来的东西没有高亮吗? 那么你需要如下的配置:
#让 ls 鲜艳些
setenv LSCOLORS ExGxFxdxCxegedabagExEx
setenv CLICOLOR yes
#让 grep 匹配到的字符高亮
setenv GREP_OPTIONS –color=auto
对于在KDE下使用fcitx的人,需要如下三行设置,
其实就是fcitx安装完后所提示的内容,如果你够细心的话。
setenv XMODIFIERS @im=fcitx
setenv QT_IM_MODULE xim
setenv GTK_IM_MODULE xim
嗯, ls 有颜色了,但是等等,为何 tab 不能补全?
你需要如下配置:
set autolist
如果命令输错了,让csh/tcsh 为你纠正:
set correct = cmd
为了在命令行启动某个游戏,或者kde程序,例如dolphin、kcalc,
你需要加两个路径到$path中去:
/usr/games /usr/local/kde4/bin/

set path = (/sbin /bin /usr/sbin /usr/local/bin /usr/games /usr/local/sbin /usr/bin $HOME/bin /usr/local/kde4/bin/)
黑魔法防御术

重定向防御

重定向很强大,我们有时候会运行诸如“date » b.txt”,“ls -l > files.txt”等命令。
然而如果一不小心,把“»”输成“>”会造成什么后果呢?
为此,tcsh提供了noclobber这个选项:
set noclobber
有了它,悲剧就不会发生。如果“>”的目标文件已存在,tcsh会拒绝重定向。
覆盖防御

是否遇到过“mv a b”,从而把有用的b文件覆盖掉了?
为此,我们要让mv和cp的行为更谨慎:
alias mv ‘mv -i’
alias cp ‘cp -i’
如果目标文件已存在,mv和cp会拒绝操作,除非使用参数“-f”。
误删防御

rm这个命令自从诞生起,就一直是个危险的操作。
我们可以让rm更温和:
alias rm ‘rm -i’
这样rm之前,会要求再次确认。
一切皆alias

前面,我们在黑魔法防御术中已经初步见识了alias。
alias不仅可以避免危险操作,还可以简化命令,自创命令。
除非极短,否则良好的alias命名,应当以某个统一的单词或字母开头,
例如下面即将展示的reload/edit系列、update系列、show系列等。
先展示最基本的alias,并逐条解释。
alias ..    ‘cd ..’       #两点即可回到上级目录
alias –        ‘cd -‘        #一杠返回上次的目录
alias q        ‘exit’        #退出登录
alias rm    ‘rm -i’       #误删防御
alias del   ‘rm -r’       #删除整个目录
alias mv    ‘mv -i’       #覆盖防御
alias cp    ‘cp -i’       #覆盖防御
alias ls    ‘ls -I’       #root状态下,默认不显示隐藏文件(.*)。BSD的ls很特殊,root默认显示所有文件。
alias la    ‘ls -a’       #显示所有文件
alias ll    ‘ls -h -l’    #显示文件权限和大小(以合理的单位)
alias lr    ‘ls -R’       #递归显示目录
alias dh    ‘df -h -a -T’ #以合适的单位显示所有磁盘的剩余空间,以及文件系统类型(如ufs、devfs、procfs)。
alias ds    ‘du -sh’      #以合适的单位显示查看每个文件/文件夹的大小
find/wc系列。快速查找当前目录下的所有c/cxx/python源码文件。结合wc可以统计行数。
alias find-c    ‘find . -name “*.h” -o -name “*.c”‘
alias find-x    ‘find . -name “*.h” -o -name “*.hpp” -o -name “*.cpp” -o -name “*.cxx”‘
alias find-py    ‘find . -name “.py”‘
alias wc-c    ‘find . -name “*.h” -o -name “*.c” | xargs wc | sort -k 4’
alias wc-x    ‘find . -name “*.h” -o -name “*.hpp” -o -name “*.cpp” -o -name “*.cxx” | xargs wc | sort -k 4’
alias wc-py    ‘find . -name “.py” | xargs wc | sort -k 4’
reload/edit系列。实现快速修改,载入配置文件。
alias reload-rc.conf  ‘sh /etc/rc’
alias reload-cshrc    ‘unalias * && source /etc/csh.cshrc’
alias edit-xorg.conf  ‘vim /etc/xorg.conf’
alias edit-csh.cshrc  ‘vim /etc/csh.cshrc’
alias edit-make.conf  ‘vim /etc/make.conf’
alias edit-kern.conf  ‘vim /etc/kernconf/thinkpad’
alias edit-rc.conf    ‘vim /etc/rc.conf’
alias edit-vimrc      ‘vim /usr/local/share/vim/vimrc’
set系列。快速设置locale。

alias setlocale-zhcn ‘setenv LC_ALL zh_CN.UTF-8 && setenv LANG zh_CN.UTF-8’
alias setlocale-c    ‘setenv LC_ALL C’
startx专用。
保持命令行下为英文locale(避免date等命令出现乱码),而让x环境为中文,适合手动startx而不是kdm的人。

alias sx ‘setenv LC_ALL zh_CN.UTF-8 && setenv LANG zh_CN.UTF-8 && startx && setenv LC_ALL C’
make系列。快速编译kernel/world。

alias make-world  ‘cd /usr/src && make buildworld && cd -‘
alias make-kernel ‘cd /usr/src && make kernel KERNCONF=thinkpad && cd -‘
alias make-installworld ‘cd /usr/src && make installworld && make delete-old && cd -‘
show系列。查看状态或某些信息。

alias show-ifstat    ‘systat -ifstat’    #查看网络接口的数据流量
alias show-geom        ‘gstat’             #查看I/O状态
alias show-thermal    ‘sysctl dev.acpi_ibm.0.thermal’  #查看ThinkPad笔记本的各部分温度
alias show-cpufreq    ‘sysctl dev.cpu.0.freq’          #查看当前cpu频率
alias show-cpulevels    ‘sysctl dev.cpu.0.freq_levels’   #查看可用的cpu频率
alias show-battery    ‘sysctl hw.acpi.battery.life && sysctl hw.acpi.battery.time’ #查看电力
alias show-smartctl    ‘smartctl -a /dev/ad4’           #需要安装smartmontools,查看磁盘smart参数
alias show-alldep    ‘make all-depends-list’            #需要在ports的安装目录下执行,显示所有依赖
alias show-dep        ‘portmaster –show-work ./ | sort’ #同上,且需要安装portmaster,只显示尚未安装的依赖
alias show-ver        ‘pkg_version -v’                   #查看是否有软件可更新
update系列。顾名思义,更新嘛。
alias update-locatedb    ‘/usr/libexec/locate.updatedb’            #更新locate数据库
alias update-kernsrc     ‘csup -L 2 /etc/supfiles/stable-supfile’  #同步kernel tree
alias update-ports       ‘portsnap fetch update’                   #同步ports tree
alias update-apps     ‘portmaster -a –force-config’            #需要安装portmaster,更新所有软件,提示配置选项
杂项,均需要安装第三方软件才能用。

alias lt    ‘tree -N -C’       #需要安装tree。树状显示目录,-N可以保证中文显示,-C使用彩色
alias l3    ‘tree -N -C -L 3’  #目录最多递归三级
alias l4    ‘tree -N -C -L 4’  #四级
alias l5    ‘tree -N -C -L 5’  #五级
alias l6    ‘tree -N -C -L 6’  #六级
alias v        ‘vim’              #不用说,我懒
alias m     ‘mocp’             #控制台下的cs架构播放器
alias getdir    ‘wget -c -r -np -k’                  #递归下载目录
alias ssh-home    ‘ssh raphael.vicp.cc -l root’        #用root账号登录,结合key可以免输密码
alias ftp-home   ‘ftp ftp://syh:syh@raphael.vicp.cc’ #BSD自带的ftp,免输账号密码。主机已被电信和工信部和谐,勿再试
alias lft-phome    ‘lftp raphael.vicp.cc -u syh,syh’    #lftp的免输账号密码。
alias scons    ‘scons -Q -j 4’                      #构建工具,默认4个线程进行
alias valgrind-checkmem ‘valgrind –tool=memcheck –leak-check=full’  #检查内存泄漏
最好的教材

最好的教材莫过于man手册,真的什么都有了。

man tcsh

原文链接:http://wiki.freebsdchina.org/howto/c/config_your_csh

FreeBSD ATI显卡与xorg配置记录

ATI显卡与xorg配置记录

ATI与NVIDA显卡是当前的两大主流显卡,相对来说ATI在被AMD收购以前对开源社区的支持不太热情,在FreeBSD中的驱动依赖于开源社区自己的努力。

对相对较新的显卡,主要使用radeon.ko模块和drm.ko模块驱动。具体支持的型号可以man radeon查询。 依据实验的情况和在google检索的结果,radeon驱动尚不支持AIGLX,compize fusion无法在7.0 beta2中正常工作。但radeon支持比较简单的3D建模,xfce4中已经可以使用混合模式,显现阴影和透明效果。(具体使用方法见设置–窗口管理器调整–混合设置)

目前radeon驱动已经支持AIGLX,2D/3D加速等特性。实验证明,在KDE4.5.1中,ATI Radeon 3470独立显卡可以开启KWin特效,并且跑得还挺流畅。

另一个需要说明的是ATI显卡支持XAA和EXA两种加速模式,其中EXA方式比较新,性能好出很多,特别在KDE桌面环境之下速度的提高比较明显,最近使用的情况来看也足够stable,建议在可能的情况下打开此选项。

案例:IBM T41,FreeBSD 7.0-beta2下/etc/X11/xorg.conf部分配置

Section "ServerLayout"
   Identifier     "XFree86 Configured"
   Screen      0  "Screen0" 0 0
   InputDevice    "Mouse0" "CorePointer"
   InputDevice    "Keyboard0" "CoreKeyboard"
   Option         "Clone" "off"
#    Option         "AIGLX" "True"          #打开AIGLX就黑屏
EndSection

Section "Monitor"
  Identifier     "Monitor0"
  VendorName     "Generic Monitor"
  ModelName      "Generic"
  DisplaySize    287    215                 #1024×768  90dpi,适合14.1"屏
EndSection

Section "Device"
  Identifier     "Card0"
  Driver         "radeon"                                  #也可以使用ATI,这是个wrapper,会自动侦测显卡类型,如果你用radeon有问题可以尝试换成ati
  VendorName     "ATI Video Driver"
      Option          "DynamicClocks"      "on"         #节能用的,显卡温度下降6-10度
      Option          "EnablePageFlip"     "on"
      Option            "AccelMethod"         "exa"        #使用EXA加速模式取代传统的XAA模式
      Option         "AccelDFS"          "true"
      Option          "FBTexPercent"           "0"
#        Option      "AGPFastWrite"        "True"       #试验性功能,怀疑不够稳定
      Option         "MonitorLayout"      "LVDS"       #强制LCD,使用CRT不能用此选项
      Option         "Dac6Bit"           "True"
      Option         "XAANoOffscreenPixmaps"  "true"
EndSection

Section "DRI"
   Group 0
   Mode 0666                           #普通用户也可使用DRI加速
EndSection

Section "Extensions"
  Option "Composite" "Enable"         #打开混合模式
EndSection

IBM T41使用的是ATI RADEON M7 LW显卡,即7500移动版,xorg启动后在/var/log/Xorg.0.log中grep到Direct rendering enabled.即表示3D功能激活,Composite enabled表示混合模式打开。

Tips:

1、UNTUTU 7.10已经支持compiz fusion,FreeBSD驱动滞后于linux。

2、fontconfig会覆盖xorg中关于DPI的设置。为了保证此设置生效,最好GNOME和KDE中在/etc/local/etc/fonts/local.conf中加入

<!–
   Target dots per inch, change 90 to yours
–>
      <match target="pattern" >
              <edit name="dpi" mode="assign" >
                      <double>90</double>
              </edit>
      </match>
     
如果是使用xfce4,在家目录下修改./.config/xfce4/Xft.xrdb文件,加入一行Xft.dpi:90即可。

如果总是不能设置正好的屏幕分辨率. 可以在 textmode下以root 身份运行

  gtf 1024 768 85
 
来生成Modules.把生成的Modules加入到你的Xorg.conf中。

原文链接:http://wiki.freebsdchina.org/doc/x/xorg_with_ati

FreeBSD的Ports系统

FreeBSD的Ports系统

什么是 Ports 系统

简单的讲,一个 port 就是一个被移植到了 FreeBSD 上的软件。所有这些软件的集合,加上 FreeBSD 处理这些软件的各种工具,就是 Ports 系统。

Ports 系统有什么用

每一个被移植到 FreeBSD 上的软件(就是 Port),都能通过 Ports 系统中的工具方便有序的安装,升级,卸载。而且符合 FreeBSD 系统对应用软件施加的各种规范。免去了你到处寻找软件,自己编译,安装,升级的麻烦。借助这些 ports 维护者的努力,你也不用担心这些软件与系统不兼容导致无法安装升级等等。

怎么安装 Ports 系统

有三种方法来安装 Ports 系统:

1 安装系统时选择安装 Ports 系统

这是最简单的方法,但是也有缺点。因为 Ports 系统总是随时更新的。因此你从安装光盘上安装的 Ports 系统肯定不是最新的了。

2 使用 portsnap 安装/同步 ports 系统

这是推荐的方法。使用portsnap不需要事先安装 ports tree,并且能够在任何时候恢复到已知的最新状态(即使手工对ports tree进行了修改)。

使用 portsnap 分成两个步骤:下载压缩的 portsnap 快照,和更新现有系统。下载或更新 portsnap 快照的方法是 portsnap fetch;首次安装,或希望将 ports tree 恢复到快照的样子,应使用 portsnap extract;之后更新系统中的 ports tree,则可以通过 portsnap update 来完成。对于服务器而言,推荐在 crontab 中增加在每天3点执行 portsnap cron,以减少使用时所需要的下载时间。

首次下载 portsnap 快照时,需要下载一个大约50MB的快照基础文件。在中国大陆,由于网络状况的原因,这可能需要较长时间。可以考虑用 portsnap fetch -s portsnap.cn.freebsd.org 做首次下载;之后的下载,还是推荐使用正常的 portsnap fetch。

可以使用下面步骤完成上述情况

1.首先设置一个比较快的portsnap服务器,如果系统默认的地址你的访问速度也很快,可以不修改

#vi /etc/portsnap.conf设置SERVERNAME=portsnap.cn.freebsd.org ,你可以设置相对你速度快点的服务器的地址

2.执行下面命令

#portsnap fetch extract    这里直接下载ports并且解压这样就完成了下载ports系统以及解压到/usr下面了

3.设置最快的ports镜像

用ports安装软件的时候,如果没有设置相对于你来说最快的ports服务器地址,那就会默认的 ftp://ftp.freebsd.org/pub/FreeBSD/ports/distfiles/,这个地址对于很多地方来说是很慢的。

修改 /etc/make.conf 加入以下代码

MASTER_SITE_OVERRIDE=\
ftp://ftp.freebsdchina.org/pub/FreeBSD/ports/distfiles/${DIST_SUBDIR}\
ftp://ftp.tw.freebsd.org/pub/FreeBSD/ports/distfiles/${DIST_SUBDIR}如果你有最快的地址,可以加到上面去,下载就会块了

3 使用 csup/cvsup 安装/同步 Ports 系统

这种方法已经不再推荐使用。

不管事先你有没有安装 Ports 系统,你都可以使用 csup/cvsup (推荐使用 csup,这是基本系统中自己带的)来安装/同步最新的 Ports 系统。把 /usr/share/examples/cvsup/ports-supfile 拷贝到一个地方(比如 /home/user/tmp/ports-supfile),然后作适当的修改(比如修改要连接的服务器)。最后使用如下命令来安装/同步:

csup -L 2 /home/user/tmp/ports-supfilePorts 树的目录结构

假设你的 ports 树安装在默认位置 /usr/ports。

文件:

/usr/ports/CHANGES # ports 开发者、维护者等的记录文档。
/usr/ports/COPYRIGHT # ports 树的版权。
/usr/ports/GIDs # 一些 port 可能用到的组名称。
/usr/ports/INDEX-xxx # 每个 port 的摘要
/usr/ports/KNOBS # 编译 port 时需要的一些环境变量与解释。
/usr/ports/LEGAL # 某些 port 的协议限制。
/usr/ports/MOVED # 被移动/删除了的 port 列表。
/usr/ports/Makefile # ports 树总的 BSD Makefile。
/usr/ports/README
/usr/ports/UIDs # 一些 port 可能用到的用户名称。
/usr/ports/UPDATING # ports 树的更新记录以及建议。目录:

/usr/ports/Mk # 编译 port 需要的 Makefile 集合。
/usr/ports/Templates # 一些模板。
/usr/ports/Tools # 一些工具。
/var/db/ports # 包含所有进行过配置的可定制 port 的可选变量。每一个 port 占用一个目录。
/var/db/pkg # 包含所有已经安装的 port 的记录。用 pkg_add 安装的预编译好的包也会在此留下记录。除开以上文件和目录,其他所有的目录都是 ports。一个 port 的目录结构:

/usr/ports/分类/名称比如 firefox 被分类在 www。因此 firefox 在 ports 树中的位置就是:

/usr/ports/www/firefox使用 Ports 系统

1 查询

比如,你想知道 ports 中是否有 pidgin 这个软件,那么可以这样:

$cd /usr/ports
$make search key=pidgin同样也可以使用

$cd /usr/ports
$make search name=pidgin用上面两种方法查询时,显示的信息比较详细,包括维护者、依赖包、主页等内容。如果只想显示所在的路径和软件名称,则可以用

$cd /usr/ports
$make quicksearch name=php这样可以使显示的结果更清晰。

/usr/ports/README 中还有更多的例子可以参考。

2 安装

非常简单。比如你要安装 firefox,那么作为超级用户 root:

#cd /usr/ports/www/firefox
#make install clean3 卸载

要卸载 firefox 的话:

#cd /usr/ports/www/firefox
#make deinstall clean4 升级

要升级 firefox:

#cd /usr/ports/www/firefox
#make deinstall reinstall clean5 定制 port

有时候,你会发现安装某个 port 的时候会有奇怪的事情发生。比如 editors/vim,安装的时候竟然会自动安装 glib1 和 gtk1,而明明自己的系统上已经有了 glib2 和 gtk2。

这是因为有些 port 有很多不是默认的编译选项。这个时候你需要设定一些环境变量让 port 知道该怎么做。对于 editors/vim,你需要设定 WITH_GTK2 来让 vim 依赖 gtk2 而不是 gtk1。

你可以在 csh 下:

setenv WITH_GTK2或者在 bash 下:

export WITH_GTK2=yes也可以把这个选项写到 /etc/make.conf 里面:

WITH_GTK2=yes或者你也可以指定在更新/安装某个 port 的时候使用特定的环境变量。添加如下代码(注:csh 的语法,不是 sh/bash)到 /etc/make.conf 里面:

.if ${.CURDIR:M*/ports/editors/vim}
WITH_GTK2=yes
.endif这样下次升级 editors/vim 的时候就会自动依赖到 gtk2 而不是 gtk1 了。

类似的例子还包括 WITH_GECKO 环境变量。请阅读 ports/Mk/bsd.gecko.mk 来获得详细资料。

定制 Ports 系统

1 设定 Ports 树的位置

当你把 Ports 树放在非默认位置(/usr/ports)的时候,就需要修改一些环境变量让 Ports 中的工具知道你的修改。这个变量就是 PORTSDIR。 比如,你把 Ports 树放在了 /opt/ports,那么 在 sh/bash 中,执行如下命令:

export PORTSDIR=/opt/ports在 csh 中,你需要执行如下命令:

setenv PORTSDIR /opt/ports妥贴的办法是把这个环境变量放到超级用户 root 的 dot.cshrc 文件(/root/.cshrc)里面。又或者你想让普通用户也能用到这个环境变量,可以考虑放到 /etc/profile 或者 /etc/csh.cshrc 里面。

注意!如果你使用 portsnap 命令来同步 Ports 树,而你的 Ports 树不在默认位置,请在 /etc/portsnap.conf 中也设定你的 Ports 树的位置。

注意!如果你使用 csup/cvsup 同步 Ports 树,而你的 Ports 树不在默认位置,请在你的 ports-supfile 中也设定你的 Ports 树的位置。

2 设定 dist 文件的位置

所谓 dist 文件,就是 port 的源码。一般情况下,这些源码都是用 tar 打包然后用 bzip2 压缩的。默认的位置是在 $PORTSDIR/distfiles。 但是,你也可以把这些 dist 文件放到另外的地方。需要设定的环境变量就是 DISTDIR。你可以根据上面的例子来设定这个环境变量。

3 设定工作目录

如果没有设定工作目录,ports 系统默认在 port 的目录进行编译。比如你的 firefox 在 /usr/ports/www/firefox,那么默认将在 /usr/ports/www/firefox/work 下编译 firefox。这样有一个缺点,如果你的 /usr 目录不是很大的话,在编译某些大软件的时候,比如 gnome,kde 桌面系统时,你的 /usr 空间可能会不足。

解决的办法之一就是设定环境变量 WRKDIRPREFIX,比如

export WRKDIRPREFIX=/opt/obj/portbld这个时候 ports 系统就会到 /opt/obj/portbld/usr/ports/www/firefox/work 下编译 firefox。

Ports 管理工具

1 系统自带的工具

同步 ports

portsnap 是同步 ports 用的,前文已经作了介绍。

详细用法参照这里[URL:http://www.freebsd.org/doc/zh_CN.GB2312/books/handbook/ports-using.html](搜索“Portsnap 方式”)

为了方便,我在 csh 的配置文件里写入了如下 alias :

alias update-ports ‘portsnap fetch update’大家不妨参考一下。

维护 ports

pkg_add

pkg_create

pkg_delete

pkg_info

pkg_updating

pkg_version

注:

1.具体的用法请参考手册中的4.4、4.5节[URL:http://www.freebsd.org/doc/zh_CN.GB2312/books/handbook/ports.html]。

2.严格来说,pkg_add,pkg_updating并不是用于 ports 的工具,它们只能用于 package 。这里只是为了让大家全面了解,哪些是官方的东西。

2 推荐的第三方工具

主要工具

portupgrade

portupgrade是一个强大全面的工具,但是依赖于ruby。

个人没有用过,所以不多作评论,大家可以试一下。

portmaster

portmaster是一套仅使用系统软件,而不依赖其他ports的工具。

因为它没有依赖,很“纯”,功能也够用,所以个人比较推崇这个。

我在csh的配置文件里写了关于portmaster的如下alias:

alias update-apps ‘portmaster -a –force-config’
alias show-dep ‘portmaster –show-work ./ | sort’前者用来更新所有ports,并强制make config。

后者用来显示该软件的依赖,按已装和未装排序,需要事先进入那个软件的目录才能执行。

辅助工具

pkg_rmleaves

这个工具可以用来删除用不着的软件,其作用相当于Gentoo的emerge –depclean,或者Debian的orphaner(deborphan这个包)

它首先列出所有不被其他软件所依赖的“叶子节点”,或者说“孤立的软件包”(这意味着删除它们不会影响依赖关系)。

然后你可以手动指定哪些软件是你不需要的,

选中执行[OK]后,它会进一步筛选“叶子节点”。

如此递归之后,它可以保证该软件及其(不被其他软件依赖的)依赖被彻底清除。

pkg_cleanup

这个工具的作用和pkg_rmleaves完全一样,其工作原理也一致,不用担心两者冲突或者哪个剔除起来更彻底。

唯一的区别在于,这个软件能充分利用你的显示屏,另外能在上方显示出每个软件的描述,

比如上图中,光标停在了amarok这一行,它的上面就显示出amarok的介绍:“Media Player for KDE4”。

但是它存在一个“bug”,启动的时候光标虽然在第一行,但它不会显示描述,除非你上下移动光标。

这个小问题在man手册中有提及。总得来说它还是瑕不掩瑜。

pkg_cutleaves

这个工具也是用来清理孤立软件包的,它没有图形界面,

但是它支持配置文件,可以预先设定你需要保留的软件包,以后就直接cut,不必每次都做选择。

pkg_search

可能有的同学要问,怎样才能快速找到某个ports的位置呢,locate?find?

这个时候,我要向你推荐pkg_search。

pkg_search <name>可以让你快速找到该软件包的版本和描述,而加上参数-r,就可以知道它的位置。

pkgsearch

这个工具的作用和上述相同,但是它需要建立一个数据库,而且每次更新ports之后也要更新数据库。

看起来它的工作方式接近于Gentoo的eix。

portconf

它是用来设置全局的编译标记的,类似于Gentoo中设置的USE标记。 (详细内容待撰,哪位对它比较熟悉的帮个忙吧)

Ports 开发工具

portlint

当你写了一个新的 port 之后,可以使用 portlint 来检查自己的 port 是否符合 FreeBSD ports 的规范。

相关链接

中文 FAQ [URL:http://cnsnap.cn.freebsd.org/doc/zh_CN.GB2312/books/faq/applications.html]

中文手册 [URL:http://cnsnap.cn.freebsd.org/doc/zh_CN.GB2312/books/handbook/ports.html]

中文 Porter 手册 [URL:http://cnsnap.cn.freebsd.org/doc/zh_CN.GB2312/books/porters-handbook/]

FreshPorts 查看所有 ports 更新的站点 [URL:http://www.freshports.org/]

原文链接:http://wiki.freebsdchina.org/faq/ports