让自编译 mkfs.ext3 工作

问题描述(2011、12、20):编译好的mkfs.ext3不能使用,提示一下错误

root@OpenWrt:~# mkfs.ext3 /dev/ide/host0/bus0/target0/lun0/part1

mke2fs 1.38 (30-Jun-2005)
ext2fs_check_if_mount: No such file or directory while determining whether /dev/ide/host0/bus0/target0/lun0/part1 is mounted.
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
4889248 inodes, 9767512 blocks
488375 blocks (5.00%) reserved for the super user
First data block=0
299 block groups
32768 blocks per group, 32768 fragments per group
16352 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
        4096000, 7962624

Writing inode tables: done
Creating journal (32768 blocks): mkfs.ext3: No such file or directory
        while trying to create journal



mount -t ext3 /dev/ide/host0/bus0/target0/lun0/part1 /mnt

mount: Mounting /dev/ide/host0/bus0/target0/lun0/part1 on /mnt failed: Invalid argument

解决办法:

在U盘小系统中加入空文件mtab和mke2fs.conf


其他网络资料解决办法:

 "ln -s /proc/mounts /etc/mtab"


补充说明:

关于设备挂载的知识

mount 的挂在不是开机挂载,如果想要开机自动挂载,涉及到/etc/fstab

/etc/fstab中写了开机自动mount的项目。可以把自己想要开机mount的项添加到/etc/fstab中,利用mount -a来检查写入是否正确。

我们的 /etc/fstab 则加入了两项额外的功能,分别是备份指令 dump 的执行与否, 与是否开机进行 fsck 扫瞄磁盘

*************************************************

/etc/fstab 是开机时的设定档,不过,实际挂载的项目是记录到 /etc/mtab 与 /proc/mounts 这两个档案当中的。每次我们在更动 filesystem 的挂载时,也会同时更动这两个档案喔!

*************************************************

但是,万一发生您在 /etc/fstab 输入的数据错误,导致无法顺利开机成功,而进入单人维护模式当中,那时候的 / 可
是 read only 的状态,当然您就无法修改 /etc/fstab ,也无法更新 /etc/mtab 啰~那怎么办? 没关系,可以利用底下这一招:

-n 不更新/etc/mtab,-o提供额外的参数设定。这样 / 就能读写,自然能够更新档案的内容了。

----------------------------------------------------------------------------------------------------------------

3.除了mount外,还有特殊设备的挂载loop。

mount -t vfat -o loop ..........使用 loop 模式用来将一个档案当成硬盘分割挂上系统。

将 /tmp/image.iso 这个光碟的 image 档使用 loop 模式挂在 /mnt/cdrom之下。用这种方法可以将一般网络上可以找到的 Linux 光 碟 ISO 档在不烧录成光碟的情况下检视其内容。

#mount -o loop /tmp/image.iso /mnt/cdrom
镜像文件:
mount fileName mountPoint -o loop,fileName是镜像文件名(*.iso,*.img),其它的不用说了,跟上面一样。用例:如我有一个a.iso光盘镜像文件,mount a.iso a -o loop,这样进入目录a你就能浏览a.iso的内容了,*.img文件的用法一样

------------------------------------------------------------------------------------------------------------------

mount [-t vfstype] [-o options] device dir 
  其中: 
  1.-t vfstype 指定文件系统的类型,通常不必指定。mount 会自动选择正确的类型。常用类型有: 
  光盘或光盘镜像:iso9660 
  DOS fat16文件系统:msdos 
  Windows 9x fat32文件系统:vfat 
  Windows NT ntfs文件系统:ntfs 
  Mount Windows文件网络共享:smbfs 
  UNIX(LINUX) 文件网络共享:nfs 
  2.-o options 主要用来描述设备或档案的挂接方式。常用的参数有: 
  loop:用来把一个文件当成硬盘分区挂接上系统 
  ro:采用只读方式挂接设备 
  rw:采用读写方式挂接设备 
  iocharset:指定访问文件系统所用字符集

