Chinaunix首页 | 论坛 | 博客
  • 博客访问: 732296
  • 博文数量: 741
  • 博客积分: 6000
  • 博客等级: 准将
  • 技术积分: 4825
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-18 11:18
文章分类

全部博文(741)

文章存档

2011年(1)

2008年(740)

我的朋友

分类:

2008-09-18 11:26:39

经过艰苦努力终于把FreeBSD的X配置好了,可以达到24位色1152x864分辨率.显示效果可以与linux下媲美.
下面是我的XF86Config文件,希望能对大家有所帮助:

Section "ServerLayout"
        Identifier     "XFree86 Configured"
        Screen      0  "Screen0" 0 0
        InputDevice    "Mouse0" "CorePointer"
        InputDevice    "Keyboard0" "CoreKeyboard"
EndSection

Section "Files"
        RgbPath      "/usr/X11R6/lib/X11/rgb"
        ModulePath   "/usr/X11R6/lib/modules"
        FontPath     "/usr/X11R6/lib/X11/fonts/misc/"
        FontPath     "/usr/X11R6/lib/X11/fonts/Speedo/"
        FontPath     "/usr/X11R6/lib/X11/fonts/Type1/"
        FontPath     "/usr/X11R6/lib/X11/fonts/75dpi/"
        FontPath     "/usr/X11R6/lib/X11/fonts/100dpi/"
EndSection

Section "Module"
        Load  "dbe"
        Load  "dri"
        Load  "extmod"
        Load  "glx"
        Load  "pex5"
        Load  "record"
        Load  "xie"
        Load  "xtrap"
        Load  "speedo"
        Load  "type1"
EndSection

Section "InputDevice"
        Identifier  "Keyboard0"
        Driver      "keyboard"
EndSection

Section "InputDevice"
        Identifier  "Mouse0"
        Driver      "mouse"
        Option            "rotocol" "MouseSystems"
        Option            "Device" "/dev/sysmouse"
EndSection

Section "Monitor"
        #DisplaySize          320   240        # mm
        Identifier   "Monitor0"
        VendorName   "SAM"
        ModelName    "SyncMaster"
        HorizSync    31.5 - 57.0
        VertRefresh  40.0 - 150.0
        Option            "DPMS"
EndSection

Section "Device"
        ### Available Driver options are:-
        ### Values: : integer, : float, : "True"/"False",
        ### : "String", : " Hz/kHz/MHz"
        ### [arg]: arg optional
        #Option     "SWcursor"                   # []
        #Option     "HWcursor"                   # []
        #Option     "NoAccel"                    # []
        #Option     "ShowCache"                  # []
        #Option     "ShadowFB"                   # []
        #Option     "UseFBDev"                   # []
        #Option     "Rotate"                     # []
        #Option     "VideoKey"                   #
        #Option     "FlatPanel"                  # []
        Identifier  "Card0"
        Driver      "nv"
        VendorName  "NVidia"
        BoardName   "GeForce2 MX/MX 400"
        BusID       "CI:1:0:0"
EndSection

Section "Screen"
        Identifier "Screen0"
        Device     "Card0"
        Monitor    "Monitor0"
        DefaultDepth     24
        SubSection "Display"
                Depth     1
                Modes    "1152x864" "1024x768" "800x600" "640x480"
        EndSubSection
        SubSection "Display"
                Depth     4
                Modes    "1152x864" "1024x768" "800x600" "640x480"
        EndSubSection
        SubSection "Display"
                Depth     8
                Modes    "1152x864" "1024x768" "800x600" "640x480"
        EndSubSection
        SubSection "Display"
                Depth     15
                Modes    "1152x864" "1024x768" "800x600" "640x480"
        EndSubSection
        SubSection "Display"
                Depth     16
                Modes    "1152x864" "1024x768" "800x600" "640x480"
        EndSubSection
        SubSection "Display"
                Depth     24
                Modes    "1152x864" "1024x768" "800x600" "640x480"
        EndSubSection
