问题
我安装了 Linux Mint。每次启动时,我都需要手动安装计算机上的两个分区(New volume D
和Drive C
)。如果我不这样做,这些驱动器就不会出现在任何地方。我想知道是否有某种方法可以自动化这个过程。
目标
每次开机时自动挂载硬盘上的所有分区。
眼镜
Linux Mint 14 与 Windows XP SP3 双重启动
答案1
您可以通过最简单的方法来做到这一点。去:
- 菜单 -> 磁盘(应用程序)
- 选择要安装的卷,然后单击其选项
- 选择“编辑安装选项”-> 并确保在驱动器中选择“启动时安装”。
答案2
您可以通过文件来完成此操作/etc/fstab
。看看这个关联。这教程还有很好的细节。
步骤示例
首先,您需要找出硬盘驱动器的 UUID。您可以使用该命令blkid
来执行此操作。例如:
% sudo blkid
/dev/sda1: TYPE="ntfs" UUID="A0F0582EF0580CC2"
/dev/sda2: UUID="8c2da865-13f4-47a2-9c92-2f31738469e8" SEC_TYPE="ext2" TYPE="ext3"
/dev/sda3: TYPE="swap" UUID="5641913f-9bcc-4d8a-8bcb-ddfc3159e70f"
/dev/sda5: UUID="FAB008D6B0089AF1" TYPE="ntfs"
/dev/sdb1: UUID="32c61b65-f2f8-4041-a5d5-3d5ef4182723" SEC_TYPE="ext2" TYPE="ext3"
/dev/sdb2: UUID="41c22818-fbad-4da6-8196-c816df0b7aa8" SEC_TYPE="ext2" TYPE="ext3"
向 中添加条目时,上述命令的输出blkid
可用于识别硬盘驱动器/etc/fstab
。
接下来您需要编辑该/etc/fstab
文件。该文件中的行组织如下:
UUID={YOUR-UID} {/path/to/mount/point} {file-system-type} defaults,errors=remount-ro 0 1
现在编辑文件:
% sudo vi /etc/fstab
并添加一个这样的文件,例如:
UUID=41c22818-fbad-4da6-8196-c816df0b7aa8 /disk2p2 ext3 defaults,errors=remount-ro 0 1
保存文件,然后使用命令重新处理该文件mount -a
。
Windows分区
要挂载 ntfs 分区,您需要在文件中执行以下操作/etc/fstab
:
/dev/sda2 /mnt/excess ntfs-3g permissions,locale=en_US.utf8 0 2
答案3
如果您有很多分区需要安装,也许您需要像我一样的脚本。
# ! python
# mount all partition by neoedmund
from subprocess import Popen
from subprocess import PIPE
def getCol(col, line):
p1 = line.find(col)
if p1<0 : return ""
p2 = p1 + len(col) + 1
p3 = line.find('"',p2+1)
return line[p2+1:p3]
data_stream = Popen(["/bin/lsblk", "-P", "-o", "FSTYPE,UUID,MOUNTPOINT,KNAME"], stdout=PIPE)
data=[]
for line in data_stream.stdout:
fstype = getCol("FSTYPE", line)
if fstype=="": continue # no fs
mountpoint = getCol("MOUNTPOINT", line)
if mountpoint!="":continue # already mounted
uuid = getCol("UUID", line)
kname = getCol("KNAME", line)
data.append((kname, uuid))
print("### mount script ###")
for (kname,uuid) in data:
print("mkdir /media/%s-%s"%(kname, uuid))
print("mount /dev/%s /media/%s-%s" %(kname, kname, uuid))
print("### umount script ###")
for (kname,uuid) in data:
print("umount /dev/%s" %(kname))
它是一个python脚本,依赖于“/bin/lsblk”,将输出保存到两个shell脚本中以进行挂载和卸载。
答案4
当前 fstab 的备份:
#cp -a /etc/fstab /etc/fstab.bk
处理输出lsblk-f使用sed和awk并将输出重定向到 fstab:
#lsblk -f|sed 's/\[SWAP]/swap /g'|awk '/(-)/{printf"UUID=%-36s %-23s %-7s defaults
0 0\n", $3, ($4==""?mnt"NR:$4), $2}'>/etc/fstab
通过调用挂载新的挂载点
#mount -a