搜索
❏ 站外平台:

在 Windows 世界中使用 Linux

| 2013-05-22 08:48      

使用 sudo 按需挂载 Windows 共享

  如果只希望偶尔挂载一个共享,可将 noauto 选项添加到上一节示例中所示的挂载选项列表中。此选项可在每次重新启动系统时避免自动挂载指定的 Windows 共享。然后,在希望访问该共享中的文件时,必须从命令行挂载该共享。

  必须始终以 root 用户身份执行 mount 命令,这通常意味着任何希望挂载该共享的人都必须知道该系统上的 root 密码。如果不希望在每次重新启动系统时自动挂载该共享,且希望限制需要知道 root 密码的用户(或只是限制必须使用该命令的次数),则可使用 sudo 命令使一个普通用户能够挂载该共享。为此,使用 visudo 命令编辑 /etc/sudoers 文件,这会将一个以下格式的条目添加到 /etc/sudoers 文件的末尾。

wvh  ALL=/bin/mount /mnt/PUBLIC, /bin/umount /mnt/PUBLIC

 

  此条目使用户 wvh 能够使用 sudo 命令执行 /bin/mount /mnt/PUBLIC 和 /bin/umount /mnt/PUBLIC 命令,但不允许该用户使用 mount 或 umount 命令挂载或卸载任何其他文件系统。如果希望给定系统上的所有用户都能够挂载或卸载 /mnt/PUBLIC 共享,可将用户名 wvh 替换为一般性的 %users 表达式。在此情况下,请确保用户希望更新的文件可由关联的 /etc/fstab 条目中的 anongid 所标识的组写入数据,并且所有用户都属于这个组。

  备注:另一种挂载 Windows 共享的方法是使用一个支持 CIFS 文件系统的 File system in User Space (FUSE) 程序包。smbnetfs 和 fusesmb 程序包很流行,但已很久未更新了,且需要大量配置才能使它们正常工作。(参见 参考资料 获取这些项目的链接。)

Linux 系统上使用 Windows 文本文件

  大部分人都认为文本文件在每个计算机系统上都是一种标准的文件类型,因此可安全地用于配置文件、可在任何操作系统上读取的便笺等。不幸的是, 情况不是这样的。尽管 Windows 和 Linux 系统上的文本文件使用了相同的字符集,但用于标识文本的行尾的字符却不同。Windows 和 DOS 系统使用两个字符来标识文本的行尾:一个回车字符 (Ctrl-M) 和一个换行符 (Ctrl-J)。Linux 和所有类似 UNIX 的系统都使用单个字符来标识文本的行尾:换行符。如果使用 Linux 实用程序打开在 Windows 系统上创建的文本文件,将会在每行末尾看到一个 Ctrl-M 字符,该字符常常显示为 ^M 或 \r。这个额外的字符可能会让需要读取这类文件的 Linux 实用程序难以理解。

  Linux 提供了两个命令来自动更改文本文件中的行结束符。dos2unix 命令(位于大部分 Linux 发行版中都提供的一个具有相同名称的程序包中)自动转换在 Windows(或 DOS)中创建的文本文件,以使用 Linux 和 UNIX 约定来标记文本的行尾,这会删除所有的 Ctrl-M 字符。一个同名的程序包中有一个等效的程序 unix2dos,可将 Linux 和 UNIX 文本文件转换为 Windows 格式的文本文件。

  如果您是 Emacs 文本编辑器的爱好者,可以将 清单 4 中所示的 Emacs 命令添加到 Emacs 配置文件 (~/.emacs) 中。然后就能够执行 dos-file、mac-file 和 unix-file 命令,将一个文本缓冲区的上下文转换为使用该命令指定的文本文件格式。


清单 4. 更改文本文件类型的 Emacs 命令