EndSection


唯一不足之处是我的鼠标还是不能实现滚轮功能,有没有配置成功的朋友支持一下.      
--------------------next---------------------
系统平台:Windows XP+Redhat Linux 8.0+FreeBSD 4.7 stable

硬盘分区情况:

表1
        ``Device Boot    Start       End    Blocks   Id  System
        /dev/hda1   *         1       791   6353676    b  Win95 FAT32
        /dev/hda2           792      4020  25936942+   f  Win95 Ext'd (LBA)
        /dev/hda3          4021      5005   7912012+  a5  FreeBSD
        /dev/hda5           792      1582   6353676    b  Win95 NTFS
        /dev/hda6          1583      2373   6353676    b  Win95 FAT32
        /dev/hda7          2374      2386    104391   83  Linux
        /dev/hda8          2387      3176   6345643+  83  Linux
        /dev/hda9          3177      3242    530113+  82  Linux swap
        /dev/hda10         3243      4020   6249253+  83  Linux

操作功略:

一,首先要弄清楚FreeBSD里的硬盘分区表示规则与linux里的规则不同,比如我的硬盘分区情况,下面是FreeBSD和linux下的分区标志对照表:

表2:
                分  区                                linux里的标识                FreeBSD里的标识
---------------------------------------------------------------------------
第一个主分区                                                hda1                                ad0s1
扩展分区                                                        hda2                                ad0s2
第一个逻辑分区                                        hda5                                ad0s5
第二个逻辑分区                                        hda6                                ad0s6
第三个逻辑分区(linux /boot)                hda7                                ad0s7
第四个逻辑分区(linux /usr)                hda8                                ad0s8
第五个逻辑分区(linux swap)                hda9                                ad0s9
第六个逻辑分区(linux /)                        hda10                                ad0s10
第二个主分区(FreeBSD)                        hda3                                ad0s3
        FreeBSD /                                                                                ad0s3a
        FreeBSD swamp                                                                        ad0s3b
        FreeBSD /var                                                                        ad0s3e
        FreeBSD /tmp                                                                        ad0s3f
        FreeBSD /usr                                                                        ad0s3g

现在知道了分区对应的标识方法之后,我们就开始操练啦!

二,编译FreeBSD内核加入对NTFS和Linux ext2fs的支持.FreeBSD内核默认情况下只支持FAT文件系统,但不支持NTFS和Linux ext2格式的文件系统的.我们来重新编译内核以让其支持.编译内核?很麻烦吗?哈哈!在FreeBSD下编译内核比起linux来说要简单的多,而且不必担心编译后无法启动的问题,可以很方便的恢复.

在/usr/src/sys/i386/conf目录下,可以看到一系列内核配置文件的样例.目录中最重要的文件有GENERIC和LINT,名为GENERIC的文件就是通用内核kernel.GENERIC的配置文件,而LINT文件中包括FreeBSD支持的几乎所有配置参数,并逐一加以解释.要重新编译内核,就必须要生成配置文件但直接修改已有的配置文件并不可取,我们可以先复制一个或多个新的配置文件,这样就可以编译几种内核.操作如下:

# cd /usr/src/sys/i386/conf
# cp GENERIC mykernel

然后我们就可以修改mykernel这个配置文件了.在里面加入以下两行:

options                NTFS                #NT Filesystem
options                EXT2FS                #Linux ext2 Filesystem

然后保存修改,好啦!现在我们开始编译吧:
分别输入:

# /usr/sbin/config mykernel
Removing old directory ../../compile/mykernel:        Done.
Kernel build directory is ../../compile/mykernel

这个命令将产生一个/usr/src/sys/compile/mykernel的目录,其中目录名对应于内核的名字.
如果这个过程出现错误,就说明配置文件中存在语法错误,config程序将会提示出错的行,以便使用者进行修改。但是config不会发现配置文件中存在的逻辑错误,这些逻辑错误只能在编译内核时才能发现。

