FreeBSD下sudo的使用

FreeBSD下sudo的使用

sudo是OpenBSD的一部分,其作者是 Todd C. Miller。在 FreeBSD 中可以使用 ports 或 package 来安装。

下面来安装并使用sudo吧!!

  1)安装sudo(两种安装方法):
      a: 从 ports 安装(推荐)
         #cd /usr/ports/security/sudo
         #make install clean
      b: 通过 package 安装
         #pkg_add -r sudo

  2)配置sudo
     sudo的配置文件在/usr/local/etc/sudoers里面。sudo的配置文件不应直接编辑,而应使用 visudo 来进行修改。
     配置权限的格式如下:
        USER MACHINE=(EFFECTIVE USER)  [NOPASSWD:] COMMAND
      第一列(USER)指定要授权的帐号。第二列(MACHINE)定义在那些机器上,这条执行生效,其好处是在多台机器上使用同一份配置文件。括号里的(EFFECTIVE USER)是使用指定实际执行该命令的帐号,
      这就方便一个帐号允许用另外一个帐号来执行特定的命令,而不非得是root帐号。第四列(COMMAND)是指定的命令. NOPASSWD是可选项代表USER在sudo到某身份时不必输入该身份的密码即可执行命令。
     下面是配置sudo的简单方法:
        M-gtuiw ALL=(ALL) ALL
     指定了M-gtuiw可以在任何地点以任何身份执行整个系统的全部命令。
       %wheel ALL=(ALL) ALL
     这个命令指定了wheel这个组的用户可以在任何地点以任何身份执行整个系统的全部命令。
        M-gtuiw ALL=(apache) /usr/bin
     指定了M-gtuiw可以在任何地点但只能以apache用户身份且只能执行/usr/bin目录下的命令。
        M-gtuiw ALL= /usr/bin
     等同于M-gtuiw ALL=(root) /usr/bin

  3)设置密码在一段时间后自动退出
     Defaults:M-gtuiw     timestamp_timeout=0, runaspw, passwd_tries=1
     记住: 在 Defaults:M-gtuiw 这个地方不允许有空格出现。下同:     
     这段句子有三个功能:
     1)M-gtuiw需要root的密码才能运行sudo(句子中runaspw的缘故)。
     2)这密码没有被系统记住(因为有timestamp_timeout=0的缘故),用了一次的sudo之后当再次使用时又得输入root密码。
       如果将timastamp_timeout改为-1话,M-gtuiw只须去验证一次密码,之后将记住了M-gtuiw输入的密码,当第二次,第三次
       使用sudo的时候都不用输入root密码了直到退出登录。
       当然,其它的用户也可以这样,但须要不同的帐户和缺省值。在这里我们只改变M-gtuiw和增加一个新的用户“limda”:
          Defaults:M-gtuiw               timestamp_timeout=0
          Defaults:limda                  timestamp_timeout=-1, runaspw
          #user privilege specification
          root          ALL=(ALL) ALL
          M-gtuiw       ALL=(ALL) ALL
          limda         ALL=(ALL) ALL
       M-gtuiw和limda拥有不同的缺省值。“Defaults”影响着每个用户使用sudo不同的权限。

  4)sudo默认使用系统的 /var/log/messages 作为其日志文件;除此之外,也可以采用另外的日志,以便于进行审计。
      Defaults logfile=/var/log/sudolog
      记住,在上面没有 : 啊。

  5) 限制sudo使用危险的命令:
        M-gtuiw ALL=/bin/kill, /usr/sbin/
  这里说明M-gtuiw用户只可以使用/bin/kill这个命令和/usr/sbin/里面的命令。
        M-gtuiw lnserve=(paul, limda) /bin/kill, /usr/sbin/
  说明了M-gtuiw只能在lnserv指定的机算机中以paul和limda的身份使用/bin/kill和/usr/sbin里面的命令。

  6)sudo限制使用某些命令
        M-gtuiw ALL=ALL, !/bin/rm
  这里说明了M-gtuiw可以用除了/bin/rm之外的所有命令,在/bin/rm前面加上 ! 号就是为了限制使用这个命令。
  这是我在sudo的网页里翻译出来的一些简单文本,本人的英文不是很好,翻译的不是很好,欢迎各位前来修正。

  7)sudo时不输入密码直接执行命令
        M-gtuiw ALL=(ALL) NOPASSWD: /usr/local/sbin/VBoxClient,/sbin/mount -t ntfs /dev/hda5 /d-driver
  这里说明M-gtuiw在执行/usr/local/sbin/VBoxClient以及mount hda5时,不必输入root密码就可以root权限执行,
  这里RUNAS为ALL实际上是指M-gtuiw可以sudo成任何身份且不必输入该身份的密码就可以执行后面的命令,当然root身份也不在话下。
  NOPASSWD特别危险切记要让正确的人使用正确的命令。
        M-gtuiw ALL=(ALL) NOPASSWD: ALL
  这里说明M-gtuiw执行所有命令都不必输入密码,这极其危险。慎用。
        M-gtuiw ALL=(ALL) ALL, NOPASSWD: /sbin/mount -t ntfs /dev/hda5 /d-driver
  也可以让M-gtuiw用户可以sudo所有命令,但只针对某些命令不必输入密码。

原文链接:http://wiki.freebsdchina.org/doc/s/sudo_with_sudo

FreeBSD系统配置Java环境

FreeBSD系统配置Java环境

简述

Java最早于1998年引入 FreeBSD。

通常我们使用的 JDK 是来自 Sun 的 JDK。由于授权的原因,目前JDK需要手工下载之后才能安装。

在FreeBSD平台上,最新版本的JRE/JDK为:Diablo JRE/JDK 1.5.0-7。

在FreeBSD中你可以使用多种方式来安装JDK:

使用Linux模拟环境来运行For Linux版本的Sun/IBM JDK(以下简称Linux JDK)
使用freebsdfoundation提供的binaries package来安装JDK(以下简称Binaries JDK)
使用ports来安装JDK(以下简称Ports JDK)

这里你可以自己选择使用哪种方式:

方式 优点 缺点
Linux JDK 可以作为排除问题时的参考 它不是FreeBSD本地代码,需要安装Linux二进制兼容环境如Fedora;有时Linux JDK会有一些bug
Binaries JDK (“DiabloJDK”) 下载就可以安装,不需要编译器,安装速度很快 没有编译的快感,也不能设定编译时的一些参数;有时Diablo JDK也会有一些bug,由于认证需求无法及时更新
Native JDK 版本最新,将来升级会简单,在编译时能有自己定义的能力 需要很久的时间和比较多的磁盘空间,也许你应该考虑在晚上睡觉前开始这个工作

一般而言,由于已经有了 Diablo JDK,现在已经不再推荐在 FreeBSD 上透过 Linux 仿真来使用 Linux JDK 了。

以下就JDK在FreeBSD上的安装方法进行分别的说明,希望你能找到适合你的方法安装一个好用的FreeBSD JDK。

通过 ports 来安装 Diablo JDK

这是一个非常快速的方法,因为除去下载的时间,你只需要两分钟就完成了一个可以使用的JDK环境。如果使用 FreeBSD 6.x,则推荐使用这种方法。

注意:Diablo JDK 在 FreeBSD 7.x 上运行时 可能 会有一些问题,这时,可以用它作为boostrap JDK来编译自己的native JDK。

通常安装 Diablo JDK 时,应使用 ports 来进行安装。这主要是因为几个原因:

有时,需要对 Diablo JDK 进行小幅度的调整,例如更新时区数据等等。如果只是下载 FreeBSD 基金会提供的 package 直接安装,则没有这方面的好处。
ports会帮你搞定 Diablo JDK 所需的全部依赖关系。
ports安装几乎和直接pkg_add一样快。

首先,我们需要同步 ports tree;随后,进入 ports/java/diablo-jdk15,并执行:

make checksum

这时,ports系统会检查当前的 distfiles 目录(通常是 /usr/ports/distfiles)中是否已经有了所需的文件。如果没有的话,ports会提示你到指定的地点下载相关的文件并放到 /usr/ports/distfiles 目录中。

首先你需要知道FreeBSDFoundation的Java下载页面,这里提供了现在可以使用的多个JDK的版本,在每一个版本上我们都可以得到Packages和Tarballs两种形式的版本。使用 ports 方式安装时,应下载 tarball 格式的版本。 package 格式的版本的可执行文件,与tarball格式中的可执行文件是完全一样的。ports会判断你使用的架构名称,并告诉你需要下载的文件名字。但是自FreeBSD 8.0之后,由于授权问题,已经不提供已编译好的二进制版本的针对FreeBSD 8的JRE/JDK下载,若要在FreeBSD 8.0以上版本中使用Java,必须自行编译。

确认无误之后,请再次执行:

make checksum

以便让 ports 系统确认文件的完整性。如果没有问题,我们就可以安装它了:

make install clean

这样,ports系统会自动完成所需的全部操作。

使用Ports来安装Native JDK

我们常说的 Diablo JDK,实际上是 FreeBSD 基金会根据 native JDK 来进行联编,并获得了 Sun 认证的版本。与其他二进制形式的包,如 Linux JDK 类似,作为预编译的版本,尽管其拥有节省时间、便于使用的优点,但是在发生一些小bug时,这些版本未必会及时跟进更新。

与此相反,FreeBSD本身的 native JDK 开发团队也在活跃地维护着一个以源代码编译方式的 port,这个 port 会经常跟进 BSD Java Porting Project 的最新 patchset。由于目前 Sun JDK 编译时要求已经有一个可用的 JDK 版本,因此你需要首先安装一个 JDK,这个 JDK 可以是 native JDK,也可以是 Diablo JDK 或 Linux JDK。接下来,就可以开始编译了。