挂接光盘镜像文件

  其实linux系统下制作和使用光盘镜像比Windows系统更方便,不必借用任何第三方软件包。 
  1、从光盘制作光盘镜像文件。将光盘放入光驱,执行下面的命令。 
   #cp /dev/cdrom /home/sunky/mydisk.iso 或 
   #dd if=/dev/cdrom of=/home/sunky/mydisk.iso 
   注:执行上面的任何一条命令都可将当前光驱里的光盘制作成光盘镜像文件/home/sunky/mydisk.iso 
  2、将文件和目录制作成光盘镜像文件,执行下面的命令。 
   #mkisofs -r -J -V mydisk -o /home/sunky/mydisk.iso /home/sunky/ mydir 
   注:这条命令将/home/sunky/mydir目录下所有的目录和文件制作成光盘镜像文件/home/sunky/mydisk.iso,光盘卷标为:mydisk 
  3、光盘镜像文件的挂接(mount) 
   #mkdir /mnt/vcdrom 
   注:建立一个目录用来作挂接点(mount point) 
   #mount -o loop -t iso9660 /home/sunky/mydisk.iso /mnt/vcdrom 
   注:使用/mnt/vcdrom就可以访问盘镜像文件mydisk.iso里的所有文件了


挂接移动硬盘

  对linux系统而言,USB接口的移动硬盘是当作SCSI设备对待的。插入移动硬盘之前,应先用fdisk –l 或 more /proc/partitions查看系统的硬盘和硬盘分区情况。 
  [root at pldyrouter /]# fdisk -l 
  Disk /dev/sda: 73 dot 4 GB, 73407820800 bytes 
  255 heads, 63 sectors/track, 8924 cylinders 
  Units = cylinders of 16065 * 512 = 8225280 bytes 
  Device Boot Start End Blocks Id System 
  /dev/sda1 1 4 32098+ de Dell Utility 
  /dev/sda2 * 5 2554 20482875 7 HPFS/NTFS 
  /dev/sda3 2555 7904 42973875 83 Linux 
  /dev/sda4 7905 8924 Win95 Ext'd (LBA) 
  /dev/sda5 7905 8924 8193118+ 82 Linux swap 
  在这里可以清楚地看到系统有一块SCSI硬盘/dev/sda和它的四个磁盘分区/dev/sda1 -- /dev/sda4, /dev/sda5是分区/dev/sda4的逻辑分区。接好移动硬盘后,再用fdisk –l 或 more /proc/partitions查看系统的硬盘和硬盘分区情况 
  [root at pldyrouter /]# fdisk -l 
  Disk /dev/sda: 73 dot 4 GB, 73407820800 bytes 
  255 heads, 63 sectors/track, 8924 cylinders 
  Units = cylinders of 16065 * 512 = 8225280 bytes 
  Device Boot Start End Blocks Id System 
  /dev/sda1 1 4 32098+ de Dell Utility 
  /dev/sda2 * 5 2554 20482875 7 HPFS/NTFS 
  /dev/sda3 2555 7904 42973875 83 Linux 
  /dev/sda4 7905 8924 Win95 Ext'd (LBA) 
  /dev/sda5 7905 8924 8193118+ 82 Linux swap 
  Disk /dev/sdc: 40.0 GB, 40007761920 bytes 
  255 heads, 63 sectors/track, 4864 cylinders 
  Units = cylinders of 16065 * 512 = 8225280 bytes 
  Device Boot Start End Blocks Id System 
  /dev/sdc1 1 510 4096543+ 7 HPFS/NTFS 
  /dev/sdc2 511 4864 Win95 Ext'd (LBA) 
  /dev/sdc5 511 4864 34973473+ b Win95 FAT32 
  大家应该可以发现多了一个SCSI硬盘/dev/sdc和它的两个磁盘分区/dev/sdc1?、/dev/sdc2,其中/dev/sdc5是/dev/sdc2分区的逻辑分区。我们可以使用下面的命令挂接/dev/sdc1和/dev/sdc5。 
   #mkdir -p /mnt/usbhd1 
   #mkdir -p /mnt/usbhd2 
   注:建立目录用来作挂接点(mount point) 
   #mount -t ntfs /dev/sdc1 /mnt/usbhd1 
   #mount -t vfat /dev/sdc5 /mnt/usbhd2 
   注:对ntfs格式的磁盘分区应使用-t ntfs 参数,对fat32格式的磁盘分区应使用-t vfat参数。若汉字文件名显示为乱码或不显示,可以使用下面的命令格式。 
   #mount -t ntfs -o iocharset=cp936 /dev/sdc1 /mnt/usbhd1 
   #mount -t vfat -o iocharset=cp936 /dev/sdc5 /mnt/usbhd2 
  linux系统下使用fdisk分区命令和mkfs文件系统创建命令可以将移动硬盘的分区制作成linux系统所特有的ext2、ext3格式。这样,在linux下使用就更方便了。使用下面的命令直接挂接即可。 
   #mount /dev/sdc1 /mnt/usbhd1