下一步就是进入生成的目录中进行编译和安装。

# cd ../../compile/mykernel
# make depend
# make

编译过程需要一些时间以进行编译,这时候就可以作些其他任务等待编译结束。
内核编译成功之后,就可以进行安装了:

# make install

这将原有内核更改为/kernel.old,然后将编译后产生的新内核移到根目录下,命名为/kernel。此后可以重起系统,检查新内核是否正确。

# reboot

现在我们就可以mount NTFS和linux ext2的文件系统了.

三,挂载NTFS,Linux ext2文件系统.
参照我上面的硬盘分区情况,我打算挂载hda1,hda5和hda10,分别对应着C盘D盘和linux的根分区.仔细对照表2,找出FreeBSD下的硬盘分区标识.
首先创建挂载点:

# mkdir /mnt/fat32
# mkdir /mnt/ntfs
# mkdir /mnt/linuxroot

然后分别挂载:

# mount -t msdos -r /dev/ad0s1 /mnt/fat32
# mount -t ntfs -r /dev/ad0s5 /mnt/ntfs
$ mount -t ext2fs -r /dev/ad0s10 /mnt/linuxroot

其中-r同-o rdonly的意义相同,表示只读.
好啦!大功告成!      
--------------------next---------------------
系统平台:FreeBSD 4.7 stable
硬件型号:nVidia Geforce 2 MX 400
X-server:XFree86 4.2+KDE 3.0

---------------------------------------------------

FreeBSD 4.7可以识别我的显卡,驱动是默认的nv.在1152x864,色深16位下运行glxgears只能达到 340FPS,虽然显示效果还可以,但远未达到linux下的900FPS.所以决定升级显卡驱动.

一.下载nvidia for FreeBSD驱动

到nVidia官方网站 驱动下载页下载For FreeBSD驱动.目前nvidia提供的驱动只提供对FreeBSD 4.7 stable及以上版本的支持.下载驱动程序包 NVIDIA_FreeBSD-1.0-3203.tar.gz,注意与for Linux的不同驱动程序包只有一个.同时最好下载README文档.里面有驱动安装指南.

二.检查系统状况

这个驱动程序的安装要求
1.FreeBSD 4.7 stable以上版本
2.内核中有以下支持:

       options USER_LDT
       options SYSVSHM

其中后一项在通用内核中已有支持,但是第一项必须自己加入,编译内核的方法见下面.

3.系统中装有内核源代码 /usr/src/sys/
4.XFree86 4.2或更高的X服务器支持.确认你已经装有下列软件包:
        XFree86-4.2.0_1
        XFree86-libraries-4.2.1_1.tgz
        XFree86-Server-4.2.1_3
        XFree86-clients-4.2.1_1.tgz

三.重新编译内核

如果你的内核中没有USER_LDT支持.那么就必须重新编译内核.

# cd /usr/src/sys/i386/config
# cp GENERIC mykernel

编辑mykernel,在其中加入下面一行:

options     USER_LDT

保存.

# /usr/sbin/config mykernel
# cd ../../compile/mykernel
# make depend;make;make install

这个过程要求一段时间,如果没有错误,新内核就已经编译安装成功了.重启.

# reboot

四.新内核启动后.开始升级显卡驱动.

解压下载驱动程序包:

# cp NVIDIA_FreeBSD-1.0-3203.tar.gz /tmp
# cd /tmp
# tar zxvf NVIDIA_FreeBSD-1.0-3203.tar.gz
# cd NVIDIA_FreeBSD-1.0-3203

开始安装,只需要键入:

# make setup

成功后会显示创建了nvidia设备文件,可以在/dev下看到有几个以nvidia开头的设备文件已经创建好了.

五.修改你的XF86Config文件.