首先同步 port,然后到 /usr/ports/java/jdk15 中执行 make install clean。在这个过程开始时,ports系统会告诉你去两个地方分别下载 Sun 提供的源代码、源代码 binary、Mozilla 头文件和时区定义更新,以及 EyesBeyond 提供的 BSD Java Patchset。整个过程需要大约2GB的剩余磁盘空间,并需要大量的内存。

制作 package

由于 Sun 授权的限制,我们不能对外直接发布 native JDK 的 package。但是对于企业用户而言,如果有很多机器都需要安装 native JDK,一台一台地编译是一件十分耗时,而且很不环保(浪费电,并促进全球变暖)的事情。想要制作 package,可以在 /etc/make.conf 中加入:

FORCE_PACKAGE=yes

然后就可以使用make package,或 portupgrade -p 来制作 package了。

原文链接:http://wiki.freebsdchina.org/doc/j/java_environment

FreeBSD-SA-10:10.openssl

—–BEGIN PGP SIGNED MESSAGE—–
Hash: SHA1

=============================================================================
FreeBSD-SA-10:10.openssl                                    Security Advisory
The FreeBSD Project

Topic:          OpenSSL multiple vulnerabilities

Category:       contrib
Module:         openssl
Announced:      2010-11-29
Credits:        Georgi Guninski, Rob Hulswit
Affects:        FreeBSD 7.0 and later
Corrected:      2010-11-26 22:50:58 UTC (RELENG_8, 8.1-STABLE)
2010-11-29 20:43:06 UTC (RELENG_8_1, 8.1-RELEASE-p2)
2010-11-29 20:43:06 UTC (RELENG_8_0, 8.0-RELEASE-p6)
2010-11-28 13:45:51 UTC (RELENG_7, 7.3-STABLE)
2010-11-29 20:43:06 UTC (RELENG_7_3, 7.3-RELEASE-p4)
2010-11-29 20:43:06 UTC (RELENG_7_1, 7.1-RELEASE-p16)
CVE Name:       CVE-2010-2939, CVE-2010-3864

For general information regarding FreeBSD Security Advisories,
including descriptions of the fields above, security branches, and the
following sections, please visit <URL:http://security.FreeBSD.org/>.

I.   Background

FreeBSD includes software from the OpenSSL Project.  The OpenSSL Project is
a collaborative effort to develop a robust, commercial-grade, full-featured
Open Source toolkit implementing the Secure Sockets Layer (SSL v2/v3)
and Transport Layer Security (TLS v1) protocols as well as a full-strength
general purpose cryptography library.

II.  Problem Description

A race condition exists in the OpenSSL TLS server extension code
parsing when used in a multi-threaded application, which uses
OpenSSL’s internal caching mechanism.  The race condition can lead to
a buffer overflow. [CVE-2010-3864]

A double free exists in the SSL client ECDH handling code, when
processing specially crafted public keys with invalid prime
numbers. [CVE-2010-2939]

III. Impact

For affected server applications, an attacker may be able to utilize
the buffer overflow to crash the application or potentially run
arbitrary code with the privileges of the application. [CVE-2010-3864].

It may be possible to cause a DoS or potentially execute arbitrary in
the context of the user connection to a malicious SSL server.
[CVE-2010-2939]

IV.  Workaround

No workaround is available, but CVE-2010-3864 only affects FreeBSD 8.0
and later.

It should also be noted that CVE-2010-3864 affects neither the Apache
HTTP server nor Stunnel.

V.   Solution

Perform one of the following:

1) Upgrade your vulnerable system to 7-STABLE or 8-STABLE, or to the
RELENG_8_1, RELENG_8_0, RELENG_7_3, or RELENG_7_1 security branch
dated after the correction date.

2) To update your vulnerable system via a source code patch:

The following patches have been verified to apply to FreeBSD 7.1, 7.3,
8.0 and 8.1 systems.

a) Download the relevant patch from the location below, and verify the
detached PGP signature using your PGP utility.

[FreeBSD 7.x]
# fetch http://security.FreeBSD.org/patches/SA-10:10/openssl7.patch
# fetch http://security.FreeBSD.org/patches/SA-10:10/openssl7.patch.asc

[FreeBSD 8.x]
# fetch http://security.FreeBSD.org/patches/SA-10:10/openssl.patch
# fetch http://security.FreeBSD.org/patches/SA-10:10/openssl.patch.asc

b) Execute the following commands as root:

# cd /usr/src
# patch < /path/to/patch
# cd /usr/src/secure/lib/libssl
# make obj && make depend && make && make install

NOTE: On the amd64 platform, the above procedure will not update the
lib32 (i386 compatibility) libraries.  On amd64 systems where the i386
compatibility libraries are used, the operating system should instead
be recompiled as described in
<URL:http://www.FreeBSD.org/handbook/makeworld.html>

3) To update your vulnerable system via a binary patch:

Systems running 7.1-RELEASE, 7.3-RELEASE, 8.0-RELEASE or 8.1-RELEASE
on the i386 or amd64 platforms can be updated via the
freebsd-update(8) utility:

# freebsd-update fetch
# freebsd-update install

VI.  Correction details

The following list contains the revision numbers of each file that was
corrected in FreeBSD.

CVS:

Branch                                                           Revision
Path
– ————————————————————————-
RELENG_7_3
src/UPDATING                                             1.507.2.34.2.6
src/sys/conf/newvers.sh                                   1.72.2.16.2.8
src/crypto/openssl/ssl/s3_clnt.c                       1.1.1.14.2.1.4.1
RELENG_7_1
src/UPDATING                                            1.507.2.13.2.19
src/sys/conf/newvers.sh                                   1.72.2.9.2.20
src/crypto/openssl/ssl/s3_clnt.c                           1.1.1.14.6.2
RELENG_8_1
src/UPDATING                                             1.632.2.14.2.5
src/sys/conf/newvers.sh                                   1.83.2.10.2.6
src/crypto/openssl/ssl/s3_clnt.c                            1.3.2.1.2.1
src/crypto/openssl/ssl/t1_lib.c                             1.2.2.1.2.1
RELENG_8_0
src/UPDATING                                              1.632.2.7.2.9
src/sys/conf/newvers.sh                                    1.83.2.6.2.9
src/crypto/openssl/ssl/s3_clnt.c                                1.3.4.1
src/crypto/openssl/ssl/t1_lib.c                                 1.2.4.1
– ————————————————————————-

Subversion:

Branch/path                                                      Revision
– ————————————————————————-
stable/7/                                                         r215997
releng/7.3/                                                       r216063
releng/7.1/                                                       r216063
stable/8/                                                         r215912
releng/8.0/                                                       r216063
releng/8.1/                                                       r216063
– ————————————————————————-

VII. References

https://bugzilla.redhat.com/show_bug.cgi?id=649304
http://www.openssl.org/news/secadv_20101116.txt
http://www.mail-archive.com/openssl-dev@openssl.org/msg28043.html
http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2010-2939
http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2010-3864

The latest revision of this advisory is available at
http://security.FreeBSD.org/advisories/FreeBSD-SA-10:10.openssl.asc
—–BEGIN PGP SIGNATURE—–
Version: GnuPG v1.4.9

iEYEARECAAYFAkz0FdsACgkQFdaIBMps37JjAgCcC7NSDXR7P4d2y4XFF/Ce9sG1
Bs8An36Pjplsfovx6Im/NCnVgHtVgj5x
=xU/h
—–END PGP SIGNATURE—–

原文链接:http://security.freebsd.org/advisories/FreeBSD-SA-10:10.openssl.asc

FreeBSD系统make.conf文件详解

FreeBSD系统make.conf文件详解

make.conf的主要功能

make.conf是 FreeBSD 中 make(1) 的配置文件。如果不了解改变这些配置可能带来的副作用,则不应修改其中的任何配置。

通过修改 make.conf 可以达到下面这些目的:

优化系统:设定系统的处理器类型、编译参数、优化级别。
配置系统的升级服务器以及升级内容:告诉系统去哪里下载kernel和userland的源代码和ports的代码树、去哪里下载ports编译时使用源代码包。
不过,许多时候可能会希望使用另外一些配置文件来达到类似的目的。由于 make.conf 是全局的 FreeBSD make(1) 配置,对其进行不适当的改动,特别是添加优化选项,非常容易导致各种各样的问题,因此一般情况下不需要修改这个文件。

其他一些与 make.conf 起类似作用,但范围受限的 make(1) 配置文件,包括 src.conf(5) 和 ports.conf,关于如何使用这些文件的具体介绍,请参见本文末尾的“参阅”部分。

make.conf的主要文档