挂接U盘

  和USB接口的移动硬盘一样对linux系统而言U盘也是当作SCSI设备对待的。使用方法和移动硬盘完全一样。插入U盘之前,应先用fdisk –l 或 more /proc/partitions查看系统的硬盘和硬盘分区情况。 
  [root at pldyrouter root]# fdisk -l 
  Disk /dev/sda: 73 dot 4 GB, 73407820800 bytes 
  255 heads, 63 sectors/track, 8924 cylinders 
  Units = cylinders of 16065 * 512 = 8225280 bytes 
  Device Boot Start End Blocks Id System 
  /dev/sda1 1 4 32098+ de Dell Utility 
  /dev/sda2 * 5 2554 20482875 7 HPFS/NTFS 
  /dev/sda3 2555 7904 42973875 83 Linux 
  /dev/sda4 7905 8924 Win95 Ext'd (LBA) 
  /dev/sda5 7905 8924 8193118+ 82 Linux swap 
  插入U盘后,再用fdisk –l 或 more /proc/partitions查看系统的硬盘和硬盘分区情况。 
  [root at pldyrouter root]# fdisk -l 
  Disk /dev/sda: 73 dot 4 GB, 73407820800 bytes 
  255 heads, 63 sectors/track, 8924 cylinders 
  Units = cylinders of 16065 * 512 = 8225280 bytes 
  Device Boot Start End Blocks Id System 
  /dev/sda1 1 4 32098+ de Dell Utility 
  /dev/sda2 * 5 2554 20482875 7 HPFS/NTFS 
  /dev/sda3 2555 7904 42973875 83 Linux 
  /dev/sda4 7905 8924 Win95 Ext'd (LBA) 
  /dev/sda5 7905 8924 8193118+ 82 Linux swap 
  Disk /dev/sdd: 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/sdd1 * 1 889 127983+ b Win95 FAT32 
  Partition 1 has different physical/logical endings: 
  phys=(1000, 8, 32) logical=(888, 7, 31) 
  系统多了一个SCSI硬盘/dev/sdd和一个磁盘分区/dev/sdd1,/dev/sdd1就是我们要挂接的U盘。 
  #mkdir -p /mnt/usb 
  注:建立一个目录用来作挂接点(mount point) 
  #mount -t vfat /dev/sdd1 /mnt/usb 
  注:现在可以通过/mnt/usb来访问U盘了, 若汉字文件名显示为乱码或不显示,可以使用下面的命令。 
  #mount -t vfat -o iocharset=cp936 /dev/sdd1 /mnt/usb

在linux下如何mount nfs网络共享
类似于windows的网络共享,UNIX(Linux)系统也有自己的网络共享,那就是NFS(网络文件系统),下面我们就以SUN Solaris2.8和REDHAT as server 3 为例简单介绍一下在linux下如何mount nfs网络共享。在linux客户端挂接(mount)NFS磁盘共享之前,必须先配置好NFS服务端。 
  1、Solaris系统NFS服务端配置方法如下: 
(1)修改 /etc/dfs/dfstab, 增加共享目录 
   share -F nfs -o rw /export/home/sunky 
(2)启动nfs服务 
    # /etc/init.d/nfs.server start 
(3)NFS服务启动以后,也可以使用下面的命令增加新的共享 
    # share /export/home/sunky1 
    # share /export/home/sunky2 
注:/export/home/sunky和/export/home/sunky1是准备共享的目录


你可能感兴趣的:(让自编译 mkfs.ext3 工作)