您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 咨询培训 > 南邮-Linux-第3章
第3章Linux系统的定制郑谦益、韩京宇内容提要磁盘管理引导加载程序grubLinux内核定制(自学)Linux应用环境的初始化3.1.1磁盘管理基本概念盘片盘面磁头磁道柱面扇区磁盘物理结构磁盘物理结构柱面从外到里从0开始编号。磁头和扇区也是从0开始编号。整个磁盘上的扇区线性排序。不同磁道上扇区虽然半径不同,但容量相同。3.1.2磁盘分区1、主引导记录2、分区命名3、linux系统中的分区4、fdisk命令1、MBR硬盘的第一扇区称为主引导记录(MBR,MASTERBOOTRECORD),0磁头0柱面0扇区。MBR的长度为512字节。第一部分占了446个字节,存放引导程序,如grub.第二部分共有64个字节,记录硬盘的分区信息,每个分区占16个字节。这16个字节记录了该分区的起始扇区、分区大小和状态信息.第三部分,最后两个字节的值是0x55aa.1、MBR的格式MBR分成三个区:bootloader程序(例如:grub)分区表MBR标识(即0x55,0xaa)MBR标识(2bytes)分区表(64bytes)引导加载片段(446bytes)512bytes磁盘分区磁盘最多4个分区。为了满足实际需要,将其中一个作为扩展分区,扩展分区再进一步分成若干个逻辑分区。每个磁盘或者4个主分区,或者3个主分区加一个扩展分区。每个分区的第一个扇区作为引导扇区。每个分区可以通过格式化建立某种类型的文件系统,不同分区的文件系统可以不同。2、分区命名规则hd代表IDE硬盘。sd代表SCSI,USB硬盘。同类型设备从字符a开始编号,a代表第一个硬盘,b代表第二个硬盘,依次类推。主分区和扩展分区的编号从1到4。扩展分区中的逻辑分区从编号5开始。2、分区命名规则例如:第一个IDE硬盘的四个分区分别是hda1,hda2,hda3,hda4.hda中的第一个逻辑分区是hda5.3、linux系统中的分区Linux系统安装要分成至少三个目录,可以放在任意一个主分区或者扩展分区中。1、boot目录:存放引导程序和内核映像。2、根文件系统(/):存放各种工具和应用软件。3、交换分区(swap):做虚拟内存用。实例分析命令含义n创建一个分区d删除一个分区q退出但不保存w保存退出p显示分区信息m显示帮助信息t改变分区的类型号码4、fdisk命令语法fdisk[选项]块设备文件功能在块设备上建立、修改和删除分区。3.1.3分区格式化1、mkfs命令进行格式化2、linux内核支持的文件系统3、交换分区的格式化mkfs命令选项含义-t选择文件系统类型-c检查设备中是否有坏块-v详细显示模式-N说明i-节点的数量,适用于ext2-m为超级用户预留的块数,默认5%。用于ext2-L说明文件系统的卷标,适用于ext2语法mkfs[选项][设备名称][区块数]功能在块设备上建立某种类型的文件系统。mkfs命令(1)在/dev/hda5上建一个msdos文件系统,检查是否有坏块,并将过程详细列出来:$mkfs-v-tmsdos-c/dev/hda5(2)将第1个SCSI设备扩展分区中的第2个逻辑分区格式化为ext3类型的文件系统$mkfs-text3/dev/sda6(3)将第2个IDE磁盘的第1个逻辑分区格式化为ext2类型文件系统,定义1000个i-节点,不预留空间给超级用户,卷标为myfiles.$mkfs-text2-m0-N1000-Lmyfiles/dev/hdb52linux内核支持的文件系统文件系统类型特点ext2/ext3Linux系统下的文件系统iso9660/cdfs标准CDROM文件系统vfat微软操作系统使用的文件系统格式sysvSystemV文件系统nfsSun公司推出的网络文件系统NTFS微软WindowsNT的文件系统3交换分区的格式化交换分区是Linux系统用于缓存物理内存暂时不用的内容。实例分析$mkswap/dev/sda6#创建分区sda6为swap交换分区$swapon/dev/sda6#加载分区sda6至交换分区$swapoff/dev/sda6#关闭交换分区sda63.1.4ext2文件系统ext2是Linux系统默认的的文件系统,支持Unix文件系统的特征。例如,目录、设备文件和链接文件等。从文件系统内部数据结构的角度,可将ext2分为超级快、i-节点表和数据区三个部分。超级块超级块包含整个文件系统的布局信息和参数设置。例如,逻辑块大小、i-节点表的区域、文件系统类型和卷标等。可使用dumpe2fs工具来查看文件系统的超级块信息。例如:$dumpe2fs-h/dev/sda2#查看分区/dev/sda2中文件系统的超级快信息i-节点表i-节点表包含了文件系统中所有的i-节点,i-节点用于存放文件的管理信息。例如,文件类型、权限、大小、数据在数据区的分布信息等但i-节点中不包含文件名,文件名及其对应的i-节点号以目录项的形式保存在目录文件中。数据区数据区存放文件的内容,其基本单位为逻辑块。一个文件包含若干个逻辑块,这些逻辑块以编号的形式存放于文件所对应的i-节点中,在读写文件时,根据读写指针的位置,可计算出当前数据所在的逻辑块。ext2文件系统的结构CIS191-Lesson2Superblocki-节点表ext2filesystem数据块图3-3ext2文件系统的结构#includesys/types.h#includeunistd.hmain(){pid_tpid;pid=fork();if(pid0)printf(erroroccurred!\n);elseif(pid==0)exit(0);elsesleep(60);wait(NULL);}bigfile102574bin102575demo.c102609bigfile102574bin102575demo.c102609102609-1zhangsstudent1502011-07-202011-08-082011-06-20208i-节点号类型链接数用户用户组大小修改时间存取时间创建时间逻辑块号rw-r—r--权限ext2文件系统图3-3是ext2文件系统的实例,图中,文件demo.c在i-节点表中的编号为102609,该i-节点中存放了demo.c文件的属性,其中,块号为208的数据块中存放了该文件的内容。使用ls-il命令显示demo.c相关信息。$ls-ildemo.c102609-rw-r--r--1shangsstudent150Jul202011demo.c3.1.5文件系统的挂载文件系统在使用前,必须将文件系统挂载至某个目录。Linux专门建立了目录/mnt,用于挂载文件系统。例如,可将光盘挂载至目录/mnt/cdrom,在成功挂载后,用户可在/mnt/cdrom目录下访问光盘。挂载和卸载文件系统的工具分别为mount和umount。mount命令选项含义-t指定文件系统类型-w安装有读/写权限的文件系统-r安装只读文件系统-a安装/etc/fstab中定义的文件系统语法mount[选项][设备文件][目录]功能将设备文件对应的文件系统挂载至目录。mount命令显示当前文件系统的挂载状况$mount/dev/sda2on/typeext3(rw)noneon/proctypeproc(rw)/dev/sda1on/boottypeext2(rw)noneon/dev/ptstypedevpts(rw,gid=5,mode=620)mount命令将usb挂载至目录/mnt/usb$mount/dev/sdb1/mnt/usb在挂载usb设备时,应先通过命令fdisk–l查看当前USB设备对应的设备名。将第1个SCSI磁盘扩展分区第2个逻辑分区(第6个分区)挂载至/mnt目录$mount/dev/sda6/mntmount命令将光盘挂载至目录/mnt/cdrom$mount-tiso9660/dev/cdrom/mnt/cdrom/$mount/dev/cdrom/mnt/cdrom在不指定文件系统类型的情况下,系统将自动匹配内核所支持的文件系统类型,若找到匹配的文件类型,则成功挂载,否则,失败。mount命令直接挂载一个windows分区,中文的文件名和目录名会出现乱码,为了避免这种情况,可指定字符集。挂载fat32的分区:$mount-tvfat–oiocharset=cp936/dev/hda6/mnt/d#cp936代表简体中文umount命令umount命令语法umount挂载点|设备功能断开设备与挂载点目录的链接umount命令实例分析$umount/dev/cdrom#卸载光盘$umount/mnt/cdrom#卸载光盘,若/mnt/cdrom为光盘的挂载点$umount/dev/usb//卸载usb盘注意:在卸载某文件系统前,如果有用户正在使用该文件系统,则必须等所有用户结束了对该文件系统的访问后,该文件系统才能被成功卸载。3.2引导加载程序grub引导加载(bootloader)引导加载程序引导加载程序引导并加载Linux内核至内存的适当位置,将控制权交给内核,并向内核传送必要的参数.至此,引导加载程序的任务完成。grubgrub(GrandUnifiedBootloader)是一个基于GNU项目的自由软件,可用于引导多种操作系统。例如,Linux、freebsd和windows等。它提供基于命令行的操作接口,用户可通过命令与grub进行交互。同时,grub也提供了启动配置文件,用户可根据需要对配置文件进行修改,grub在启动时,将根据配置文件的要求,完成对操作系统的加载。1.grub组成grub通常用作基于x86结构计算机的引导加载程序,可直接从fat、ext2和ReiserFS等文件系统中读取Linux内核。grub采用了模块化设计,在实现时,出于x86体系结构的考虑,将grub分为stage1、stage1.5和stage2三个部分。(1)stage1stage1的大小为512字节,位于启动扇区。当stage1.5被配置时,stage1将加载stage1,5。如果没有配置stage1.5,stage1则加载stage2。(2)stage1.5由于stage1只有不到512字节,因此,无法识别文件系统。stage1.5被设计为针对不同文件系统的模块。例如,e2fs_stage1_5,fat_stage1_5等。stage1.5的任务就是从文件系统中加载stage2。若stage1.5被配置,stage1首先将stage1.5的第一个扇区(start.S)读入内存,依靠start.s的扇区列表将stage1.5全部读入内存;然后stage1.5从文件系统中将stage2加载进内存。(3)stage2stage2是grub的主体,所有功能都实现在stage2中。如果没有配置stage1.5,stage1会将stage2的第一个扇区(start.S)读入内存,然后依靠扇区列表将stage2全部读入内存。2.GRUB中磁盘分区的命名磁盘分区在grub中的命名方式与Linux系统不同。grub不区分SCSI和IDE设备,都命名为hd。磁盘和磁盘分区的编号从0开始,这一点与Linux系统不同。例如,(hd0)表示第1个磁盘,(hd1,0)表示第2个磁盘的第1个分区。3安装grub在磁盘上可同时装有多个操作系统。不同的安装次序会影响系统的正常启动。例如,先安装Linux后,若需在其他分区安装windows系统,在安装完windows系统后,会发现Linux系统无法正常启动。其原因是Windows修改了原先由Linux系统安装的grubMBR,windows的主引导记录不具有引导多操作系统的能力,因此,必须进行恢复。安装grub假设stage1和stage2已存放在硬盘第二个分区的、/grub目录中。[ro
本文标题:南邮-Linux-第3章
链接地址:https://www.777doc.com/doc-4170057 .html