XFree86 和 Video4Linux
上个月我们安装了 Debian Linux 2.2.r2 (又名 potato) 并配置了 LILO 以启动 Linux、Win2K、WinNT、Win98SE 和 Win98。构建 Linux 桌面机器是一个两步过程。第二部分,为图形桌面安装 XFree86,是我们本月的首要任务。一旦我们让 X Windows 系统正常工作,我们将修补 kernel 2.2.17 以安装 Video4Linux 并使用 XawTV 在我们的 X 桌面上观看有线电视。作为 Linux 新手,我在做这一切时会遇到许多障碍。
默认情况下,Linux 在控制台模式下启动。像旧的 Windows 3.1 一样,Linux 系统首先作为文本控制台启动,然后加载 GUI。如果您正在构建 Linux 服务器,控制台可能就是您需要的或想要的全部。GUI 可能会产生很多不必要的开销,并且可能会出现更多问题。但是,我们正在构建桌面。我们将安装 X Windows 系统、Blackbox 窗口管理器、Netscape 和其他图形应用程序,例如 The GIMP。
Debian 包管理工具称为 dselect。此软件将安装我们六张 Debian CD 中包含的应用程序,并且还可以通过互联网检索软件包。Debian CD 上大约有 4,000 个软件包可供选择。Linux 应用程序不像 Windows 程序那样通常包含在漂亮的图形安装程序中。
基于控制台的 dselect 界面在当时很简洁,但现在已经明显陈旧。按照现代界面标准,它不是很受欢迎,而且软件包太多,难以导航。您可能会被提供通过 Web 浏览器操作 dselect 的选项。不要这样做!我们无法弄清楚如何使其工作(我们没有非常努力地尝试),但是遇到了很多麻烦才将其关闭,以便我们可以返回到控制台界面。
XFree86 (www.xfree86.org) 是一个在 Linux 和其他操作系统上运行的开源窗口系统。它不是唯一可用的 X Windows 系统服务器,但它很受欢迎且免费。X 与 Windows 不同。X 的客户端/服务器架构使用户可以打开到远程主机的窗口会话。我们不会注意到在同一台机器上运行客户端和服务器。XFree86 最近被重写以获得更好的屏幕性能,但我们将安装 Debian Potato 自带的旧版本 3.3.6-11。我们将把安装 4.x 版本留到以后。安装受支持的 3.x 版本已经足够困难了。
通过在 dselect 中选择 XFree86 来安装它。安装 XFree86 只是解压缩软件。它不会配置它。有几个程序可用于配置 XFree86。一个经常被推荐的是 XF86Setup,这是一个从图形 X 应用程序内部配置 X 的程序。要问的明显问题是:如果您一开始没有配置 X,这如何工作?答案是:比您预期的要好,但还不够好。没有工作鼠标的情况下尝试导航 GUI 已经够难了。另一个主要的配置程序是一个过时的控制台应用程序,称为 xf86config。如果 dselect 看起来很原始,那么 xfx86config 肯定是史前的。如果您犯了错误,您甚至无法后退。尽管如此,它确实完成了工作。不断重新开始,直到您做对为止。
我们的 Hercules Terminator 128 2x/I AGP 卡被列为您可以在 xf86config 中选择的众多卡之一(2x/I 在数据库中是 #370)。xf86config 警告我们不要探测时钟或在此卡上使用任何 Clocks 行,否则我们可能会严重损坏某些东西或烧毁我们的显示器。您可以让程序探测尝试自行找出卡。沿着同样的思路,您必须知道显示器的正确规格。我们的 ViewSonic E790 显示器支持 50-200KHz 的垂直频率和 30-95KHz 的水平频率。我们在他们的网页上很容易地找到了这一点。
为什么我们的鼠标无法工作起初是个谜。幸运的是,我们注意到 gpm,通用鼠标或控制台鼠标驱动程序,是已安装的软件包之一。这将在 X 可以获取鼠标事件之前吃掉它们。可以配置 X 以与 gpm 菊花链连接。由于不清楚我们为什么无论如何都需要 gpm,我们只需卸载它。
我们希望我们没有安装的另一个软件包是 xdm。当 dselect 推荐它以及我们正在安装的许多其他 X 相关的东西时,我们在不知道它是什么的情况下安装了它。xdm 所做的是在计算机启动时自动启动 X,立即将您从控制台模式中取出,并让您从 X 登录。如果您曾经在计算机实验室中使用过 UNIX,您就会知道此登录屏幕的外观。当然,如果 X 无法运行,那将是一场灾难,因为您尚未配置它!我们设法进入控制台提示符并在 /etc/init.d/xdm 中放入 exit 0 以在启动时停止它。
如果您不使用 xdm,那么您可以调用 startx 来启动 X。当 X 正在加载时,一些控制台消息会在显示器翻转到图形模式之前闪过。如果您遇到问题,就像我们一样,您应该指定 startx >& x.log 以将这些消息重定向到一个文本文件,供您稍后研究。按 Ctrl+Alt+Backspace 退出 X 服务器以返回控制台模式。
启动 X,它以 16 色 640 x 480 模式启动,绝对不是我们要求的。应该使用 Ctrl+Alt+数字键盘+ 来循环切换不同的受支持屏幕分辨率,但没有效果。直到我们检查我们保存的 x.log 文件时,我们才意识到我们正在运行通用的 X 服务器,而不是我们在 xf86config 中指定的 XF86_SVGA。没有任何警告我们 XF86_SVGA 甚至没有安装!我们检查发现 /etc/X11/Xserver 处的符号链接没有指向它。与 dselect 的另一次快速会话将其纠正。XF86_SVGA 与 X 的其余部分分开安装。如果 dselect 更用户友好,我们就会注意到这一点。
一旦我们让 XFree86 工作,我们需要调整频率设置以将图像正确地居中在我们的显示器上。xvidtune 程序可以很好地处理这一点。您可以交互式地调整屏幕,直到它与您想要的外观匹配。但是,您无法像在 Windows 中那样自动保存该设置。您必须将 xvidtune 的设置输出粘贴到您的 XF86Config 文件中。一旦您使用 xf86config 使其接近,您将多次手动编辑 XF86Config 文件以进行微小的调整。
窗口管理器负责 X 中窗口框架的“装饰”或外观。有许多不同的窗口管理器可用。请注意,我们在这里不是在谈论桌面管理器,例如 GNOME 或 KDE。它们也包括窗口管理器,但桌面管理器还有许多其他功能,例如桌面上的图标、回收站和一套可互操作的应用程序。它们也往往会消耗大量 RAM 并且速度较慢。我们稍后会尝试 GNOME,但现在我们坚持使用简单的窗口管理器。
Debian 的默认窗口管理器是 Window Maker。它看起来还不错,但我们遇到了问题。也许我们的问题有一个简单的解决方案,但我们无法弄清楚。您如何截取屏幕截图?没有该功能,将很难撰写本文!
Blackbox (http://blackbox.alug.org/) 是一款以轻量级和性感而闻名的窗口管理器。它支持主题,允许您大幅更改其外观。而且,它看起来很酷。使用 dselect,我们轻松地安装了它。Window Maker 仍然作为我们的默认窗口管理器出现,但是当我们右键单击时,菜单选项中添加了切换到 Blackbox 的选项。Window Maker 也不逊色,但在 Blackbox 中导航相同的菜单非常清晰快捷。
为了创建我们的屏幕快照,我们正在使用 The GIMP。我们可以使用 xwpick、xgrab、xv 或 xdmp,但 The GIMP 是我们无论如何都想安装的应用程序。它被认为是 Linux 上可用的最佳应用程序之一。The GIMP 与流行的图形编辑程序 Photoshop 非常相似。要截取屏幕快照,请从菜单中选择“文件” “获取” “屏幕截图”。这样做在 Blackbox 中可以正常工作,但由于某种原因在 Window Maker 中失败。The GIMP 是开源的,并且可用于其他操作系统。我们也曾在 WindowsNT 上使用它。
Amaya 是一款开源的 Web 浏览器和编辑器。我们在 Windows 中使用它时运气不错,但是当我们安装 Linux 版本时,它只是崩溃了。在这一点上,我们对 Amaya 没有那么感兴趣,以至于想追踪问题。由于许可证原因,Netscape 未包含在 Debian CD 中。必须从 Netscape 站点下载它。虽然 Solaris 版本的 Internet Explorer 可用,但 Microsoft 不提供 Linux 版本。
我们下载了 Linux 版 Netscape 4.76 (netscape-smotif-476),这是 4.x 版本的最后一个版本。Netscape 6 以资源占用大户而闻名,因此我们避免使用它。版本 5 从未如此。由于我们在 Linux 中没有可用的 Web 浏览器(除非您算上控制台模式的 Lynx 浏览器),我们通过启动 Windows 并使用 IE 浏览来下载 Netscape。我们将文件保存到我们的 FAT16 Windows 分区,然后重新启动到 Linux。在 Linux 中,我们挂载 Windows 分区,以便我们可以使用 mount -t vfat /dev/hdb1 /win98 访问我们的下载。
有一种方法可以在您下载 Netscape 后让 dselect 安装它,但是忽略它并执行标准的 Netscape 安装似乎更容易。所有未打包的安装都遵循相同的通用步骤,即更改为通用安装目录并使用 xvfz 选项解压缩 tar 文件
cd /usr/local/install tar xvfz filename.gz
然后我们执行 ns-install 脚本来安装 Netscape。然而,一切并不顺利,因为当我们尝试启动 Netscape 时,我们收到了错误消息。它无法加载 libstdc 共享库。我们正在使用与 Netscape 期望找到的库不同的版本。我们通过找到我们拥有的库并创建一个链接来给它与丢失的(过时的)库相同的名称来欺骗它
find / -name "libstdc*" -print ln libstdc++-3-libc6.1-2-2.10.0.so libstdc++-libc6.1-1.so.2剩下的就是使用“首选项” “代理” “手动”将 Netscape 指向我们的代理服务器。我们现在有了一个可工作的图形 Web 浏览器。
Hauppauge (http://www.hauppauge.com/) WinTV PCI 卡在窗口中提供电视视频。它的价格约为 70 美元,被誉为最好的廉价 PC 电视视频卡之一。它与您现有的视频卡协同工作,但并非每张卡都受支持。如果您像我一样是频道冲浪者,您可能会发现您更喜欢在 PC 上随意观看电视。这很方便,您可以更快地点击频道。WinTV 可与包括 Linux、Windows、FreeBSD 和 BeOS 在内的许多操作系统配合使用。

Hauppauge WinTV
关于 Video4Linux (V4L) 和用于 WinTV 以及其他基于 BT848 芯片的卡的 bttv 驱动程序的安装,Web 上有很多相互矛盾的信息。有太多不同的驱动程序版本可用;这可能会让人感到困惑。Debian Potato 附带的 V4L 版本已过时,因此我们将不使用它。
当前版本的 V4L 需要 2.3 内核中提供的 i2c 总线驱动程序。使用 uname -a 检查您拥有的内核版本。由于我们的内核是 2.2.17,我们必须对其进行修补。我们没有立即理解这一点,但知道有些不对劲,因为我们看到尝试从源代码构建 V4L 时出现了一堆 kcompat.h 编译错误。
在我们构建内核之前,我们必须首先使用 dselect 安装内核源代码并创建一个符号链接
cd usr/src/ ln -s kernel-source-2.2.17 linux cd linux
然后我们执行 make mrproper 以删除我们可能拥有的任何旧内核编译设置。我们使用 make menuconfig 启动内核配置程序。这是一个非常好的控制台应用程序。如果只有 xf86config 和 dselect 看起来这么好就好了!在 menuconfig 中,我们安装 kmod(新的模块加载器)和 Video4Linux。我们可以作为模块制作的一切东西(NTFS、VFAT 和 SMB,但不是 ext2)我们都这样做。有很多选项。在我们仔细研究每个菜单选项并选择适当的设置之前,需要多次尝试。
在编译我们的内核之前,我们需要按照 www.struse1007.de/bttv/faq.html 上的 bttv FAQ 中的说明,从源代码安装新的 i2c 驱动程序。i2c 驱动程序支持 BT848 用于调谐站等的内部串行总线协议
cd /usr/local/install tar xvgz i2c-2.5.4.tar.gz cd i2c-2.5.4 vi QUICKSTART
为了构建 i2c 驱动程序,我们将内核源代码中的 i2c* 文件替换为我们下载的驱动程序源代码,然后构建驱动程序
make现在回到内核以构建新的内核和驱动程序。我们首先备份我们的模块目录。我们将构建和安装所有新模块以与我们的新内核一起使用
cd /lib/modules cp -r 2.2.17 2.2.17.bak cd /usr/src/linux make dep make bzImage make modules make modules_install备份旧内核。编辑 lilo.conf 以便能够在出现问题时启动您的旧内核。安装新内核。请务必记住在关闭之前运行 LILO,否则您将无法启动。
mv vmlinuz vmlinuz.old vi lilo.conf vi /boot/bootmess.txt cp -i /usr/src/linux/arch/i386/boot/bzImage cp -i bzImage /boot/vmlinuz-2.2.17v4l ln -s /boot/vmlinuz-2.2.17v4l vmlinuz lilo返回 i2c-.5.4 并安装我们的 2.3 驱动程序。我们忽略依赖项警告,因为旧内核仍在运行。
make install depmod -a安装 bttv 驱动程序
tar xvfz bttv-0.7.51.tar.gz make make install depmod -a使用 Ctrl+Alt+Delete 关闭并重新启动。它启动了!我们正在运行我们的新内核!查看 /var/log/messages 表明 bttv 运行正常。
由于我们安装了当前版本的 V4L,我们也安装了当前版本的 XawTV 查看器程序。它不会启动,因为它找不到其 X 资源。文档没有太大帮助。凭直觉,我们从 Debian CD 安装了旧版本的 XawTV 和 fbtv,然后用新版本的 XawTV 覆盖它
tar xvfz xaw.3.26.tar.gz make make install
这奏效了!我们右键单击以获取设置菜单,进行一些调整,然后使用箭头键调谐频道。我们现在可以在我们的 X 桌面上观看电视了。
回顾一下,我们遵循的顺序是安装 XFree86,配置它,安装 The GIMP 和 Netscape,从源代码安装更新的 i2c 驱动程序,修补内核并安装 Video4Linux 和 XawTV。下个月我们将仔细研究 Linux MPEG 电影播放器。我们还将在 LILO 下安装 BeOS,并将在 Linux 中使用我们的 WinTV 卡与 BeOS 和 Windows 进行比较。