用vi或ee打开你的XF86Config文件(注意最好先备份一份).
在 Section "Module" 下面,注释掉 Load dri 和 Load Glcore 两项.在 Section "Device" 一项下把
Driver  "nv"
换成
Driver  "nvidia"
保存修改退出.

重新启动.键入startx,哈哈!出现了nvidia的Logo!!!.
进入KDE发现原来的显示器偏移现象也没有了!在终端中输入glxgears测试,哇靠!竟然能达到惊人的 1400FPS!比linux下还厉害呀!

怎么样?各位手痒了吧?赶快行动吧!      
--------------------next---------------------
硬盘40G,打算安装WindowsXP,Redhat Linux 8.0,FreeBSD 4.7三系统.下面是我的安装过程.

一.首先用Fdisk分区,主分区6G,其余都分为扩展分区,在扩展分区中建立两个6G的逻辑分区,用来安装windows下的软件,其余扩展分区空间空白.

二.首先安装winxp在C盘,然后安装Redhat Linux 8.0,在扩展分区中的空白空间分区给linux.建立了/boot, /, /tmp, /usr四个分区.留下其余空白空间给后面的FreeBSD.

三.安装Redhat Linux8.0,选择grub装在MBR引导.

四.在WinXP里用PQ7把扩展分区中的空白空间转换成主分区,因为FreeBSD安装必须独占一个主分区.

五.用FreeBSD第一张光盘启动开始安装.
在进行到Fdisk分区步骤时,选中先前创建的第二个主分区(位于最后面)按D删除变成unused,然后选中它按C创建一个Slice.中间会提示选择类型(165)及大小,直接回车即可.如果不确定或想重新来,可以按U恢复到最初状态.确保无误后按Q保存修改退出.

然后会提示选择何种引导方式.有三个选项:BootMgr,Standard和None.如果想用FreeBSD的引导程序来引导各个操作系统,就选第一个.如果想用linux的Grub来引导则选第三个.主意第二个会清除现有的MBR内容!我这里因为打算用linux grub来引导,所以选择第三个None.

然后到创建partition一步.这时可以在屏幕上面看到自己刚创建的Slice名称,我的是ad0s3,直接按A可以让其自动为你创建几个partition,比如下面是我的情况:
        ad0s3a        /                UFS                128M
        ad0s3b        swamp        swap        496M
        ad0s3e        /var        UFS+S        256M
        ad0s3f        /tmp        UFS+S        256M
        ad0s3g        /usr        UFS+S        6590M
如果不想让它自动创建,可以手动按C自己创建.其间可以按U来恢复初始状态.确保没错了按Q保存退出.
下面开始安装组件及相关设置.我就不说了.

六.安装好FreeBSD后,重新启动,进入linux,修改grub.conf添加下面几行:

# For booting FreeBSD
        title FreeBSD 4.7
                root (hd0,2,a)
                kernel /boot/loader

重新启动,可以看到grub里多了FreeBSD 4.7一项,进入就可以启动FreeBSD啦!

下面是我在Linux下查看到的现在的分区状况:

   Device Boot    Start       End    Blocks   Id  System
        /dev/hda1   *         1       791   6353676    b  Win95 FAT32
        /dev/hda2           792      4020  25936942+   f  Win95 Ext'd (LBA)
        /dev/hda3          4021      5005   7912012+  a5  FreeBSD
        /dev/hda5           792      1582   6353676    b  Win95 FAT32
        /dev/hda6          1583      2373   6353676    b  Win95 FAT32
        /dev/hda7          2374      2386    104391   83  Linux
        /dev/hda8          2387      3176   6345643+  83  Linux
        /dev/hda9          3177      3242    530113+  82  Linux swap
        /dev/hda10         3243      4020   6249253+  83  Linux      
--------------------next---------------------
首先,所有上网的机器都必须支持 PPP 协议,在 FreeBSD 下有两种 PPP 的实现方式。一种是内核级的 PPP,另一种是用户级的 PPP。用户级的 PPP 相对于内核级的 PPP 来说更加灵活,更易使用.