make.conf(5)[URL:http://www.freebsd.org/cgi/man.cgi?query=make.conf&sektion=5&format=html]
src.conf(5)[URL:http://www.freebsd.org/cgi/man.cgi?query=src.conf&sektion=5&format=html]
/usr/share/examples/etc/make.conf

make.conf的基本原理

FreeBSD 的 make(1) 在执行联编操作的时候会引用 /usr/share/mk/sys.mk。如果 make(1) 不是以完全 POSIX 模式运行,则后者会引入 /etc/make.conf (或由 make 变量 MAKE_CONF 所定义的其他文件,例如,如果需要在某一次联编过程中临时禁用 make.conf,可以在 make 时指定 MAKE_CONF=/dev/null)。

希望在联编过程中传递给 make 程序本身,或作为环境传递给编译器等其他程序的参数,可以通过 make.conf 来指定。再次强调, make.conf 是一个全局的配置,在增加配置时,其内容会影响 所有 使用 FreeBSD make(1) 的联编过程。添加任何配置一定要慎重。

下面以 vim 举例。使用 ports 套件默认的编译选项编译出来的vim中的gvim是使用gtk1图形库的,但是我很喜欢gtk2,因为gtk2更加的漂亮。为了使用 gtk2,有两个选择:

1.编译的时候手工把这个选项加进去:cd /usr/ports/editor/vim; make WITH_GTK2=yes install clean,但是这样似乎比较麻烦。
2.使用make.conf:直接把WITH_GTK2=yes这句写到make.conf里面,这样系统在编译vim的时候会把这个选项自动地包含进去。

注意:后一种方法中,直接将 WITH_GTK2=yes 加入到 make.conf 将影响所有port的编译过程,这很可能不是希望的结果,因此比较保险的做法是使用下面这样的配置:

.if ${.CURDIR} == “/usr/ports/editors/vim”
WITH_GTK2=yes
.endif

这样,只有在执行 make 的当前目录是 /usr/ports/editors/vim 时,才会定义 WITH_GTK2=yes。

很明显,如此定义 make.conf 十分繁琐,为了解决这个问题,可以通过 Ports 套件安装 ports-mgmt/portconf 并配置 ports.conf。

提示

在FreeBSD系统安装以后的默认设置中,/etc/make.conf这个文件并不存在,你可以自己建立一个,如果系统安装了perl,那么perl会替你建立这个文件,这就是为什么几乎每个人的/etc/make.conf都有一行是关于perl的版本的内容。建立这个文件的命令很简单,因为make.conf本身就是一个纯文本文件,但是,显然你需要root权限来创建或者修改这个文件。

# touch /etc/make.conf

我的make.conf详解:

make.conf的语法非常的简单,其中:#代表注释,在#之后的内容都会被忽略;除注释外,每一行是内容格式如下:一个变量,一个赋值运算符=,一个具体值。

# cpu type
CPUTYPE=athlon64

指定系统的处理器类型,告诉gcc在编译软件的时候针对这个处理器进行优化,从FreeBSD官方论坛的相关讨论来看,这个参数对于提升系统性能比较重要。具体的可以参考/usr/share/examples/etc/make.conf来决定自己的处理器类型。

# ports compilation flag
CFLAGS= -O2 -fno-strict-aliasing -pipe
CXXFLAGS+= -fconserve-space

告诉系统在编译ports的时候使用哪些编译参数,就是优化的级别,推荐使用-O2,不要使用-O3,优化级别越高需要的编译时间越长,并且可能导致某些不可预知的问题。

# shell
MAKE_SHELL=sh

告诉系统在编译过程中使用哪个shell。

# kernel compilation flag
COPTFLAGS= -O2 -pipe

告诉系统编译内核时使用什么优化参数,这个需要单独的指定,并不是使用ports的编译参数,但是编译内核的时候所使用的处理器类型并不需要单独指定。

# kernel config
KERNCONF=MYKERNEL

告诉系统你/sys/amd64/conf目录下面哪个文件是你的kernel配置文件,这样在/usr/src下面直接make buildkernel就可以了,就是说编译内核的时候,不需要手工告诉系统内核的配置文件是哪个。

# install command
INSTALL=install -C

告诉系统安装编译完的软件时使用的安装命令。

# do not build modules with the kernel
NO_MODULES=true

告诉系统编译内核的时候只编译内核的配置文件(就是上面的MYKERNEL)里面包含的东西,这样就不会对配置文件以外的任何东西进行编译了。FreeBSD系统在编译内核的时候,会把配置文件里面的东西以二进制的形式之间编译到生成的内核中,其他的在配置文件里面没有指定的就编译成模块,这一行的作用在于,不编译那些模块,配合ccache可以在1分钟左右完成内核的编译,详细的情况可以看这里http://blog.chinaunix.net/u2/74710/showart_1191786.html。

# avoid compiling profiled libraries
NO_PROFILE=true

告诉系统在编译userland的时候不编译用于性能分析的函数库。

# for update
SUP_UPDATE=true
SUP=/usr/bin/csup
SUPFLAGS=-L 2
SUPHOST=cvsup5.cn.FreeBSD.org
SUPFILE=/usr/share/examples/cvsup/standard-supfile
PORTSSUPFILE=/usr/share/examples/cvsup/ports-supfile
DOCSUPFILE=/usr/share/examples/cvsup/doc-supfile

告诉系统在进入/usr/src目录以后执行make update时升级kernel、userland、ports以及文档系统的代码树,并且指定升级时使用的程序(/usr/bin/csup)、使用的参数(-g -L 2)、使用的服务器(cvsup5.cn.FreeBSD.org)以及升级时分别使用相应的supfile。

# documentation language
DOC_LANG=en_US.ISO8859-1

告诉系统,我在/usr/doc目录下运行make install clean时只生成英文的文档,生成的文档在/usr/share/doc下面,包含FreeBSD的各种文档。

# for textproc/docproj
WITH_JADETEX=yes

编译文档需要安装docproj这个port,并且这个port总是提问题,于是我就直接把答案写在这里了,这样就不用我每次回答了。

# for vim
.if ${.CURDIR} == “/usr/ports/editors/vim”
WITH_GTK2=”yes”
.endif

告诉系统使用gtk2图形库,看上面我举的那个vim的例子。

# for gnome
WITH_GECKO=libxul

告诉系统屏蔽掉firefox,很多人都喜欢firefox,我一直使用gnome的epiphany,不喜欢firefox,但是epiphany在编译的时候需要一个下层的渲染引擎,默认是使用和firefox一样的引擎,所以默认会安装firefox,通过这个选项可以改变这个倚赖关系。

# set server for distfiles
#MASTER_SITE_OVERRIDE?=http://ports.hshh.org/${DIST_SUBDIR}/
MASTER_SITE_OVERRIDE?=ftp://ftp8.tw.freebsd.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/

告诉系统去哪里下载ports里面软件的源代码,这个不用多说了,语法也很简单,http、ftp代表的是协议或者说是服务类型,需要注意的不是每个http或者ftp都使用相同的目录结构。你可以去FreeBSD的handbook上找一下有那些服务器,我比较喜欢台湾的ftp8,就是在教育网那个,因为我也在教育网上。我虽然写了两个,但是屏蔽掉了的一个,如果ftp8宕机了,我就注释掉ftp8,用上面的那个,如果不写这个的话,编译port的时候会从prot的Makefile里面指定的下载地址下载,可能会比较慢,当然也可能会比较快(这个可能性比较小)。

# for ccache
.if (!empty(.CURDIR:M/usr/src*) || !empty(.CURDIR:M/usr/obj*)) && !defined(NOCCACHE)
CC=/usr/local/libexec/ccache/world-cc
CXX=/usr/local/libexec/ccache/world-c++
.endif

这个是针对于ccache的设置,如果要使用ccache必须添加这个。ccache能大幅度的缩短编译时间,所以它能能帮你省很多时间,能帮全人类省很多电。我个人觉得应该给ccache的作者颁发一个“诺贝尔绿色和平奖”,虽然我不知道有没有这个奖。

我的make.conf的全部内容:

################################################################################
# cpu type
CPUTYPE=athlon64

# ports compilation flag
CFLAGS=-O2 -fno-strict-aliasing -pipe
CXXFLAGS+=-fconserve-space

# shell
MAKE_SHELL=sh

# kernle compilation flag
COPTFLAGS=-O2 -pipe

# kernel config
KERNCONF=MYKERNEL

# install command
INSTALL=install -C

# do not build modules with the kernel
NO_MODULES=true

# avoid compiling profiled libraries
NO_PROFILE=true

################################################################################
# for update
SUP_UPDATE=true
SUP=/usr/bin/csup
SUPFLAGS=-L 2
SUPHOST=cvsup5.cn.FreeBSD.org
SUPFILE=/usr/share/examples/cvsup/standard-supfile
PORTSSUPFILE=/usr/share/examples/cvsup/ports-supfile
DOCSUPFILE=/usr/share/examples/cvsup/doc-supfile

# documentation language
DOC_LANG=en_US.ISO8859-1

# for textproc/docproj
WITH_JADETEX=yes

################################################################################
# for vim
.if ${.CURDIR} == “/usr/ports/editors/vim”
WITH_GTK2=”yes”
.endif

# for gnome
WITH_GECKO=libxul

################################################################################
# set server for distfiles
#MASTER_SITE_OVERRIDE?=http://ports.hshh.org/${DIST_SUBDIR}/
MASTER_SITE_OVERRIDE?=ftp://ftp8.tw.freebsd.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/

################################################################################
# for ccache
.if (!empty(.CURDIR:M/usr/src*) || !empty(.CURDIR:M/usr/obj*)) && !defined(NOCCACHE)
CC=/usr/local/libexec/ccache/world-cc
CXX=/usr/local/libexec/ccache/world-c++
.endif

################################################################################
# added by use.perl 2009-05-05 08:38:03
PERL_VERSION=5.8.9

后记:

现在,你可以:

进入/usr/src目录使用make update升级系统的kernel、userland、doc、ports树的源代码了。
进入/usr/doc目录使用make install clean来编译安装最新的文档了。

欢迎补充。

原文链接:http://wiki.freebsdchina.org/doc/m/make.conf_usage

FreeBSD系统完全备份

摘要:

FreeBSD操作系统是非常稳定的,但是这并不是说FreeBSD系统都不备份数据,系统备份是系统管理中一个重要的部分。

在学习使用FreeBSD的过程中经常需要对系统进行某些实验性的操作,这时就有可能把系统搞乱,

只要你是正常操作搞坏一个FreeBSD还是比较困难的,如果没有root权限的话,几乎就是不可能的,当然你可以把自己的home塞满,如果管理员没有使用quato技术的话,

但是想搞坏一个FreeBSD也是很容易的,比如说你在行使root权限时随便输入了一个错误的命令。

这个Wiki页面将会介绍一种FreeBSD系统的完全备份方法,主要基于FreeBSD Forum上killasmurf86一个关于Backup[URL:http://forums.freebsd.org/showthread.php?t=185]的帖子。

在FreeBSD的Handbook上专门内容讲系统备份,在网上也有很多关于FreeBSD系统的备份文章,这个wiki页面的主要目的在于给出一个详细的备份以及恢复系统的过程描述。

基本的游戏规则:

1.FreeBSD系统的备份不需要什么特殊的工具,你需要的工具在FreeBSD的基本系统里面就有;
2.FreeBSD系统的备份就是对系统文件的打包,然后放到一个安全的地方,本文中使用的打包工具是dump;
3.FreeBSD系统的恢复就是把你保存好的系统文件从安全的地方里面拿出来放到你的硬盘上去,本文中使用的恢复工具是restore;
4.Unix-like下面不使用ghost之类的备份工具。

需要使用的工具:

FreeBSD基本系统中有很多工具可以备份,比如说tar。

但是在这个Wiki页面中我们只使用:dump+restore+freebsd_livefs_cd。

其中freebsd_livefs_cd可以到任意的FreeBSD的ftp服务器去下载。

示例系统分区简介:

这个台式机只有1块硬盘,并且只有一个FreeBSD操作系统,其分区方案如下。

df -h
Filesystem      Size    Used   Avail Capacity  Mounted on
/dev/ad12s1a    496M     36M    420M     8%    /
devfs           1.0K    1.0K      0B   100%    /dev
/dev/ad12s1h    240G    1.5G    219G     1%    /home
/dev/ad12s1e    3.9G    166K    3.6G     0%    /tmp
/dev/ad12s1f     19G    3.1G     15G    17%    /usr
/dev/ad12s1g     19G    1.3G     17G     7%    /usr/local
/dev/ad12s1d    3.9G     55M    3.5G     2%    /var
procfs          4.0K    4.0K      0B   100%    /proc

cat /etc/fstab
# Device        Mountpoint    FStype    Options        Dump    Pass#
/dev/ad12s1b        none        swap    sw        0    0
/dev/ad12s1a        /        ufs    rw        1    1
/dev/ad12s1h        /home        ufs    rw        2    2
/dev/ad12s1e        /tmp        ufs    rw        2    2
/dev/ad12s1f        /usr        ufs    rw        2    2
/dev/ad12s1g        /usr/local        ufs    rw        2    2
/dev/ad12s1d        /var        ufs    rw        2    2
/dev/acd0        /cdrom        cd9660    ro,noauto    0    0
proc            /proc        procfs  rw        0    0

从这个分区来看,是一个320G的硬盘,上面只有一个FreeBSD操作系统,每个分区的大致用途如下,详情可以参考hier(7)。

/ 这个目录存放很多基本工具,包括内核,需要备份;

/dev 这是一个虚拟的文件系统,不需要备份;

/home 用户数据,需要备份;

/tmp 临时文件,不需要备份;

/usr 很多工具以及系统的源代码都放在这里面,需要备份;

/usr/local 所有安装的软件基本上都在这里,需要备份;

/var 系统的日志,ports系统的数据库,需要备份;

/proc 虚拟文件系统,不需要必要备份。

看来需要备份一下目录:

/

/home

/usr

/usr/local

/var

备份的方法:

以/分区为例,我通常直接备份到我的移动硬盘上面。

我的移动硬盘使用的是UFS文件系统,分了4个partition,一般情况下我会把移动硬盘关在在我的/mnt/fender_01目录下面,假设目前系统一切正常,我现在打算做一个备份,那么我就应该关在移动硬盘某个分区到/mnt/fender_01目录下,然后分别对所有需要备份的分区进行备份,这里只给出“/”分区备份的例子。

“/”分区对应我硬盘上面的/dev/ad12s1a,那么备份整个分区的命令如下:

dump -0Lauf /mnt/fender_01/dump/ad12sa1.dump /dev/ad12s1a

某些时候,起一个好的文件名很重要!

其中:

-0 备份所有的文件系统中的内容,也就是不使用增量备份;

-f 指定备份结果存放的文件名;

-a 告诉dump不考虑备份的介质的大小问题,早期备份使用磁带,dump会预先计算一下需要的空间,使用这个选项告诉dump忽略这个问题;

-u 告诉dump更新一下/etc/dumpdates,这个文件记录了你在系统上搜有的备份活动;

-L 备份已经挂载的文件系统时需要,这个选项会使用UFS2的snapshot功能来保证文件系统的一致性。

恢复系统的方法:

恢复“/”以外的文件系统:

如果你只想恢复/以外的文件系统,那么很容易,

我们以恢复/home文件系统为例,你只需要重启系统进入单用户模式,

挂载/tmp分区,应为restore需要使用/tmp分区,

挂载移动硬盘上保存我备份文件的分区到/mnt目录下面的某个,例如/mnt/01,

按照我上面命名的规则,备份生成的文件应该是保存在/mnt/01/dump/dev/ad12s1h.dump,

首先你需要格式化/dev/ad12s1h,命令如下:

newfs -U /dev/ad12s1h

-U选型来打开softupdate。

挂在这个分区到/mnt下面的某个目录,例如/mnt/02/

mount /dev/ad12s1h /mnt/02

现在来恢复文件系统:

cd /mnt/02

restore -rf /mnt/01/dump/ad12s1h.dump

恢复“/”:

按照上面的方法你可以恢复/以外的任意的分区,但是你不能恢复“/”,因为你如果使用newfs格式化了“/”你就没有办法使用“/”里面的restore了,

解决的办法就是使用freebsd_livefs_cd启动系统,然后选择fix,之后选择cd,之后的过程就和上面介绍的恢复其他分区是一样的了。

事实上,可以使用freebsd_livefs_cd来恢复任何分区,但是如果你没有下载并刻录这张光盘,那么你就只能在单用户模式下面恢复“/”以外的分区了。

需要注意的是,当你格式化“/”对应的硬盘分区时,可以使用下述两种方法:

newfs /dev/ad12s1a
newfs -U /dev/ad12s1a

区别在于后者将打开softupdate选项,详细情况参考newfs[URL:http://www.freebsd.org/cgi/man.cgi?query=newfs&apropos=0&sektion=0&manpath=FreeBSD+7.2-RELEASE&format=html]。

在FreeBSD系统的安装过程中“/”分区默认是不打开softupdate的,并且你也没有办法打开,因为sysinstall程序不允许你打开。

这是一个历史遗留问题,当时softupdate还不成熟,于是决定在“/”分区中禁止使用softupdate,现在softupdate已经成熟了,但是对这个问题却保留了下来。

在“/”分区使用softupdate不会造成什么问题,但是在系统安装的默认设置中是没有打开的,这一点需要注意。

可以使用如果想打开或者关闭softupdate这个选项,可以使用tunefs(8)[URL:http://www.freebsd.org/cgi/man.cgi?query=tunefs&sektion=8&apropos=0&manpath=FreeBSD+7.2-RELEASE]这个工具。

备份MBR:

上面只提到了备份文件系统,没有讲如何备份系统的MBR。

关于MBR是什么就不详细介绍了,有兴趣的可以参考Handbook上面有一章专门介绍FreeBSD系统的启动过程。

备份:

dd if=/dev/da0 of=/path/to/mbr.img bs=512 count=1

恢复:

dd if=/path/to/mbr.img of=/dev/da0 bs=512 count=1

参考:

dump(8)[URL:http://www.freebsd.org/cgi/man.cgi?query=dump&apropos=0&sektion=0&manpath=FreeBSD+7.2-RELEASE&format=html]

restore(8)[URL:http://www.freebsd.org/cgi/man.cgi?query=restore&sektion=8&apropos=0&manpath=FreeBSD+7.2-RELEASE]

tunefs(8)[URL:http://www.freebsd.org/cgi/man.cgi?query=tunefs&sektion=8&apropos=0&manpath=FreeBSD+7.2-RELEASE]

newfs[URL:http://www.freebsd.org/cgi/man.cgi?query=newfs&apropos=0&sektion=0&manpath=FreeBSD+7.2-RELEASE&format=html]

hier(7)[URL:http://www.freebsd.org/cgi/man.cgi?query=hier&apropos=0&sektion=0&manpath=FreeBSD+7.2-RELEASE&format=html]

注意:

系统的备份与恢复并不十分困难,但是如果你不慎输入某个错误的命令的话,有可能导致某些灾难性的后果。

重做系统需要的是时间,但是如果重要数据丢失了,那就不只是时间的问题了。

所以,在备份与恢复系统时,请尽量保证自己头脑清醒。

后记:

欢迎提出修改意见。

感谢killasmurf86[URL:http://forums.freebsd.org/member.php?u=977]。

原文链接:http://wiki.freebsdchina.org/doc/b/backup_with_dump_and_restore

通过PXE安装FreeBSD系统

目标

在已有一台运行 FreeBSD 的计算机(我们称其为 S)的情况下,使用 PXE 在一台计算机(我们称其为 D)安装 FreeBSD。

硬件需求

S 必须拥有一块 FreeBSD 可以正常使用的网卡。
D 必须可以支持 PXE 引导,并且其网卡要可以在 FreeBSD 里面正常使用。 一条用于双机直连的网线。

软件需求

tftpd,已经包含在 FreeBSD 发行版的 base 中。
nfsserver,已经包含在 FreeBSD 中。
isc-dhcp3-server 3.0.5,通过 ports 安装。
FreeBSD 发行版 DISC1 的 ISO 镜像(我使用的镜像是 FreeBSD 8-CURRENT 今年一月的快照,8.0-CURRENT-200801-amd64-disc1.iso)。

S 上使用的 FreeBSD 是 7.0-BETA2-i386。

网络设置

假设 S 的 IP 地址为 192.168.0.1,子网掩码为 255.255.255.0。

准备工作

允许 tftpd 运行

默认情况下,inetd 里面的 tftpd 是不会运行的。在 inetd.conf 中找到 tftpd 所对应的一行,去掉行首的#,保存。注意,去除注释的这行应该是使用 udp 而不是 udp6。

配置 nfsserver

echo "/mnt -ro -alldirs" > /etc/exports

安装 isc-dhcp3-server

cd /usr/ports/net/isc-dhcp3-server && make BATCH=yes install

配置 isc-dhcp3-server

编辑 /usr/local/etc/dhcpd.conf

default-lease-time    7200;
max-lease-time    7200;
ddns-update-style    none;
subnet 192.168.0.0 netmask 255.255.255.0 {
    range 192.168.0.2 192.168.0.254;
    server-identifier    192.168.0.1;
    next-server        192.168.0.1;
    filename        "/pxeboot";
    option    root-path    "/mnt";
}

这里是整个 PXE 安装最重要的部分之一,能否正常进行 PXE 安装关键就在这里。这里面最关键的几个选项是 next-server,filename 和 root-path。
要理解这些选项的作用,首先要理解 PXE 工作的流程。按照 FreeBSD PXE 引导的过程,我们将其分成三个阶段。
第一阶段主要是 D 上 PXE 的 firmware 和 S 上 dhcpd 协商的过程。在这里,要商定 D 的 IP 地址,并且确定下一步 PXE 要加载的文件,及其位置。
第二阶段是 D 加载上一阶段商定好的文件。对于 FreeBSD 来说,主要就是 pxeboot(8),一个 PXE 的 bootloader。
第三阶段是根据 pxeboot(8) 的指示加载 loader(8) 和 kernel。
在这里,我们可以看到 D 要从网络加载两次文件,一次是 pxeboot(8),另外一次是 loader(8) 和 kernel。这两次加载文件的位置就是由上面的三个选项来确定的。下面我们逐一分析这几个语句的作用。

next-server 语句主要控制了整个 PXE 引导中两次加载的文件所在的服务器的地址。pxeboot(8) 是通过 tftp 从 S 传递到 D 的,所以 next-server 第一个作用就是指定一个 tftp server 的地址。在第三阶段,要加载 loader(8) 和 kernel,这个加载过程是通过 nfs 完成的。next-server 同时也指定了 nfs server 的地址。值得注意的是,有一些文档说第一阶段确定的 PXE 在下一阶段要加载的文件(也就是 pxeboot(8))所在的服务器地址是通过 server-identifier 给定的,但是对于 isc-dhcp3-server 来说,这一点并不成立,而恰恰是 next-server 决定了 pxeboot(8) 所在的服务器的地址(在 dhcpd.conf(5) 里面已经明确指出了这一点)。

filename 指定的是 pxeboot(8) 在 tftp 传输过程中的名字。由于 tftpd 将在 inetd 中来使用,根据 inetd.conf 中给 tftpd 传递的选项,tftpd 启动的时候会进行 chroot,于是 filename 的地址是要相对于其 chroot 之后的根路径来说的。默认情况下,tftpd 会 chroot 到 /tftpboot,我们要在 /tftpboot 中放入 pxeboot(8) 这个文件。由于相对 /tftpboot 作为根路径来说,pxeboot(8) 的位置是 /pxeboot,所以我们直接填入 /pxeboot 便可。

root-path 这个选项指定的是第三阶段加载 loader(8) 和 kernel 在 nfs 的根路径的位置(也就是包含了 boot 目录的位置)。因为我们导出的是 /mnt,所以这里填 /mnt。

正式安装

1、为了避免 S 上的 dhcpd 影响网络中其他机器,也为了避免 D 受到网络上其他机器的影响,用直连网线将 S 和 D 连接起来。

2、挂载准备好的 ISO 镜像。 使用 mdconfig 将 FreeBSD 的 ISO 文件连接成为一个 vnode 类型的内存盘:

mdconfig -atvnode -f 8.0-CURRENT-200801-amd64-disc1.iso

挂载这个 md 节点(假设为 /dev/md0)到 /mnt:

mount_cd9660 /dev/md0 /mnt

3、把 pxeboot(8) 放到 /tftpboot:

cp /mnt/boot/pxeboot /tftpboot

4、在 S 上启动 tftpd, dhcpd 和 nfsd:

/etc/rc.d/inetd forcestart
/etc/rc.d/nfsd forcestart
/usr/local/etc/rc.d/isc-dhcpd forcestart

5、由于我们已经使用直连网线将 S 和 D 连接,假设 S 上没有配置 BIND 服务,也没有额外的到 Internet 的网络连接,那么需要禁止 S 上的 DNS 解析。可以修改 /etc/resolv.conf,将其中所有以 nameserver 开头的行注释掉。否则 mountd(因为 nfsd 依赖这个 daemon,所以 mountd 也会随 nfsd 启动而启动)会去查 DNS,而有可能导致最终 PXE 启动连不上 nfs,不能加载 kernel 而超时失败。

6、在 D 的 BIOS 中设置为 PXE 引导,重新启动计算机。

7、D 此时已经启动,并通过 PXE,加载了 loader。此时需要选择 loader 启动选项的第 6 项,进入 loader prompt。输入以下命令:

set vfs.root.mountfrom="ufs:/dev/md0c"
boot

第一行保证我们可以启动到正确的安装程序,第二行提示系统继续执行启动的各个步骤。

8、此时应该正常进入安装程序。到选择安装介质之前都按照一般的安装步骤。在选择安装介质时选择 nfs,然后输入 S 的 IP 地址,以及导出的路径,例如 192.168.0.1:/mnt。确认后,系统提示要设置网卡,在这里按照系统提示,使用 dhcp,保证 D 与 S 在同一个网络中。主机名和域名随意,DNS 以及网关可以暂时不填。后续步骤与从光盘安装一致。

9、最终退出安装程序,重新启动系统。并修改 D 的 BIOS 设置,禁止网络启动。

10、安装全部完成,可以开始享用 FreeBSD 了。

参考

rafan 的 PXE Install 笔记[URL:http://wiki.rafan.org/doc/freebsd#pxe_install]

原文链接:http://wiki.freebsdchina.org/howto/p/pxeinstall

FreeBSD学习笔记整理

FreeBSD学习笔记整理

1、查看CPU:
sysctl hw.model hw.ncpu
dmesg | grep “CPU:”

2、查看内存:
dmesg | grep “real memory” | awk -F ‘[( )]’ ‘{print $2,$4,$7,$8}’

查看swap:
top | grep “Swap:” | awk ‘{print $1,$2}’

3、查看硬盘:
diskinfo -vt /dev/ad0
disklable /dev/ad0s2 #查看分区信息
看硬盘大小:
dmesg | grep “sector” | awk ‘{print $1,$2}’
diskinfo -v /dev/da0 | grep “in bytes” | awk -F'[()]’ ‘{print $2}’

4、查看服务器品牌:
dmesg | grep “ACPI APIC”

5、挂载文件系统:
fat32:mount_msdosfs -L zh_CN.eucCN /dev/ad0s1 /mnt
ntfs:mount_ntfs -C eucCn /dev/ad0s1 /mnt
cdrom:mount_cd9660 /dev/acd0 /mnt
注:ntfs在FreeBSD中只能读无法写入

6、给文件添加或禁用系统禁删标志(目录不适用):
chflags sunlink file1
chflags nosunlink file1

7、初始化磁盘:
fdisk -BI ad1

8、建立FreeBSD分区:
disklabel -B -w -r ad1s1 auto

9、建立逻辑分区:
disklabel -e ad1s1

10、格式化分区,创建文件系统:
newfs /dev/ad1s1e

11、显示PCI硬件信息:
pciconf -lv

12、开启Linux 二进制兼容支持(启用这一功能最简单的方法是载入 linux KLD 模块):
kldload linux
让Linux兼容在系统初始化时自动启用,在/etc/rc.conf中中入:
linux_enable=”YES”

13、检查KLD模块是否加载:
kldstat

14、在内核中静态链接进Linux二进制兼容模式,在内核配置文件里面加入:
options COMPAT_LINUX

15、设置网卡em0的IP地址:
ifconfig em0 inet 192.0.2.10 netmask 255.255.255.0

16、给网卡em0设置添加一个别名IP地址:
ifconfig em0 inet 192.168.51.45/24 add

17、删除网卡的别名IP地址:
ifconfig em0 inet 192.168.51.45 -alias

18、设置网卡em0的工作模式为100baseTX全双式:
ifconfig em0 media 100baseTX mediaopt full-duplex

19、当/usr/local/etc/rc.d下的脚本无法自动启动时,可尝试在/etc/rc.conf中加入一行:
local_startup=”/usr/local/etc/rc.d”

20、在ports中寻找需要的软件,进入/usr/ports目录执行:
make search name=lsof 或 echo /usr/ports/*/*lsof* 或 whereis lsof
make search key=关键字 # 在名字、注释、描述中搜索关键字

21、使用package方式安装管理软件,使用以下命令:
pkg_add lsof-4.56.4.tgz # 安装软件包
pkg_info  # 列出已安装所有软件包
pkg_version  # 统计所有安装的软件版本,比较本地package的版本与ports目录中的当前版本是否一致
pkg_delete lsof-4.56.4 # 删除软件包,需提供完整包名

22、使用CVSup协议更新本地ports:(将cvsup.FreeBSD.org改为离得较近的CVSup服务器)
csup -L 2 -h cvsup.FreeBSD.org /usr/share/examples/cvsup/ports-supfile

23、一些shell会缓存环境变量PATH中指定的目录里的可执行文件,以加快查找速度,这会造成一些新安装的命令无法运行,执行以下命令,然后才能运行新安装的那些命令:
rehash 或 hash -r

24、当不是所有时间都能上网时,可在/usr/ports下执行以下命令,所有需要的文件都将被下载:(此命令可以在下级目录中执行,如/usr/ports/comms/nmp)
make fetch # 只下载所需要文件,不下载依赖包
make fetch-recursive # 连同依赖包一起下载

25、改变默认的Ports目录:
make WRKDIRPREFIX=/usr/home/example/ports install # 在/usr/home/example/ports中编译port,安装到/usr/local
make PREFIX=/usr/home/example/local install # 在/usr/ports中编译port,安装到/usr/home/example/local
make WRKDIRPREFIX=../ports PREFIX=../local install # 在../ports中编译port,安装到../local

26、使用portsclean工具清除临时目录和distfiles目录:
portsclean -C # 清除安装时的临时目录
portsclean -D # 清除distfiles目录下所有port都不引用的文件
portsclean -DD # 删除目前安装的port没有使用的源码包文件

27、强制手动检测SCSI设备,SCSI总线扫描:
camcontrol rescan all

28、显示SCSI设备列表:
camcontrol devlist

29、利用管道修改用户密码:
echo “password” | pw usermod root -h 0
30、sed插入行:
sed -i -E ‘/service port/a \\
apex port : 18306\\
‘ /home/xiyou/config

31、用freebsd的MBR覆盖现有的MBR:
fdisk -B -b /boot/boot0 device

32、根据一个新的文件重新构建用户列表:
pwd_mkdb -p /etc/master.passwd.new # -p即为生成新的/etc/passwd

33、取时间:
date -v -1d +%Y%m%d # Freebsd取昨天日期方法
date -v -1w +%Y%m%d # Freebsd取上周今日方法
date -v -1m +%Y%m%d # Freebsd取上个月今日方法
date -v -1y +%Y%m%d # Freebsd取去年今日的方法

34、以xiyou用户身份执行命令或脚本:
su – xiyou -c “cd /home/xiyou/script; ./start_apex.sh &”

35、tar打包时排除某个子目录:
tar zcvf Apex09010702.tgz –exclude=ApexItemServer/hook_log ApexItemServer
注:上例是使用GUN版本的tar程序格式,否则–exclude参数应放在最后
36、锁住终端:
lock -np #-n 永不超时,-p 使用系统密码作为开启终端的密匙

37、显示ATA设备列表:
atacontrol list

38、查看网络流量:
systat -if 1 #1表示1秒刷新屏幕一次,Traffic 流量 peak 峰值 average 平均值
netstat 1

39、查看硬盘详细分区实时读写状况:
gstat

40、进单用户模式也需要密码:
a. vi /etc/ttys 找到when going to single-user mode
b. 修改console none unknown off后面的secure,改为insecure
c. 存盘退出

41、在FreeBSD5.X以上加载,卸载ISO文件:
mount:
mdconfig -a -t vnode -f myisofile.iso #屏幕输出md0或者类似的设备名
mount -t cd9660 /dev/md0 /mnt
umount:
umount /mnt
mdconfig -d -u 0 #-u后面的数字和前面的md?中的数字一致
mdconfig -l #可以列出关于配置md?设备的信息

42、更新配置文件,比如编辑了.cshrc等文件,就需要用source命令:
source .cshrc
43、修复UFS文件系统分区:
fsck_ufs /dev/ad1

44、pf防火墙
pfctl -e                 # 启动pf防火墙
pfctl -d                 # 停止pf防火墙
pfctl -sa | grep Status  #查看状态
pfctl -f /etc/pf.conf    # 载入 pf.conf 文件
pfctl -nf /etc/pf.conf   # 检查配置文件错误,但不载入
pfctl -Nf /etc/pf.conf   # 只载入文件中的NAT规则
pfctl -Rf /etc/pf.conf   # 只载入文件中的过滤规则
pfctl -sn    # 显示当前的NAT规则
pfctl -sr    # 显示当前的过滤规则
pfctl -ss    # 显示当前的状态表
pfctl -si    # 显示过滤状态和计数
pfctl -sa    # 显示任何可显示的

pfctl -t http_table -T show               #查看动态表
pfctl -t http_table -T add 192.168.1.X    #添加一个IP到表
pfctl -t http_table -T del 192.168.1.X    #从表中删除IP

45、系统优化+防止ddos
加载文件修改
# vi /boot/loader.conf #加入如下文本
kern.dfldsiz=”2147483648″             # Set the initial data size limit
kern.maxdsiz=”2147483648″             # Set the max data size
kern.ipc.nmbclusters=”0″             # Set the number of mbuf clusters
kern.ipc.nsfbufs=”66560″              # Set the number of sendfile(2) bufs
##解释:
a.   第一,第二行主要是为了突破1G内存设置的
b.   第三行其实是bsd的一个bug,当系统并发达到一个数量级的时候,系统会crash,这个是非常糟糕的事情,所幸更改了这个参数后,在高并发的时候,基本可以没有类似情况,当然非常bt的情况,还得进一步想办法
c.   第四行是读取的文件数,如果你下载的文件比较大,且比较多,加大这个参数,是非常爽的
Sysctl修改
#vi /etc/rc.local
sysctl kern.ipc.maxsockets=100000    ##增加并发的socket,对于ddos很有用
sysctl kern.ipc.somaxconn=65535      ##打开文件数
sysctl net.inet.tcp.msl=2500         ##timeout时间
加速ports安装
#vi /etc/make.conf     ##加入如下
MASTER_SITE_OVERRIDE?=http://ports.hshh.org/${DIST_SUBDIR}/
MASTER_SITE_OVERRIDE?=http://ports.cn.freebsd.org/${DIST_SUBDIR}/
Freebsd颜色显示
secureCRT设置:仿真:终端->linux>勾选ANSI颜色–>确定
#vi /etc/csh.cshrc ##加入如下
setenv LSCOLORS ExGxFxdxCxegedabagExEx
setenv CLICOLOR yes
#cd /usr/ports/edit/vim;make install
#echo “syntax on”>/root/.vimrc
#echo “alias vi        vim” >>/root/.cshrc
##颜色主要是靠vim来显示的,因此需要安装vim,然后把vi alias成vim就可以了

46、查看系统状态
fstat     #报告系统中打开文件的信息
pstat -T   #显示这几个系统表的状态,包括当前使用的和可以利用的系统表空间,因此可以用来检查系统在当前负载下是使用多大的系统表,帮助进行优化系统性能
systat    #缺省情况下systat是报告处理器的使用率,包括总利用状态、空闲使用率和各个进程的使用率
通过指定参数,systat也能进行I/O的统计、虚存的统计、网络的统计等,这些参数包括-iostat, -vmstat, -mbufs, -netstat, -ip, -icmp, -tcp, -swap等
kldstat -v  #显示内核加载的模块
klsdstat -m ipfilter   #显示指定模块
pnpinfo    #即插即用设备
devinfo -u  #显示设备占用的IRQ和内存地址

原文链接:http://blog.chinaunix.net/u3/112017/showart_2213285.html

FreeBSD 7 Xorg7.3 KDE3.5 桌面系统安装及美化

这几天一直在整FreeBSD+KDE的桌面系统,现在基本上能满足偶的日常需要。把安装过程记录下来,方便以后重装。。。。 !!

一、安装系统

首先,最小化安装系统,没什么好说的,最好单独分一个/home出来,这样重装后,很多东西可以重用。然后装呗。。建议把src/base/kernels/man一并装上,以后可能会用到。 然后在sysinstall里建一个wheel用户,建用户的时候shell那里偶写上:/bin/csh,因为偶比较习惯用csh 再修改一下网卡属性,连接上网。

最小化安装好系统后,把cd1,cd2,cd3中的内容都拷到硬盘,这样pkg_add 软件方便,不用来回换光盘。

建个目录放拷来的tbz文件

#mkdir /usr/soft

挂载光驱

#mount /cdrom

拷贝packages下的所有文件到硬盘里

#cp -rf /cdrom/packages/* /usr/soft/

挂载掉光驱

#umount /cdrom

然后到/usr/soft目录,安装xorg,kde,linux程序支持,可以使用ls xorg*命令查看具体文件名。

#cd /usr/soft/All

#pkg_add xorg-7.3_1.tbz

#pkg_add kde-3.5.8.tbz

#pkg_add linux_base-fc-4.10.tbz

装完xorg,kde后,更新ports。/etc/portsnap.conf里是更新portsnap镜像的站点地址。可以改成国内比较快的镜像站点:SERVERNAME=portsnap.hshh.org 最小化安装时默认是不安装ports的,如果你装了ports,先删除ports目录

#rm -rf /usr/ports

然后继续,fetch是取得ports镜像,extract把ports镜像解压到/usr/ports,update是更新ports

#portsnap fetch

#portsnap extract

为了让ports的安装速度更快,做以下修改:

#ee /etc/make.conf

在make.conf中加入下面的内容,可以用wget在国内镜像站点下载ports包需要的软件。

MASTER_SITE_OVERRIDE=\

http://ports.hshh.org/${DIST_SUBDIR}/\

ftp://ftp.freebsdchina.org/pub/FreeBSD/ports/distfiles/

FETCH_CMD=wget -c -t 1

DISABLE_SIZE=yes

接下来安装显卡驱动,我的显示是nvidia7300gt。A卡的用户百度狗狗下~

#cd /usr/ports/x11/nvidia-driver

#make install clean

装好之后,最好重启一下。

#shutdown -r now

为了方便,偶装了偶比较习惯用的编辑器,如果你喜欢用ee,可以不装vim ,下面一些shell命令行,把vim 换成ee

#cd /usr/ports/editors/vim

make install clean

用PREFIX=/home/path/to/your/opt 命令,可以把vim装在你想要的目录,当然也可以直接装在默认目录下。偶一般在自己的home目录下建个opt文件夹,放安装的程序。

接下来配置xorg,进入kde桌面

#xorg -configure

这样/root下应该会生成xorg.conf.new文件,测试一下是否正常,如果屏幕上出现一个黑色的鼠标指针就差不多啦~如果不正常,接Ctrl+Alt+Backspace

#xorg -config xorg.conf.new

如果一切正常,把xorg.conf复制到公共目录里,不过偶装的时候好像没有手动复制也可以,像是装的时候自动放到位置上去了。具体参看手册。

之后,试试看可以了嘛~~

#startx

#startkde

界面可能不好看,没关系,改动一下配置文件,让kde随机启动。

#vim /etc/ttys

把 ttyv8这行,改成这样:

ttyv8 ”/usr/local/bin/kdm -nodaemon” xterm on secure

这样,系统启动时就默认登录KDE桌面。

如果想改成其它桌面,可以直接编辑Xsession文件。

#vim /usr/local/share/config/kdm/Xsession

default)那里,即是默认启动的窗口。

default)

exec startkde

编辑好,保存即可。

安装kde的汉化文件

#cd /usr/ports/chinese/kde3-i18n-zh_CN

#make install clean

为了方便,可以直接装下一个做好的ports

#cd /usr/ports/chinese/auto-cn-l10n

#make install clean

选择下需要安装的内容,wqy字体选中,fireflyttf字体选中,SCIM输入法选中。

上面的包装好后,如果你需要用五笔或拼音可以分别在下面二个位置安装

/usr/ports/chinese/scim-tables

/usr/ports/chinese/scim-pinyin

OK,在你用kdm进入kde前,用先前建的帐号,最好设置一下一些东西。

#su 用户名

%cd ~

因为我用的是csh,所以编辑.cshrc文件。

%vim .cshrc

加入这么二行,习惯了:) shell会更好看呵呵。

alias ls ls -FAG

setenv LSCOLORS ExGxFxdxCxegedabagExEx

如果上面装了scim,.cshrc文件中没有改下内容,则加入

setenv XMODIFIERS @im=scim

setenv QT_IM_MODULE scim

setenv GTK_IM_MODULE scim

保存.cshrc文件。退出。

设置本地化环境

%vim ~/.login_conf

加入:

me:\
:charset=zh_CN.UTF-8:\
:lang=zh_CN.UTF-8:\
:setenv=LC_ALL=zh_CN.UTF-8:\
:setenv=LC_COLLATE=zh_CN.UTF-8:\
:setenv=LC_CTYPE=zh_CN.UTF-8:

这样重启后,自动进入kde桌面环境。

第一次进入时,有桌面配置向导,看提示一步步点完即可。

二、定制内核

具体内容参看:http://docs.freebsd.org/doc/7.0-RELEASE/usr/share/doc/zh_CN/books/handbook/kernelconfig.html

定制内核前,看一下:http://docs.freebsd.org/doc/7.0-RELEASE/usr/share/doc/zh_CN/books/handbook/kernelconfig-trouble.html

FreeBSD7手册中内核配置文件部分,说的十分详细,怎么按自己要求修改内核文件参看:http://docs.freebsd.org/doc /7.0-RELEASE/usr/share/doc/zh_CN/books/handbook/kernelconfig-config.html

准备好了之后,继续。。。

之前安装时建议把src装上,现在就可以用上啦。按手册上面说的把内核文件修改好之后。

进入 /usr/src 目录:

# cd /usr/src

编译内核:

# make buildkernel KERNCONF=MYKERNEL

安装新内核:

# make installkernel KERNCONF=MYKERNEL

安装好新内核之后,先不急重启,看清楚手册上说的内核配置错误不能启动怎么办那章之后,再重启哦。

如果想临时换回默认的GENERIC内核,可以修改/boot/defaults/loader.conf文件。

三、美化系统

1、字体

之前装了wqy字体,可以在K菜单-控制中心-外观和主题-字体里,把所有的字体都换成WenQuanYi的。

2、KDE风格

在 http://kde-look.org 的左中方有搜索栏,搜索kollide。 找到 kollide 1.5 的Theme-Manager Theme 风格包,下载。。解压缩。 #tar zxvf kollide*.gz 具体地址是:http://kde-look.org/content/show.php/kollide?content=75295

下载后在K菜单-控制中心-外观和主题-主题管理器中,点击安装新主题,选中.kth主题文件,即可。 这样在这个目录里就应该有kollide主题的目录,如果没有,可以在包里复制过来。

~/.kde/share/apps/kthememanager/themes

这样风格好看了吧,还有漂亮的壁纸。

3、登录界面风格

同样,从kde-look下载你喜欢的kdm风格包,下载解压缩包到 /usr/local/share/apps/kdm/themes 里, 同时修改kdmrc文件 #vim /usr/local/share/config/kdm/kdmrc 把UseTheme=true前面的注释号去掉。 Theme路径设成你刚刚下载的kdm风格路径。 我的是:Theme=/usr/local/share/apps/kdm/themes/DEEP

ok,ctrl+alt+delete重新登录一下看看 🙂

4、面板设置

在面板空白处右击,面板菜单-添加新面板-选择外部任务栏

K菜单-控制中心-桌面-面板

在“排列”选项卡里,选择设置“主面板”,位置向下居中,长度30%,勾选“自动扩大到需要的尺寸”,大小选“大”。

在“排列”选项卡里,选择设置“外部任务栏”,位置向上居中,长度100%,勾选“自动扩大到需要的尺寸”,大小选“小”。

在“外观”选项卡里,“面板背景”项中勾选“允许透明” 确定。。

这样面板是不是好看多了~呵呵,这个全凭各人喜好。我这里配置“外部工具栏”不显示全部桌面中的窗口。。。不分组显示 。。个人爱好。

5、conky设置

首选安装conky,ports安装,注意root 权限。

#cd /usr/ports/sysutils/conky

#sudo make install clean

装好之后,在你的主目录中建一个文件.conkyrc ,然后编辑这个文件。注意帐号,不要用成root的了。

#su 用户名

%cd ~

% vim .conkyrc

加入以下内容:

background no
double_buffer

# X font used, you can pick one with program xfontsel
#font 5×7
#font 6×10
#font 7×13
#font 8×13
font wenquanyi Bitstream Vera Sans Mono-9
# font *mintsmild.se*
# font -*-*-*-*-*-*-34-*-*-*-*-*-*-*

# Update interval in seconds
update_interval 1.0

# Create own window instead of using desktop (required in nautilus)
own_window no

# Draw shades?
draw_shades yes

# Draw borders around text
draw_borders no

draw_outlines yes
default_outline_color gray30

# Stippled borders?
stippled_borders no

# Default colors and also border colors
default_color gray75
default_shadecolor gray41

# Text alignment, other possible values are commented
#alignment top_left
#alignment top_right
#alignment bottom_left
alignment bottom_right

# Gap between borders of screen and text
gap_x 16
gap_y 66

use_xft

# Substract file system buffers from used memory?
no_buffers yes

# set to yes if you want all text to be in uppercase
uppercase yes
# stuff after ‘TEXT’ will be formatted on screen

TEXT
${color grey69}CPU Usage :$color $cpu% @ ${freq}MHz
${cpubar 4}
$cpugraph
${color grey69}Processes :$color $processes ${color grey69}Running:$color $running_processes
${color grey69}Load      :$color ${loadavg 1} / ${loadavg 2} / ${loadavg 3}
$color$stippled_hr
${color grey69}RAM Usage :$color $mem / $memmax – $memperc%
${membar 4}
${color grey69}Swap Usage:$color $swap / $swapmax – $swapperc%
${swapbar 4}
$color$stippled_hr
${color grey69}Networking: re0: Up:$color ${upspeed re0} k/s${color grey69} – Down:$color ${downspeed re0} k/s
$color$stippled_hr
${color grey69}Disk: developer $color grey69} Used: $color${fs_used /home/developer} ${color grey69} Free:$color ${fs_free /}
${color grey69}    : usr: ${color grey69}Used: $color${fs_used /usr} ${color grey69} Free: $color ${fs_free /usr}

把网卡名换成你机子的网卡名,还有用户主目录换成你的主目录即可。

当然也可以从网上下载conky的风格放在主目录下改名为.conkyrc

设置conky自启动:

打开 ~/.kde/Autostart 目录,把conky的程序拖进autostart目录,选择在此处创建链接。即可。

四、安装常用软件

一些常用软件都可以使用ports安装

%whereis 软件名

即可看到这个软件在ports中的位置。

%whereis firefox3

firefox3: /usr/ports/www/firefox3 浏览器

%whereis kchmviewer

kchmviewer:/usr/ports/deskutils/kchmviewer CHM查看软件

%whereis kftpgrabber

kftpgrabber: /usr/ports/ftp/kftpgrabber FTP客户端

%whereis ktorrent

ktorrent: /usr/ports/net-p2p/ktorrent KDE下图形BT客户端

%whereis smplayer

smplayer: /usr/ports/multimedia/smplayer “暴风影音”?呵呵

%whereis amarok

amarok: /usr/ports/audio/amarok MP3播放器

%whereis eva

eva:/usr/ports/net-im/eva linux下的QQ

%whereis stardict2

stardict2: /usr/ports/textproc/stardict2 星际译王2

amarok有个歌词插件,名字叫lrcshow,可以从网上下载到。在amarok的菜单里有选项,选中下载回来的固定文件名包即可安装。这个插件需要系统中有py-qt才可以正常使用。

%whereis py-qt

py-qt: /usr/ports/x11-toolkits/py-qt

强烈建议大家安装下sudo,十分方便。以前用ubuntu时就喜欢上了sudo…ports中有包。

偶在FreeBSD下主要弄php程序,上面说的软件smplayer没有测试能不能正常放,如果不行可以从百度狗狗上找找怎么下载解码器之类安装。

在安装ports的过程中可能会无法继续

强制安装使用:FORCE_PKG_REGISTER=YES

还有NO_CHECKSUM之类的,PORTS安装还是比较简单方便的。

实在不行,可以在ftp://ftp.freebsd.org的相关目录里下载tbz文件回来安装。。

再不行,可以pkg_add -r 安装。。

五、其它

因为是装过之后,才写的一些安装过程,错误在所难免,请见谅。

有点白
alittlewhite.developer@gmail.com
http://developer.cublog.cn

原文链接:http://wiki.freebsdchina.org/doc/p/freebsd_desktop_kde

FreeBSD配置ZFS做为根系统

声明:不建议使用ZFS做根文件系统

需要的文件

需要FreeBSD的DVD镜像 或者 memstick.img文件,其他的都不完整,所以不推荐

启动到Fixit

1.启动DVD 2.选择Fixit 3.选择CDROM/DVD,回车

创建mbr结构分区表,如果已存可以省略

Fixit# gpart create -s mbr ad4

显示分区信息

Fixit# gpart show ad4

在ad4上创建FreeBSD使用的分区ad4s3

Fixit# gpart add -b 6313545 -s 119515536 -t freebsd ad4
ad4s3 added
Fixit# gpart create -s BSD ad4s3
ad4s3 created

创建FreeBSD Partition

ad4s3a的分区是去掉Swap分区后的大小,计算公式时1024x1024x2=1G

Fixit# gpart add -i 1 -b 0 -s 117418384 -t freebsd-zfs ad4s3
ad4s3a added
Fixit# gpart show ad4s3

Fixit# gpart add -i 2 -b 117418384 -s 8380811 -t freebsd-swap ad4s3
ad4s3b added
Fixit# gpart show ad4s3

安装FreeBSD自带的引导器,boot0阶段

Fixit# gpart bootcode -b /mnt2/boot/boot0 ad4
ad4 has bootcode

boot1阶段

Fixit# dd if=/mnt2/boot/zfsboot of=/dev/ad4s3 count=1

boot2阶段

Fixit# dd if=/mnt2/boot/zfsboot of=/dev/ad4s3a skip=1 seek=1024

加载zfs内核模块

Fixit# kldload /mnt2/boot/kernel/opensolaris.ko
Fixit# kldload /mnt2/boot/kernel/zfs.ko

创建ZFS存储池

Fixit# zpool create tank /dev/ad4s3a
Fixit# zpool set bootfs=tank tank

文件系统校验使用fletcher4方式

Fixit# zfs set checksum=fletcher4 tank

创建ZFS文件目录结构

Fixit# zfs create -o compression=on -o exec=on -o setuid=off tank/tmp
Fixit# chmod 1777 /tank/tmp
Fixit# zfs create tank/usr
Fixit# zfs create tank/home
Fixit# zfs create -o compression=lzjb -o setuid=off tank/usr/ports
Fixit# zfs create -o compression=off -o exec=off -o setuid=off tank/usr/ports/distfiles
Fixit# zfs create -o compression=off -o exec=off -o setuid=off tank/usr/ports/packages
Fixit# zfs create -o compression=lzjb -o exec=off -o setuid=off tank/usr/src
Fixit# zfs create tank/var
Fixit# zfs create -o compression=lzjb -o exec=off -o setuid=off tank/var/crash
Fixit# zfs create -o exec=off -o setuid=off tank/var/db
Fixit# zfs create -o compression=lzjb -o exec=on -o setuid=off tank/var/db/pkg
Fixit# zfs create -o exec=off -o setuid=off tank/var/empty
Fixit# zfs create -o compression=lzjb -o exec=off -o setuid=off tank/var/log
Fixit# zfs create -o compression=gzip -o exec=off -o setuid=off tank/var/mail
Fixit# zfs create -o exec=off -o setuid=off tank/var/run
Fixit# zfs create -o compression=lzjb -o exec=on -o setuid=off tank/var/tmp
Fixit# chmod 1777 /tank/var/tmp

安装FreeBSD到ZFS上

Fixit# cd /dist/8.1*
Fixit# export DESTDIR=/tank
这里推荐先不要释放ports,曾经8.0上释放ports会导致重启
Fixit# for dir in base catpages dict doc games info lib32 manpages; \
     do (cd $dir ; ./install.sh) ; done
Fixit# cd src ; ./install.sh all
Fixit# cd ../kernels ; ./install.sh generic
Fixit# cd /tank/boot ; cp -Rlp GENERIC/* /tank/boot/kernel/
Fixit# cd /
Fixit# zfs set readonly=on tank/var/empty

安装后配置

在rc.conf,src.conf,fstab,loader.conf文件里添加了这些内容就行,不管你使用什么方法ee,vi,echo。都行

Fixit# echo ‘zfs_enable="YES"’ > /etc/rc.conf
Fixit# echo ‘hostname="FreeBSD.tk.local"’ >> /etc/rc.conf
Fixit# echo ‘ifconfig_em0="DHCP"’ >> /etc/rc.conf
Fixit# echo ‘LOADER_ZFS_SUPPORT=YES’ > /tank/etc/src.conf
Fixit# echo ‘zfs_load="YES"’ > /tank/boot/loader.conf
Fixit# echo ‘vfs.root.mountfrom="zfs:tank"’ >> /tank/boot/loader.conf
Fixit# cat << EOF > /tank/etc/fstab
# Device                       Mountpoint              FStype  Options         Dump    Pass#
/dev/ad4s3b                    none                    swap    sw              0       0
EOF

重新编译引导器,添加zfs支持

Fixit# chroot /tank
Fixit# mount -t devfs devfs /dev
Fixit# export DESTDIR=""
Fixit# cd /usr/src/sys/boot/
Fixit# make obj
Fixit# make depend
Fixit# make
Fixit# cd i386/loader
Fixit# make install

设置密码

Fixit# passwd

设置时区

Fixit# tzsetup
Fixit# cd /etc/mail
Fixit# make aliases
Fixit# umount /dev
Fixit# exit

创建zpool.cache

Fixit# mkdir /boot/zfs
Fixit# zpool export tank && zpool import tank
Fixit# cp /boot/zfs/zpool.cache /tank/boot/zfs/zpool.cache
Fixit# export LD_LIBRARY_PATH=/mnt2/lib

修改zfs存储池tank的挂载点

Fixit# zfs set mountpoint=legacy tank
Fixit# zfs set mountpoint=/tmp tank/tmp
Fixit# zfs set mountpoint=/usr tank/usr
Fixit# zfs set mountpoint=/var tank/var
Fixit# zfs set mountpoint=/home tank/home

卸载所有

Fixit# zfs unmount -a

退出,重新引导系统

Fixit# exit

其他

1.有时会出现找不到引导器,重启后就可以引导了,原因不明

2.可能导致Windows7出现引导器修复界面

原文链接:http://wiki.freebsdchina.org/doc/z/zfsbootpartition

FreeBSD系统检测AMD处理器的硬件温度

FreeBSD系统检测AMD处理器的硬件温度

摘要:

这个wiki页面主要介绍如何在FreeBSD系统中如何检测AMD处理器的温度;
所写内容主要适用于k8以及k10系列处理器。

基本原理:

在处理器内部有一个温度传感器;
为了读取这个温度需要将适当的驱动程序编译或者加载进入内核。

具体操作:

在系统内核配置文件中增加k8temp的驱动,也既是添加下述内容到内核的配置文件中去:

device k8temp
然后重新编译安装内核即可。

如果不想重新编译内核,也可以采用加载模块的方法,把下述内容添加进入loader.conf即可:

k8temp_load=”YES”

检测温度:

在加载合适的驱动之后,系统就可以读取处理器内部传感器的温度了,系统将这个温度数值保存在sysctl的相应节点中,所以可以通过输入sysctl的相关信息来显示处理的温度。

检测方法如下:

sysctl -a | grep -i temp

注意:

根据k8temp(4)中的内容,k8temp这个驱动是在FreeBSD 7.1才进入系统的内核的,所以只有在7.1版本之后才可以直接通过内核加载。

对于之前的版本,似乎可以通过ports系统安装。

本文内容适用于7.2版本,由于在8.0版本中驱动的名字有所调整,所以8.0用户应将的将驱动调整为“device amdtemp”,

比较简单的方法是看看/boot/kernel/下面模块的名字,在FreeBSD系统中所有模块的名字都和自己的功能存在对应关系,

例如运行下述命令可以找出哪些模块和温度相关。

ls /boot/kernel | grep -i temp

如果在8.0系统上运行上述命令时,还可以发现Intel的Core对应的驱动是“device coretemp”。

参考:

k8temp(4)<URL:http://www.freebsd.org/cgi/man.cgi?query=k8temp&apropos=0&sektion=0&manpath=FreeBSD+7.2-RELEASE&format=html>

amdtemp(4)<URL:http://www.freebsd.org/cgi/man.cgi?query=amdtemp&sektion=4&apropos=0&manpath=FreeBSD+8.0-RELEASE>

loader.conf(5)<URL:http://www.freebsd.org/cgi/man.cgi?query=loader.conf&sektion=5&apropos=0&manpath=FreeBSD+7.2-RELEASE>

sysctl(8)

原文链接:http://wiki.freebsdchina.org/doc/a/amd_cpu_temperature