首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

解决 Linux 挂载 NTFS 分区只读不能写的问题

有没有小伙伴也是跟我一样电脑上同时装有 Windows 和 Linux 双系统的呢?对于用不起苹果电脑但是又无法抛弃 Windows 精彩生活的我们这些穷程序猿来说,能够同时解决生活和工作需要的办法,无非就是安装双系统或者使用虚拟机这两种方式。但是对于还不太熟悉 Linux 的小伙伴来说,起初总是会踩到各种各样的坑。今天我在 Linux 上挂载 Windows 的 NTFS 分区时就遇到了一个坑,刚开始踩到这个坑时可头疼了,因为度娘竟然找不到有类似经历的小伙伴们提供的解决方案(我已经习惯了这种折磨了,总是会遇到别人一辈子都遇不到的坑),而 Google 我就不提了,国庆刚过哈哈哈~

03

操作系统之引导

系统引导环节是操作系统启动过程中的最重要环节,也是最容易出问题的环节之一。按照个人计算机的硬件标准,引导环节发生在计算机的硬件系统检测完毕之后。具体的引导工作,是由BIOS完成的。BIOS维持一个可用于引导计算机的硬件设备列表,比如本地硬盘、本地光驱、网络、USB接口设备等,然后做一个排序。BIOS会试图从整个序列的第一个设备开始,检查其状态和引导能力。比如针对光驱,则首先会判断光驱中是否存在光盘,如果不存在,则跳过光驱设备,进入下一个设备的检测过程。如果发现有光盘存在,则试图读取光盘的第一个扇区,并检查这是否是一个可引导扇区(比如通过检查扇区的最后两个字节是不是0x55AA)。如果发现不是一个可引导扇区,则也是跳过光盘,再检查引导序列中的下一个设备,直到发现一个可引导的扇区为止。如果遍历完整个引导设备列表,未找到任何可引导的扇区代码,则引导过程失败,BIOS会提示无法找到可启动设备。如果在这个过程中能够找到一个可引导扇区,则BIOS会把该扇区的内容加载到内存,并跳转到该扇区,执行引导代码。这个跳转指令,就是BIOS程序在计算机启动过程中的最后一条指令,至此,BIOS的工作结束。后续工作,将由引导扇区代码完成。

01

存储基本概念(3)

将数据保存在存储介质上,除了需要一个好的存储介质之外,还需要一个适当的机制去管理这些存储介质上的数据,以便上层应用包括操作系统可以方便快捷的访问到这些数据。传统上我们知道进行磁盘管理都是通过一些工具进行操作的,那么这些工具是否一定与操作系统有关呢?不是的,因为从操作系统角度来看,操作系统虽然一般具有文件系统管理功能,但本质上文件管理系统它是比较独立的一个功能,显然可见的,就是操作系统可以支持多个文件系统,如LINUX支持ext2,ext3等,Windows 7扶持fat32也支持NTFS,实际上LINUX也是支持NTFS的。从文件系统角度来看,文件系统将数据以文件、目录方式进行。组织。那么从磁盘的角度来说,应该怎么管理这些空间呢?我们前面了解到磁盘一般都分磁道和扇区,那么这些磁盘和扇区是如何与文件系统对应上的呢?。这里需要了解磁盘管理的两个关键:磁盘分区和磁盘格式化。进行磁盘管理一般都是采用一些专用的工具进行的,这些工具可以实现我们想要的如磁盘分区和格式化功能。通常将磁盘划分成多个分区(partitions),然后操作系统通过磁盘驱动程序来读取这些硬盘上的分区信息。一般的LINUX上根据不同的接口类型显示分区名,如IDE接口是hde[1—],SCSI接口是sda[1—]等,在Windows上通常分为C、D、…等。当硬盘分成各个不同大小的区后,格式化软件会将这些区再细分成不同的文件系统管理格式,比喻说C盘是NTFS格式,D盘可能是FAT32格式。同样在LINUX下也是将文件目录mount到指定分区的。因此分区对磁盘非常重要。这里讲述几个常见软件的操作:

02

在Ubuntu上挂载Windows分区的解决办法

在我和实际使用中,字符集用utf8效果很好,没有出现乱码的问题,在终端挂载的代码如下: mount -t vfat /dev/hda2 /mnt/d -o codepage=936,iocharset=utf8 我的fstab # /etc/fstab: static file system information. # # <file system> <mount point>   <type>  <options>       <dump>  <pass> proc            /proc           proc    defaults        0       0 /dev/hdc8       /               ext3    defaults,errors=remount-ro 0       1 /dev/hdc9       none            swap    sw              0       0 /dev/hdb        /media/cdrom0   udf,iso9660 user,noauto     0       0 /dev/hdc1       /mnt/winc     vfat    defaults,codepage=936,iocharset=utf8  0  0 /dev/hdc5       /mnt/wind    ntfs    defaults,iocharset=utf8,umask=0222   0  0 /dev/hdc6       /mnt/wine    ntfs    defaults,iocharset=utf8,umask=0222   0  0 /dev/hdc7       /mnt/winf    vfat    defaults,codepage=936,iocharset=utf8  0   0 (以下转自网络) 1、挂载点必须是一个目录。 2、一个分区挂载在一个已存在的目录上,这个目录可以不为空,但挂载后这个目录下以前的内 容将不可用。 对于其他操作系统建立的文件系统的挂载也是这样。但是需要理解的是:光盘、软盘、其他操作 系统使用的文件系统的格式与linux使用的文件系统格式是不一样的。光盘是ISO9660;软盘是 fat16或ext2;windows NT是fat16、NTFS;windows98是fat16、fat32;windows2000和 windowsXP是fat16、fat32、NTFS。挂载前要了解linux是否支持所要挂载的文件系统格式。 挂载时使用mount命令: 格式:mount [-参数] [设备名称] [挂载点] 其中常用的参数有 -t<文件系统类型> 指定设备的文件系统类型,常见的有: minix linux最早使用的文件系统 ext2 linux目前常用的文件系统 msdos MS-DOS的fat,就是fat16 vfat windows98常用的fat32 nfs 网络文件系统 iso9660 CD-ROM光盘标准文件系统 ntfs windows NT 2000的文件系统 hpfs OS/2文件系统 auto 自动检测文件系统 -o<选项> 指定挂载文件系统时的选项。有些也可用在/etc/fstab中。常用的有 codepage=XXX 代码页 iocharset=XXX 字符集 ro 以只读方式挂载 rw 以读写方式挂载 nouser 使一般用户无法挂载 user 可以让一般用户挂载设备 提醒一下,mount命令没有建立挂载点的功能,因此你应该确保执行mount命令时,挂载点已经存 在。(不懂?说白了点就是你要把文件系统挂载到哪,首先要先建上个目录。这样OK?) 例子:windows98装在hda1分区,同时计算机上还有软盘和光盘需要挂载。 # mk /mnt/winc # mk /mnt/floppy # mk /mnt/cdrom # mount -t vfat /dev/hda1 /mnt/winc # mount -t msdos /dev/fd0 /mnt/floppy # mount -t iso9660 /dev/cdrom /mnt/cdrom 现在就可以进入/mnt/winc等目录读写这些文件系统了。 要保证最后两行的命令不出错,要确保软驱和光驱里有盘。(要是硬盘的磁盘片也可以经常随时 更换的话,我想就不会犯这样的错误了 :-> ) 如果你的windows98目录里有中文文件名,使用上面的命令挂载后,显示的是一堆乱码。这就要 用到 -o 参数里的codepage iocharset选项。codepage指定文件系统的代码页,简体中文中文代 码是936;io

03
领券