当前位置:K88软件开发文章中心网站服务器框架Shell → 文章内容

Shell 文件系统操作

减小字体 增大字体 作者:佚名  来源:网上搜集  发布时间:2019-1-23 14:39:37

看看 od 命令以十六进制显示的结果,同样考虑分区 3,计算一下发现,分区 3 对应的 od 命令的结果为:fe00 ffff fe82 ffff 14c0 012a e7fa 001d首先是分区标记,00H,从上图中,看出它就不是引导分区(80H 标记的才是引导分区),而分区类型呢?为 82H,和 file 显示结果一致,现在再来关注一下分区大小,即 file 结果中的扇区数。$ echo "ibase=10;obase=16;1959930" | bc1DE7FA刚好对应 e7fa 001d,同样地考虑引导分区的结果:0180 0001 fe83 ffff 003f 0000 1481 012a分区标记: 80H,正好反应了这个分区是引导分区,随后是引导分区所在的磁盘扇区情况,010100,即 1 面 0 道 1 扇区。其他内容可以对照分析。考虑到时间关系,更多细节请参考下面的资料或者查看看系统的相关手册。补充:安装系统时,可以用 fdisk,cfdisk 等命令进行分区。如果要想从某个分区启动,那么需要打上 80H 标记,例如可通过 cfdisk 把某个分区设置为 bootable 来实现。参考资料:Inside the linux boot processDevelop your own OS: bootingRedhat9 磁盘分区简介Linux partition HOWTO分区和文件系统的关系在没有引入逻辑卷之前,分区类型和文件系统类型几乎可以同等对待,设置分区类型的过程就是格式化分区,建立相应的文件系统类型的过程。下面主要介绍如何建立分区和文件系统类型的联系,即如何格式化分区为指定的文件系统类型。常见分区类型先来看看 Linux 下文件系统的常见类型(如果要查看所有 Linux 支持的文件类型,可以用 fdisk 命令的 l 命令查看,或者通过 man fs 查看,也可通过 /proc/filesystems 查看到当前内核支持的文件系统类型)ext2,ext3,ext4 :这三个是 Linux 根文件系统通常采用的类型swap :这个是实现 Linux 虚拟内存时采用的一种文件系统,安装时一般需要建立一个专门的分区,并格式化为 swap 文件系统(如果想添加更多 swap 分区,可以参考本节的参考资料,熟悉 dd,mkswap,swapon,swapoff 等命令的用法)proc :这是一种比较特别的文件系统,作为内核和用户之间的一个接口存在,建立在内存中(可以通过 cat 命令查看 /proc 系统下的文件,甚至可以通过修改 /proc/sys 下的文件实时调整内核配置,当前前提是需要把 proc 文件系统挂载上: mount -t proc proc /proc除了上述文件系统类型外,Linux 支持包括 vfat,iso,xfs,nfs 在内各种常见的文件系统类型,在 Linux 下,可以自由地查看和操作 Windows 等其他操作系统使用的文件系统。那么如何建立磁盘和这些文件系统类型的关联呢?格式化。格式化的过程实际上就是重新组织分区的过程,可通过 mkfs 命令来实现,当然也可以通过 fdisk 等命令来实现。这里仅介绍 mkfs,mkfs 可用来对一个已有的分区进行格式化,不能实现分区操作(如果要对一个磁盘进行分区和格式化,那么可以用 fdisk)。格式化后,相应分区上的数据就会通过某种特别的文件系统类型进行组织。范例:格式化文件系统例如:把 /dev/sda9 分区格式化为 ext3 的文件系统。$ sudo -s# mkfs -t ext3 /dev/sda9如果要列出各个分区的文件系统类型,那么可以用 fdisk -l 命令。更多信息请参考下列资料。参考资料:Linux 下加载 swap 分区的步骤Linux 下 ISO 镜像文件的制作与刻录RAM 磁盘分区解释:[1],[2]高级文件系统实现者指南分区、逻辑卷和文件系统的关系上一节直接把分区格式化为某种文件系统类型,但是考虑到扩展新的存储设备的需要,开发人员在文件系统和分区之间引入了逻辑卷。考虑到时间关系,这里不再详述,请参考资料:Linux 逻辑卷管理详解文件系统的可视化结构文件系统最终呈现出来的是一种可视化的结构,可用ls,find,tree等命令把它呈现出来。它就像一颗倒挂的“树”,在树的节点上还可以挂载新的“树”。下面简单介绍文件系统的挂载。一个文件系统可以通过一个设备挂载(mount)到某个目录下,这个目录被称为挂载点。有趣的是,在 Linux 下,一个目录本身还可以挂载到另外一个目录下,一个格式化了的文件也可以通过一个特殊的设备 /dev/loop 进行挂载(如 iso 文件)。另外,就文件系统而言,Linux 不仅支持本地文件系统,还支持远程文件系统(如 nfs)。范例:挂载文件系统下面简单介绍文件系统挂载的几个实例。根文件系统的挂载挂载需要 Root 权限,例如,挂载系统根文件系统 /dev/sda1 到 /mnt$ sudo -s# mount -t ext3 /dev/sda1 /mnt/查看 /dev/sda1 的挂载情况,可以看到,一个设备可以多次挂载$ mount | grep sda1/dev/sda1 on / type ext3 (rw,errors=remount-ro)/dev/sda1 on /mnt type ext3 (rw)对于一个已经挂载的文件系统,为支持不同属性可以重新挂载$ mount -n -o remount, rw /挂载一个新增设备如果内核已经支持 USB 接口,那么插入 u 盘时,可以通过 dmesg 命令查看对应的设备号,并挂载它。查看 dmesg 结果中的最后几行内容,找到类似 /dev/sdN 的信息,找出 u 盘对应的设备号$ dmesg这里假设 u 盘是 vfat 格式,以便在一些打印店里的 Windows 上也可使用# mount -t vfat /dev/sdN /path/to/mountpoint_directory挂载一个 iso 文件或者是光盘对于一些iso文件或者是 iso 格式的光盘,同样可以通过 mount 命令挂载。对于 iso 文件:# mount -t iso9660 /path/to/isofile /path/to/mountpoint_directory对于光盘:# mount -t iso9660 /dev/cdrom /path/to/mountpoint_directory挂载一个远程文件系统# mount -t nfs remote_ip:/path/to/share_directory /path/to/local_directory挂载一个 proc 文件系统# mount -t proc proc /procproc 文件系统组织在内存中,但是可以把它挂载到某个目录下。通常把它挂载在 /proc 目录下,以便一些系统管理和配置工具使用它。例如 top 命令用它分析内存的使用情况(读取 /proc/meminfo 和 /proc/stat 等文件中的内容); lsmod 命令通过它获取内核模块的状态(读取 /proc/modules); netstat 命令通过它获取网络的状态(读取 /proc/net/dev 等文件)。当然,也可以编写相关工具。除此之外,通过调整 /proc/sys 目录下的文件,可以动态地调整系统配置,比如往 /proc/sys/net/ipv4/ip_forward 文件中写入数字 1 就可以让内核支持数据包转发。(更多信息请参考 proc 的帮助,man``proc)挂载一个目录

上一页  [1] [2] [3] [4]  下一页


Shell 文件系统操作