在 FreeBSD 下上网必须要有 tun 这个伪设备,所以必须在内核中加入对 tun 的支持。
device tun 1
在 tun 后面的 1 指定同时可以使用的 tun 设备的个数。
在内核中加入对 modem 所对应的串口的支持。
device /dev/sio0 ( 假设 modem 所使用的串口为 com1 )以下是设备对照表:
com1 = /dev/sio0
com2 = /dev/sio1
com3 = /dev/sio2
com4 = /dev/sio3
目前FreeBSD 4.7内核已经有支持,不需要再重新编译内核.
用户级的 PPP 基本服务只须要一个配置文件,当然它是最重要的。这个文件不须要自己重新写一个,在 FreeBSD 下已经有一个例子,只需对该文件修改一下就可以用了。
拷贝 /usr/share/examples/ppp/ppp.conf.sample 文件到 /etc/ppp/ 目录下,将其改名为 ppp.conf 即可。
ee ppp.conf ( 编辑该文件 )
以下内容是我的ppp.conf:

default:
set log Phase Chat LCP IPCP CCP tun command
set device /dev/cuaa0
set speed 115200
set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 5 \"\" AT \
           OK-AT-OK ATE1Q0 OK \\dATDT\\T TIMEOUT 40 CONNECT"

165:
set phone 165
set login
set authname authname
set authkey password
set timeout 120
set ifaddr 10.0.0.1/0 10.0.0.2/0 255.255.255.0 0.0.0.0
add default HISADDR
enable dns

注意要将 set device /dev/cuaa0 改为 modem 相对的设备文件。以下是设备对照表:
com1 = /dev/cuaa0
com2 = /dev/cuaa1
com3 = /dev/cuaa2
com4 = /dev/cuaa3
只要将 set authname username 的 username 改成您上网的用户名,将 set authkey password 的 password 改成您上网的密码即可。其中 enable dns 表示自动获取你的ISP的IP地址,否则你必须在/etc/resolv.conf文件中指定.
保存 ppp.conf 后退出。现在可以试一试拨号上网。

拨号时要用到 ppp 这个命令,并且这个命令要有 root 的权限来运行,如果您正以 root 的身份登录系统,运行 ppp。

#ppp

运行 ppp 后,会进行交互式的操作方式。我们在 ppp.conf 文件里设定了上网的设置标签为 165,现在可以直接用 dial 命令按 165 的配置来拨号上网。
ppp> dial 165
之后就听到“猫”的叫声了。当成功拨号后,提示符 ppp> 会逐渐变为大写的 PPP>。
因为运行 ppp 后会进入交互的操作方式,而交互方式是不可以退出的。所以这时应按 alt + Fx 切换到另一个控制台,登录后才可以上网。上网后,可以在字符界面用 lynx 浏览 WWW,也可以运行 Xwidnow 进入图形界面上网。
最后一步,也是最重要的一步,就是关闭 Internet 的连接。
关闭 Internet 的连接有几种方法,现一一介绍。
如果这时正在字符界面下操作,按 alt + Fx 切换回 PPP 的交互的操作方式下,用 close 命令关闭连接。关闭连接后,大写的 PPP> 提示符会逐渐变为拨号前的小写字符。表示已经断线。
如果不想在 PPP 的交互操作方式下关闭 Internet 的连接,可以用直接 Kill PPP 进程的方式关闭连接。
#killall ppp
此时,所有 PPP 相关的进程都会被“杀死”,Internet 的连接也要被“异常”关闭。此方式也可以在 Xwindow 的终端窗口中进行。      
--------------------next---------------------

阅读(323) | 评论(0) | 转发(0) |
0

上一篇:2005-6-2 23:52

下一篇:欢迎阅读我的文章

给主人留下些什么吧!~~