修订历史 | ||
---|---|---|
修订版 0.06 | 2004-03-10 | 修订者:ns |
添加了关于 Linux-2.6 的章节。 | ||
修订版 0.05 | 2003-12-26 | 修订者:ejh |
技术审查。 | ||
修订版 0.04 | 2003-12-11 | 修订者:ns |
修订版 0.03 | 2003-12-02 | 修订者:ejh |
技术审查。 | ||
修订版 0.02 | 2003-10-30 | 修订者:ns |
更改于 2003-11-20 |
本文档的目的是描述在 Linux 上实现 USB 闪存设备(闪存盘)的步骤。这包括以下内容
使市面上销售的、预格式化为 MS Windows 系统的设备在 Linux 上工作;
在单个分区上将设备格式化为 ext2 文件系统并使其工作。这适用于设备将专门在 Linux 机器上使用的情况;
在 ext2 和 vfat 文件系统的双分区上格式化设备并使其工作。其目的是为了适用于 Linux + Linux 和 Linux + Windows 都可能发生的情况;
使设备更加用户友好;
维护设备的文件系统;
使用 Linux-2.6.x 的附加功能。
本文档中描述的步骤应适用于任何可以作为读写设备操作的 USB 闪存盘设备。只读设备不属于此类别。如果设备的写入功能被禁用(即,如果写保护开关打开),则这些步骤将不起作用。
特别是针对特定文件系统进行格式化和维护的步骤(原则上)可以适用于其他文件系统,例如 ext3 和 reiserfs。这些尚未尝试和测试。也没有关注将这些步骤调整到其他相关操作系统。
![]() | 重新格式化用于数码相机的闪存可能很危险。相机可能因此无法识别它。请使用相机内置的菜单系统为您进行重新格式化。 |
闪存设备主要以小型便携式设备的形式出现,通常被称为闪存盘或钥匙链,以及作为数码相机的一部分。它们是非易失性设备,其工作原理是使用电荷以二进制格式表示数据。这些电荷可以几乎无限期地保持不变,但更改(例如写入设备)会限制设备的寿命(每次 8MB 的 100000 次写入)。
闪存盘直接插入计算机背面的 USB 端口。它所需的电源由 USB 端口提供。有时使用 USB 延长线将设备放在容易触及的地方很方便。
闪存盘通常具有写保护开关,如果您想将其用作读写设备,则应将其关闭。如果开关处于“打开”位置,则设备是只读的。这些设备通常配备有 LED(发光二极管),指示设备正在运行。当数据传输到设备或从设备传输数据时,LED 也会闪烁。
数码相机使用闪存进行图像存储。这些由相机供电,并通过电子接口连接到计算机的 USB 端口。为了能够连接到计算机,必须在接口连接期间打开相机的电源,并且只有在设备从计算机卸载后才能关闭电源。重要的是要记住,设备从相机的电池获取电力。因此,应尽快终止操作。
购买闪存盘时的重要考虑因素如下
这将取决于您的用途。 128MB 似乎是一个流行的选择。
知名品牌在其网站中可能会明确说明这一点。或者,询问供应商。但请注意:销售人员可能不知道您在说什么。说明书也可能会提到类似内容:适用于 Linux-2.4,或者可能有 Linux 企鹅的图片。如果这些询问都失败了,那么最好不要购买。
闪存盘通常与延长线(第 2 节)和钥匙链一起包装。后者提供了一种安全且时尚的方式来运输设备。确保包含这些。您可能需要额外的延长线,具体取决于情况。笔记本电脑和上网本通常不需要它们。
市面上销售的闪存盘通常格式化为 vfat (msdos),这在 Linux 中可以使用,但您将无法获得标准 ext2(或其他)文件系统的强度和多功能性。这不是问题。它可以被赋予其他文件系统,这将在本文档后面描述。
给定大小的闪存盘价格可能会有很大差异。了解价格范围是个好主意。互联网非常适合此目的。
本文档的用户可能需要熟悉以下内容: [1]
以下是对用于开发以下描述步骤的设置的显着特征的描述。所有步骤都经过了尝试和测试,也适用于 Linux-2.6。类似屏幕的显示是我屏幕上显示的精确副本。
不确定早于 2.4.xx 的内核中 USB 支持是否足够。以下与本文档相关的支持已编译到内核中。也可以采用模块化方法。
在上面的列表中,大写实体指的是在.config文件中找到的变量名,该文件位于内核源代码的顶层目录中(/usr/src/linux/)。实体xxx.o指的是在采用模块化方法时创建的模块。当没有模块引用时,该选项只能硬编译到内核中。
当运行make menuconfig或 make xconfig时,不同的内核版本可能有不同的选项指示。变量(例如 CONFIG_USB)可以从各种 help 选项中收集,可能是更可靠的指示。
最新的 Linux 发行版,例如 RedHat 和 SuSE,可能已经编译了适当的内核选项。
在 USB 支持下,提供了许多数码相机的选项。
如果您考虑(重新)编译内核,请查阅 第 4 节 中列出的相关文本。
在本节中,我们将非常简要地讨论一些基本的 Linux 概念,这些概念应有助于理解以下描述的步骤。
/proc 文件系统充当一个窗口,通过该窗口我们可以看到 Linux 设置的运行情况。对于本文档最感兴趣的对象是目录/proc/bus/usb/和/proc/scsi/。这些将用于验证内核是否已为我们的目的正确设置(第 7.2 节)。
您的闪存盘将被视为 USB 大容量存储设备,伪装成可移动 SCSI 磁盘 (sd)。SCSI 磁盘设备映射到/dev(设备)目录下的/dev/sda , /dev/sdb, ... 当存在不同的磁盘设备时,它们将被映射到/dev/sda, /dev/sdb, 等。例如,如果插入了闪存盘和数码相机,则一个将被映射到/dev/sda,另一个将被映射到/dev/sdb。测试表明,首先检测到的设备会被映射到sda,并在目录/proc/scsi/usb-storage-0中表示。第二个将被映射到sdb并在/proc/scsi/usb-storage-0中表示。如果两个设备都在启动时存在,会发生什么情况尚不清楚。要了解与本文档相关的分区概述,可以查阅文件/proc/partitions。查找类似sda, sda1, sdb的条目。在 Linux-2.6 系列内核下,这个问题可以得到非常巧妙的解决(第 12 节)。
在接下来的描述中,将假定只有一个闪存盘存在,因此映射到/dev/sda.
在大多数发行版中,这些点大量存在。您应该检查您的设置是否是这种情况(ls /dev/sda*)。如果没有,您可以执行以下操作来创建它们(以 root 用户身份,用井号表示)。
# mknod /dev/sda b 8 0 # mknod /dev/sda1 b 8 1 # mknod /dev/sda2 b 8 2 |
等等,直到/dev/sda15如有必要。整个设备映射到/dev/sda,而/dev/sdax (x = 1 ... 15)代表设备的各个分区。我们将在稍后描述如何为不同的文件系统创建不同的分区(请参阅 第 8 节 和 第 9 节)。如果您打算将闪存盘与单个分区(文件系统)一起使用,/dev/sda1就足够了。
此动态生成的文件系统应挂载在/proc/bus/usb/。因此,此挂载点必须存在。一旦挂载,应该在/proc/bus/usb/和/proc/scsi/中看到更多内容(第 7.3 节)。要查找存在哪些 USB 设备,请读取文件/proc/bus/usb/devices( less /proc/bus/usb/devices)。解释屏幕上的文字需要一点努力,但这并不困难。闪存盘由 Mass Storage Device 指示。
ext2(第二扩展)文件系统仍然是 Linux 设置中最流行的文件系统。它用途广泛且复杂,带有权限(读-写-执行,谁被允许做什么)、所有权(用户、组、其他)、时间戳(上次修改时间)等。此外,还存在用于正确维护配备 ext2 的设备的工具(第 11 节)。如果闪存设备仅在 Linux 设置中使用,则最好将其格式化为 ext2(请参阅 第 8 节)。
在内核中启用 vfat 可以使在 Dos/Windows 下创建的文件系统挂载到 Linux 系统中。大多数闪存盘都格式化为直接在 Windows 上使用,因此应将其视为 vfat 格式。vfat 文件系统不如 ext2 复杂,因此在内存空间方面更经济。它不像 ext2 那样携带权限,因此保存在 vfat 中的 ext2 文件将以更改的权限重新出现。尽管如此,如果闪存盘用于在 Linux 和 Windows 机器之间传输数据,则最好将其保持 vfat 格式。一种折衷方案是将闪存盘分区为两部分:一部分为 vfat,另一部分为 ext2。至少 Linux 机器应该能够处理两者。这在 第 9 节 中描述
以下是本文档中出现的命令选项的简短列表
![]() | 为了确保您查看和写入的设备是预期的设备,最好在开始这些步骤之前从 USB 总线中移除类似的设备。 |
您的系统可能已经设置为处理 USB 闪存设备。要检查这一点,只需发出命令$ mount从 X 终端。如果输出中出现类似
none on /proc/bus/usb type usbfs (rw) |
的内容,则您可以转到 第 7.4 节 并从那里继续。但是,浏览一下中间的章节可能是明智之举。如果测试不成功,一切都还没有结束。请继续阅读。
可以检查/proc目录中的一些内容,以查看内核选项是否已正确包含,或者是否已正确插入了相应的模块。作为第一个检查,查看目录/proc/bus/usb是否存在。如果存在,则您的内核正确支持 USB 子系统。如果不是这种情况,则必须重新编译内核并包含适当的 USB 支持(请参阅 第 5.2.3 节),或者必须更新内核。接下来,检查目录/proc/scsi是否存在。如果存在,则您进展顺利。如果不存在,则 SCSI 支持尚未编译到您的内核中(请参阅 第 5.2.1 节)。
在/proc中,应该为 USB 文件系统提供挂载点。该点是/proc/bus/usb。如果它存在,则内核已正确设置。
如果上一节的验证结果为肯定,则下一步是挂载 USB 文件系统。这需要以 root 用户身份发出以下命令
# mount -t usbfs none /proc/bus/usb |
![]() | 在较旧的内核版本中,上面的挂载命令可能需要通过将usbfs替换为usbdevfs来更改。在 Linux-2.4.20 中,这两种形式都有效。 |
如果没有投诉,请进行更多测试。第一个是快速测试(第 7.1 节)。更深入的探测是发出命令# ls -l /proc/bus/usb。这应该给出类似于
dr-xr-xr-x 1 root root 0 Sep 19 14:21 001 dr-xr-xr-x 1 root root 0 Sep 19 14:21 002 -r--r--r-- 1 root root 0 Sep 19 22:30 devices -r--r--r-- 1 root root 0 Sep 19 22:30 drivers |
的内容。路径/proc/scsi/usb-storage-0/现在应该存在,并且末尾的文件之一将显示这一点。在我的设置中,命令$ less /proc/scsi/usb-storage-0/1给出
Host scsi1: usb-storage Vendor: Generic Product: Mass Storage Device Serial Number: None Protocol: Transparent SCSI Transport: Bulk GUID: 0ed166800000000000000000 Attached: Yes/No |
如果闪存驱动器存在,则最后一行将有条目“Yes”。如果未插入,则条目将为“No”。
您现在可以确定闪存盘是否工作。假设您从柜台购买了它。其说明书很可能会告诉您如何为 Windows 设置它。这表明它已格式化为 vfat。在您尝试挂载它之前,请为其创建一个挂载点。执行类似# mkdir -m 777 /mnt/memstick的操作。挂载命令很可能是
# mount -t vfat /dev/sda1 /mnt/memstick |
如果一切顺利,您应该能够看到设备# ls /mnt/memstick.
。现在尝试一些标准操作,例如在设备上创建一个目录并将您喜欢的文本文件复制到其中
# mkdir /mnt/memstick/apollo # cp /home/myname/myfavourite_file /mnt/memstick/apollo/. |
再次列出(# ls -l /mnt/memstick),并注意权限。
卸载设备(# umount /dev/sda1),然后再次如上所述挂载它。再次列出并检查权限。您最喜欢的文本文件现在很可能会具有 x 权限。它变成了可执行文件。这在 vfat 文件系统中是正常的。如果您对此感到满意,请卸载设备并跳到 第 10 节 。
此处描述的步骤将为整个闪存设备提供一个分区,并赋予 ext2 文件系统。这将使该设备更适合在 Linux 机器之间使用。如果该设备需要在 Linux 和 Windows 机器之间操作,请不要这样做。
![]() | 与/dev/sda关联的设备将被重新格式化。其上的任何数据都将被销毁。为了确保您使用的设备是预期的设备,请在开始这些步骤之前从 USB 总线中移除类似的设备。 |
假设闪存内存映射到/dev/sda。在本节中,我们讨论整个闪存设备将专用于单个 ext2 分区的情况。在下面显示的示例步骤中,128MB 闪存被格式化为 ext2。这就是为什么出现 131MB 和 888 个柱面等数字的原因。fdisk 工具只是从设备中读取这些信息。
所有操作均由 root 用户完成。单个分区将在/dev/sda上创建(请注意:不是/dev/sda1)。该步骤在一系列步骤中描述,并附有注释。fdisk 的标准提示是命令(输入 m 获取帮助),您可以在任何阶段输入m以查看可用命令。如果您这样做,结果将是
Command action a toggle a bootable flag b edit bsd disklabel c toggle the dos compatibility flag d delete a partition l list known partition types m print this menu n add a new partition o create a new empty DOS partition table p print the partition table q quit without saving changes s create a new empty Sun disklabel t change a partition's system id u change display/entry units v verify the partition table w write table to disk and exit x extra functionality (experts only) |
您的闪存盘必须已插入,但未挂载。注意写保护已关闭。
开始操作
# fdisk /dev/sda Command (m for help):d {enter } Selected partition 1 Command (m for help):n {enter} Command action e extended p primary partition (1-4) p {enter} Partition number (1-4):1 {enter} First cylinder (1-888, default 1): {press enter} Using default value 1 Last cylinder ... (1-888, default 888): {press enter} Using default value 888 |
现在是验证一切是否顺利的好时机,方法是打印出分区详细信息和表。
Command (m for help): p Disk /dev/sda: 131 MB, 131072000 bytes 9 heads, 32 sectors/track, 888 cylinders Units = cylinders of 288 * 512 = 147456 bytes Device Boot Start End Blocks Id System /dev/sda1 1 888 127856 83 Linux |
确保分区未设置为可启动。分区表的“Boot”标题下不应有星号。此外,“Id”和“System”标题应与上面显示的打印输出中的标题相同。这表明您可以将设备格式化为 ext2(下一节)。这些是默认值。如果不是,则可以通过
Command (m for help): a [toggle a bootable flag] Command (m for help): t [change a partition's system id] |
来更改。如果(或当)分区表正确时,您可以完成以下步骤
Command (m for help): w [write table to disk and exit] |
就这样!
此处描述的步骤会将闪存设备分区为两部分——其中一个分区将格式化为 ext2,另一个分区将格式化为 vfat。当设备用于在两台(或多台)Linux 机器(ext2)之间以及 Linux 和 Windows 机器(vfat)之间传输数据时,这可能很方便
![]() | 映射到/dev/sda关联的设备将被重新格式化。其上的任何数据都将被销毁。为了确保您使用的设备是预期的设备,请在开始这些步骤之前从 USB 总线中移除类似的设备。 |
的设备。在本节中,我们描述如何为闪存盘设置双分区:设备的一半将专用于 vfat 文件系统,另一半将专用于 ext2。这样,您的设备将更通用,但也有些分散。该步骤将比 第 8.1 节 中的步骤更少详细。请注意,重复了上一节的步骤,并且显式输入了每种文件类型的十六进制代码(条目“t”后的行:Win95 = b;Linux = 83)。当分区仅用于 Linux 时,这是不必要的——Linux 是默认值。另请注意,vfat 分区首先进行——这是 Windows 的方式。
# fdisk /dev/sda Command (m for help): d Selected partition 1 Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 1 First cylinder (1-888, default 1): Using default value 1 Last cylinder or +size or +sizeM or +sizeK (1-888, default 888):444 Command (m for help): t Selected partition 1 Hex code (type L to list codes): b Changed system type of partition 1 to b (Win95 FAT32) Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 2 First cylinder (445-888, default 445): Using default value 445 Last cylinder or +size or +sizeM or +sizeK (445-888, default 888): Using default value 888 Command (m for help): t Partition number (1-4): 2 Hex code (type L to list codes): 83 Command (m for help): p Disk /dev/sda: 131 MB, 131072000 bytes 9 heads, 32 sectors/track, 888 cylinders Units = cylinders of 288 * 512 = 147456 bytes Device Boot Start End Blocks Id System /dev/sda1 1 444 63920 b Win95 FAT32 /dev/sda2 445 888 63936 83 Linux Command (m for help):w |
![]() | 请注意,我们在写入之前继续进行第二个分区。 |
将设备正好在中间分割(对于 128 MB 闪存盘,为 1--444;445--888)的选择是任意的。任何其他经过深思熟虑的分割都可以。
如果您一开始有多个分区,“删除”部分步骤将不得不重复。
此步骤是 第 8.2 节 的重复。第一步创建 dos 分区,第二步创建 Linux ext2 分区。
# mkdosfs -F 32 /dev/sda1 # mke2fs /dev/sda2 |
到目前为止,我们描述的只是设置系统和格式化闪存盘的步骤。我们必须使 USB 文件系统的挂载更持久,并且我们必须使非 root 用户更容易挂载此类设备。只有几件事要做。
下面描述的步骤适用于具有双分区的闪存盘的更复杂情况(第 9 节)。如果分区是单个 ext2,则应通过省略引用 vfat 部分的行并将sda2更改为sda1.
来简化该步骤。假设挂载点/mnt/memstick和/mnt/fatstick已创建。您不必使用这些词,它们甚至不必是/mnt
的子目录。为了更容易记住,创建以下符号链接
# ln -s /dev/sda1 /dev/fatflash # ln -s /dev/sda2 /dev/flash |
为了更平滑和更容易地挂载,请将以下行添加到/etc/fstab:( 请参阅 第 7.3 节 末尾的注释 )
none /proc/bus/usb usbfs defaults 0 0 /dev/flash /mnt/memstick ext2,vfat rw,user,noauto 0 0 /dev/fatflash /mnt/fatstick vfat rw,user,noauto 0 0 |
中间行允许以 ext2 或 vfat 格式挂载。最后两行使任何用户都可以通过命令
$ mount /dev/flash [for ext2 or vfat] $ mount /dev/fatflash [for vfat] |
挂载设备。可以同时挂载两个分区。请参阅 第 9 节。
在 ext2 格式的设备的情况下,用户(root 用户除外)似乎无法以读写模式挂载。解决方案是在闪存盘上创建一个由特定用户拥有的目录,并具有完全权限。Root 用户应该这样做
# mount /dev/flash # mkdir -m 777 /mnt/memstick/superdir # chown charles:charles /mnt/memstick/superdir |
如果设备采用 vfat 格式,则此步骤是不必要的。
总之,这是我用来挂载和卸载我的 (ext2) 闪存驱动器的小脚本
#!/bin/bash EXCODE="keepit" green='\033[0;32m' yellow='\033[0;33m' ## ___________________________ ## Function to echo in colours echo_in_color () { message=$2 message1=$4 color=$1 color1=$3 echo -e -n $color echo -n $message echo -e -n $color1 " " echo -n $message1 " " tput sgr0 return } ## ___________________________ clear mount /dev/flash echo_in_color $green "Flash drive mounted" sleep 2 while [ $EXCODE != "flexit" ] do clear echo_in_color $yellow "Enter [flexit] to unmount and exit:" read EXCODE done umount /dev/flash exit |
我通过从 FVWM 菜单中调用它Exec exec xterm -geometry 43x2+1250+0 -e /home/nikos/bin/flashdrive将其放置在屏幕一角的一个很小的 x-term 终端中。水平位移 1250 可能需要根据您屏幕的水平分辨率进行修改。
定期检查闪存上的 ext2 文件系统是一个良好的习惯。为此,可以使用 dumpe2fs 工具,方法如下# dumpe2fs -h /dev/sda1(您必须是 root 用户,并且设备不应被挂载)。结果应类似于以下内容
Filesystem volume name: <none> Last mounted on: <not available> Filesystem UUID: c42a6963-5e6a-4cd2-b7d7-c8f09dca6c52 Filesystem magic number: 0xEF53 Filesystem revision #: 1 (dynamic) Filesystem features: dir_index filetype sparse_super Default mount options: (none) Filesystem state: clean Errors behavior: Continue Filesystem OS type: Linux Inode count: 32000 Block count: 127856 Reserved block count: 6392 Free blocks: 116456 Free inodes: 31922 First block: 1 Block size: 1024 Fragment size: 1024 Blocks per group: 8192 Fragments per group: 8192 Inodes per group: 2000 Inode blocks per group: 250 Filesystem created: Sat Sep 20 12:43:00 2003 Last mount time: Tue Oct 28 14:13:03 2003 Last write time: Tue Oct 28 14:28:27 2003 Mount count: 13 Maximum mount count: 35 Last checked: Sat Oct 18 11:28:26 2003 Check interval: 15552000 (6 months) Next check after: Thu Apr 15 11:28:26 2004 Reserved blocks uid: 0 (user root) Reserved blocks gid: 0 (group root) First inode: 11 Inode size: 128 Default directory hash: tea Directory Hash Seed: 118bee0a-efa5-4771-967e-41a0badd0355 |
有几个重要的方面需要指出。
当 ext2 文件系统被创建时,默认情况下会给予其最大使用次数,之后才需要进行检查。这些可以在最大挂载计数 (35) 和检查间隔 (到期日期) 中看到。
迄今为止的使用情况:挂载计数 和 上次检查。
损坏文件(坏块)的存在情况:文件系统状态。
当您挂载设备或尝试从设备读取文件时,您可能会收到关于这些事项的警告。
按照上述针对 Linux-2.4.x 内核的描述设置您的系统将非常有效,但对于 Linux-2.6.x 内核 (在撰写本文时 x = 0, 1, 2, 3) 来说,更多功能成为可能
USB 设备的即插即用功能已得到极大改进。这意味着可以从 USB 端口连接和移除设备,而系统完全知晓。如果连接了设备,它将显示在 /proc 文件系统中。一旦移除,它将不再显示。
sysfs 系统已被引入。通过使用此功能,可以非常严格地控制连接的设备、它们的属性和连接节点。
用于处理热插拔的实用程序已得到改进或变得可用。借助这些实用程序,可以轻松区分已连接的设备,而无需考虑它们的连接顺序。
内核配置选项与 第 5.2 节 中描述的非常相似。配置菜单 (# make menuconfig) 的组织方式不同,也更加系统化。以下是相关的选择
在 第 6.2 节 中讨论了同时插入两个 USB 设备的情况。困难在于用户很难区分这两个设备。Linux Hotplug Project (搜索 hotplug) 最近取得的进展,并在 2.6 系列内核中实现,使得有效解决此问题成为可能。为了实现,需要一些实用程序
sysfs 文件系统。
sysfs 文件系统是 Linux-2.6 内核系列的固有特性。udev 和 sysfstools 使用它来获取关于内核对象 (设备等)、它们的属性和相互链接的信息。激活按照以下步骤进行
# cd / # mkdir sys # mount -t sysfs none /sys |
如果你执行 ls -F /sys, 将显示一个完整的目录结构,其中包含诸如 block/、bus/ 等条目。您已成功。现在应通过将以下行添加到/etc/fstab:
none /sys sysfs defaults 0 0 |
Sysfsutils。
这以常用方式之一安装,无需进行特殊的配置选项。README 文件中的说明非常清楚。但是,您应该首先确保条目/usr/local/lib已输入到/etc/ld.so.conf以便libsysfs.so库可以被系统识别。安装后,检查实用程序/usr/local/bin/lsbus和/usr/local/bin/systool已安装。还要检查上面提到的库是否已正确链接 (ldconfig -p | grep libsysfs).
Hotplug。
接下来安装hotplug脚本。首先要做的是检查热插拔是否在您的系统上工作。执行 less /proc/sys/kernel/hotplug。结果应该是/sbin/hotplug。如果不是这样,您应该添加行echo "/sbin/hotplug" > /proc/sys/kernel/hotplug到适当的初始化脚本,例如/etc/rc.d/rc.local。也可以在检查一切正常之前 (以 root 身份) 给出此命令。安装非常简单。执行# make install。之后检查脚本/sbin/hotplug是否存在。
Udev。
这是最后一次安装。研究 README 文件并按照必要的说明进行操作,以便能够运行make USE_KLIBC=true。如果您已编译 Linux-2.6.x 内核,这应该不会太困难。快速检查是找出/sbin/udev和/sbin/udevinfo是否存在。还有其他情况,一个非常重要的是/etc/udev/udev.rules。如果您有一个用于记忆棒的工作设置 (如上所述) 并且插入了一个记忆棒,您可以尝试ls /udev, 您应该看到设备 (sda, sda1, ...)。如果在那里,拔下设备并再次列出。它应该消失了!
通过使用 udev 实用程序,可以基于某些内置属性识别记忆棒。其中一个有效的方法是 vendor 标识。要查找已连接设备的此标识,请执行systool -vb scsi | grep vendor。这应该给出已连接 SCSI 设备列表 (请记住,您的记忆棒充当 SCSI 设备 第 6.2 节)。假设您同时插入了两个记忆棒,并找到 (就像我一样) 两个 vendor Id,即 "UFD" 和 "STORAGE"。然后添加到文件/etc/udev/udev.rules以下行 (如果您愿意,可以放在顶部)
## Flash Memory 1 BUS="scsi", SYSFS_vendor="UFD*", NAME="namib%n" ## Flash Memory 2 BUS="scsi", SYSFS_vendor="STORAGE*", NAME="kalahari%n" |
vendor 标识可能带有尾随空格,因此通配符星号是有目的的。不要忽略它们。移除并更换记忆棒,然后执行ls /udev。而不是不带任何名称的sda, sda1, 等等,现在应该有kalahari, kalahari1, namib和namib1。设备已根据其中的 "vendor" 信息命名。因此,我们可以识别设备,无论它被映射到哪里。剩下要做的就是创建适当的挂载点,例如/mnt/namib和kalahari并创建如下条目
/udev/namib1 /mnt/namib vfat,ext2 user,noauto,rw 0 0 /udev/kalahari1 /mnt/kalahari vfat,ext2 user,noauto,rw 0 0 |
在/etc/fstab中,以允许从其他位置挂载。
这非常有趣... 并且请记住,地球上还有其他沙漠。
本文档版权归 (c) 2003 Niko Sauer 所有,并根据以下 Linux 文档项目 (LDP) 许可条款分发。
除非另有说明,Linux HOWTO 文档的版权归其各自作者所有。Linux HOWTO 文档可以完整或部分地以任何物理或电子媒介复制和分发,只要所有副本都保留此版权声明。允许并鼓励商业再分发;但是,作者希望收到任何此类分发的通知。
所有翻译、衍生作品或包含任何 Linux HOWTO 文档的集成作品都必须受此版权声明的约束。也就是说,您不得从 HOWTO 生成衍生作品,并对其分发施加额外限制。在特定条件下可以批准对这些规则的例外情况;请通过下面给出的地址联系 Linux HOWTO 协调员。
简而言之,我们希望通过尽可能多的渠道促进此信息的传播。但是,我们确实希望保留 HOWTO 文档的版权,并希望收到任何重新分发 HOWTO 的计划通知。
如果您有任何问题,请联系<nikos@friedrichs.up.ac.za >
对于本文档内容的准确性不承担任何责任。使用本文档的概念、示例和其他内容,风险自负。由于这是一份新文档,可能存在错误和不准确之处,当然这可能会对您的系统造成损害。请谨慎操作,尽管这种情况极不可能发生,但作者对此不承担任何责任。
所有版权均由其各自所有者持有,除非另有明确说明。在本文档中使用术语不应被视为影响任何商标或服务标志的有效性。
对特定产品或品牌的命名不应被视为认可。
强烈建议您在进行重大安装之前备份您的系统,并定期进行备份。
[1] | 本文档很大程度上依赖于标有星号的文本 |