;
; Functions for changing buffer modes
;
(defun dos-file ()
   "Change the current buffer to Latin 1 with DOS line-ends."
   (interactive)
   (set-buffer-file-coding-system 'iso-latin-1-dos t))

(defun mac-file ()
   "Change the current buffer to Latin 1 with Mac line-ends."
   (interactive)
   (set-buffer-file-coding-system 'iso-latin-1-mac t))

(defun unix-file ()
   "Change the current buffer to Latin 1 with Unix line-ends."
   (interactive)
   (set-buffer-file-coding-system 'iso-latin-1-unix t))

  备注:清单 4 中所示的样例 Emacs 命令假设您使用的是 Latin 1 字符集。如果在文本文件中使用另一个字符集,则将需要修改这些命令以反映该字符集。

使用针对 Windows 设计的网络设备

  尽管 Linux 提供了大多数人需要在其计算机上使用的软件,但对于任何操作系统而言,兼容最新的网络硬件都是一个问题。现在的 Linux 发行版包含大量网络硬件的设备驱动程序,但针对新网络协议和相关硬件的 Linux 驱动程序能够可能跟不上形势,尤其是在无线领域。如果 Linux 机器在系统启动时无法识别或使用新的网络设备,则表明该设备的驱动程序不可用,或者这些设备驱动程序需要的一些其他资源(比如特定于硬件的固件)不可用。 在这些情况下,友好的邻域搜索引擎始终应是您首要考虑的办法:具有同一个新发布的硬件的其他人可能已能在 Linux 系统上正确运行这个搜索引擎。(参见 参考资料 获取多个站点的链接,这些站点提供了 Linux 支持的硬件信息和人们使用该硬件的经验。)

  如果无法为新发布的网络硬件找到内置的 Linux 驱动程序,大多数新硬件都附带了一张 CD,其中包含使支持的操作系统能够高效使用该硬件的特殊驱动程序。不幸的是,这些驱动程序 CD 很少包含专为 Linux 系统设计的驱动程序。在一些情况下,特定硬件的 Linux 驱动程序可从硬件供应商的网站获得。在此情况下,供应商通常还会提供安装和配置说明。许多硬件供应商还提供了在线论坛,可在其中提出问题,或讨论您遇到的 任何安装或配置问题。

  如果您正在使用或试用的 Linux 发行版不支持您的桌面或笔记本电脑上的特定网络硬件,而且供应商未提供 Linux 驱动程序,也不是毫无办法。NDISwrapper 程序包使您能够在 Linux 系统上使用大部分 Windows XP 网络设备驱动程序。网络驱动程序接口规范 (Network Driver Interface Specification, NDIS) 是一个针对网络接口卡 (NIC) 的标准应用程序编程接口。NDISwrapper 程序包不支持 NDIS (V6),这是 Windows 8、Windows 7 和 Windows Vista 使用的驱动程序格式,所以您只能将 NDISwrapper 程序包用于 Windows XP 驱动程序。如果使用 64 位 Linux 系统,则只能使用 64 位 Windows XP 驱动程序;32 位 Windows XP 驱动程序不适用于 64 位系统。

  在系统上安装 ndiswrapper-utils 程序包(在一些 Linux 发行版上,可能还需要安装 ndiswrapper-common 程序包)后,可执行以下步骤来安装和使用 Windows XP NDIS 驱动程序:

  1. 检查是否已加载相同硬件的任何 Linux 驱动程序,如果已加载,则使用 rmmod DRIVER 命令卸载。
  2. 找到想要使用的驱动程序的 .inf 和 .sys 文件。

    如果您的硬件的 Windows XP 驱动程序已在一个自解压 .exe 文件中提供,通常可使用 Linux unzip 实用程序来提取。如果在一个 .cab 文件中提供,则可使用 Linux cabextract 实用程序提取。如果在 InstallShield 文件中提供,可使用 unshield 实用程序提取。(在大部分 Linux 发行版中,所有这些实用程序都在存储库中的同名程序包中。)在最糟糕的情况下,可将驱动程序安装在 Windows 计算机上,然后再将它们复制到 Linux 系统上。

  3. 以 root 用户身份使用以下这样的命令或使用sudo命令安装驱动程序:
    ndiswrapper -i DRIVER.inf
    
  4. 以 root 用户身份运行以下命令,或使用 sudo 命令验证 Windows 驱动程序是否已正确安装:
    ndiswrapper -l
    
  5. 以 root 用户身份运行以下命令,或使用 sudo 命令加载 NDISwrapper 可加载内核模块:
    modprobe ndiswrapper
    
  6. 以 root 用户身份运行以下命令,或使用 sudo 命令,为您的网络接口创建一个模块配置文件别名:
    ndiswrapper -m
    

    此条目将类似于以下形式:

    alias wlan0 ndiswrapper
    

    确保与 ndiswrapper 内核模块关联的以太网接口名称与您希望将其用于的接口匹配,如 ifconfig -a 命令的输出所示。

  此刻,新网络硬件应可从 Linux 系统中看到,而且您应能够使用标准的 Linux 网络配置实用程序(比如 /sbin/ifconfig),或者配置和使用关联的 NIC。

  如果希望为也拥有原生 Linux 驱动程序的硬件使用 ndiswrapper 内核模块和 Windows 驱动程序,则将需要创建一个名称类似于 /etc/modprobe.d/blacklist-DRIVER.conf 的文件,其中包含一个类似 blacklist DRIVER 的条目,以确保您下次重新启动系统时不会加载 Linux 驱动程序。

  如果偏爱图形应用程序的简单性,则有多个选项可用于 NDISwrapper 程序包。图 1 显示了 ndisgtk 应用程序,可从同名的程序包中将该应用程序安装到系统上。


图 1. 使用 ndisgtk 添加一个 Windows 驱动程序
该图展示了如何使用 ndisgtk 添加一个 Windows 驱动程序,按钮包括 “Install New Driver”、“Remove Driver”、“Configure Network” 和 “Close”。

  NDISwrapper 程序包不但有用,而且给人印象深刻。即使 Linux 为您的硬件提供了原生驱动程序,您也可能会发现,使用 Windows 驱动程序可提供比使用内置的 Linux 等效驱动程序更高的性能。

结束语

  Linux 是一个免费且强大的操作系统,而且(目前)还易于使用。在桌面或便携式电脑上使用 Linux,可带来比 Windows 等操作系统高得多的性能,这也是为旧计算机注入新活力的一种不错的方式。但是,与基于 Windows 的服务器、某些类型的 Windows 文件或面向 Windows 的网络硬件互操作,这仍然是许多企业和家庭环境的需求。Linux 提供了广泛的软件和技术选择,支持您与这些系统和硬件互操作,从而从桌面 Linux 系统为您提供了两全其美的办法。

参考资料

学习

  • Samba Project 为 Linux、UNIX 和类似 UNIX 的操作系统提供了一个 Windows 互操作性应用程序套件。
  • Linux 硬件兼容性列表 提供了以下链接:已知与特定 Linux 发行版良好兼容的硬件列表;打印机、扫描仪、视频卡、音频硬件列表;一般而言已知与 Linux 良好兼容的数码相机等。

  • Linux HCL 是另一个不错的站点,提供了某些硬件在 Linux 系统上的运行情况的信息。

  • Linux on Laptops 站点提供了来自用户的详细信息,其中包括关于不同版本的 Linux 在众多笔记本电脑和上网本(按供应商组织)上的运行情况。

获得产品和技术

  • 存在多个针对 Linux 和 UNIX 环境的图形文件管理器。本文中提及的示例包括:
    • Gigolo。此图形应用程序简化了对本地和远程文件系统的管理和浏览,而且最初是为 Xfce 桌面环境开发的应用程序。根据 GIMP Toolkit (GTK),Gigolo 可用在所有使用 GNOME 桌面或已安装 GTK 的 Linux 发行版上。
    • Nautilus。这是使用 GNOME 桌面的计算机系统上的默认图形文件管理器。
    • Dolphin。这是使用 KDE 桌面的 Linux 系统上的默认图形文件管理器。
    • Konqueror。这是一个用于使用 KDE 桌面的 Linux 系统的功能极其强大的图形文件管理器。Konqueror 多年来一直是默认的 KDE 文件管理器,且支持其他针对 KDE 桌面的文件管理器中未提供的许多功能。
    • Thunar。这个用于 Linux 系统的图形文件管理器最初是为 Xfce 桌面环境开发的。
  • dos2unix 和 unix2dos 是在 Linux 和 UNIX、DOS 以及 Macintosh 系统上使用的转换文本文件格式的应用程序。

  • Emacs 是一个真正用于现代计算机系统的文本编辑器。

  • Ndisgtk 是一个与命令行 NDISwrapper 应用程序交互的图形应用程序。

  • 使用户能够挂载 Windows 共享而无需 root 特权的 FUSE 实现包括 fusesmbsmbnetfs 项目。这两个项目都需要 libsmbclient 库,该库已包含在 samba-client 程序包中。这两个项目都很长时间未更新了,这要么表明它们 “仍能发挥作用”,要么表明它们已不再被广泛使用。

  • 参阅 SourceForge 上的 NDISwrapper Project 页面,获取最新的 NDISwrapper 版本或使用 NDISwrapper 程序包的详细信息。

  • 访问 Mono Project 站点,了解使用 Mono 在 Linux 系统上运行 Microsoft .NET 代码的信息。

  • Wine Project 提供的软件支持在 Linux 计算机上运行 Windows 软件。要查看您感兴趣的软件能否在 Wine 下运行,可查阅 Wine AppDB

  • 查阅 CodeWeavers,获取 Wine 的一个商用支持版本。查看他们的 What Runs? 页面,了解已知与 CrossOver 兼容的 Windows 软件的信息。

  • 考虑使用 VirtualBox 在虚拟机中运行 Windows。

关于作者

  William von Hagen 担任作家和 UNIX 系统管理员已经超过 20 年,并从 1993 年开始成为 Linux 爱好者。Bill 是一些图书的作者或合著者,涉及的主题包括 Ubuntu Linux、Xen Virtualization、GNU Compiler Collection (GCC)、SuSE Linux、Mac OS X、Linux 文件系统和 SGML。他还为 Linux 和 Mac OS X 出版物和网站撰写了许多文章。

来自:http://www.ibm.com/developerworks/cn/linux/l-linuxdesktop/index.html


最新评论

我也要发表评论


返回顶部

分享到微信

打开微信,点击顶部的“╋”,
使用“扫一扫”将网页分享至微信。