コマ問LPIC Lv2-201(Ver3.5)

  • フォーラムは新サイトへ移行しました。
  • このフォーラムではゲスト投稿が禁止されています
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2013-6-17 15:09
RobSmedley  新米   投稿数: 3
コマ問LPIC Lv2-201(Ver3.5)のファイルシステムとデバイス(主題203)
ファイルシステムの作成とオプションの構成の問題にて
ファイルシステム作成コマンドについての問題で
「ファイルシステム作成コマンドは内部で最終的に使用されるコマンドを使う事」
という指定で正解が「mke2fs」になっていますが、mke2fsから内部コマンド
mkfs.ext2、mkfs.ext3、mkfs.ext4が呼び出されていると認識していたのですが
間違っているのでしょうか?
(よって正解はmkfs.ext2、mkfs.ext3、mkfs.ext4ではないかと思っております)

よろしければご回答願えますでしょうか?

参考URL
http://kwkw.wiki.fc2.com/wiki/ext
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2013-6-19 16:04
arashi1977  長老 居住地: 広島  投稿数: 1715
手元の環境で man mkfs.ext4 してみました。
バージョンは
E2fsprogs version 1.41.14        December 2010
です。

ここからいくつか抜粋します。
引用:
DESCRIPTION
mke2fs is used to create an ext2, ext3, or ext4 filesystem, usually in
a disk partition.
(訳)
説明
mke2fsはext2, ext3, ext4ファイルシステムの作成に使用します。
引用:
If called as mkfs.ext3 a journal is created as if the -j option was
specified.
(訳)
mkfs.ext3という名前で実行されると、-jオプションを指定したのと同じようにジャーナルを作成します。
引用:
-t fs-type
Specify the filesystem type (i.e., ext2, ext3, ext4, etc.) that
is to be created. If this option is not specified, mke2fs will
pick a default either via how the command was run (for example,
using a name of the form mkfs.ext2, mkfs.ext3, etc.) or via a
default as defined by the /etc/mke2fs.conf(5) file.
(訳)
-t ファイルシステムタイプ
作成するファイルシステムタイプ(ext2, ext3, ext4など)を指定します。
このオプションを省略すると、mke2fsはどのようにコマンドが呼び出されたか
(たとえば、mkfs.ext2やmkfs.ext3のように)あるいは/etc/mke2fs.confで指定されたdefault設定を使用します。
とあるので、
・mke2fsをmkfs.ext2という名前でコピーし、実行した場合はext2
・mke2fsをmkfs.ext3という名前でコピーし、実行した場合はext3
となります。

実機の各コマンドの比較をしてみた結果を以下に載せます。
■前提
$ ls -l /bin/bash
-rwxr-xr-x 1 root root 971575 10月  2  2012 /bin/bash*
$ ls -l /bin/sh
lrwxrwxrwx 1 root root 4 12月  2  2012 /bin/sh -> bash*
$ ls -l /bin/cp
-rwxr-xr-x 1 root root 138438  2月 20 11:25 /bin/cp*
$ diff /bin/bash /bin/sh
(違わないので結果表示されない)
$ diff /bin/bash /bin/cp
バイナリー・ファイル/bin/bashと/bin/cpは違います
(違うのでその旨表示される)

■結果
$ ls -l /sbin/mke2fs
-rwxr-xr-x 5 root root 64458  3月 23  2011 /sbin/mke2fs*
$ ls -l /sbin/mkfs.ext2
-rwxr-xr-x 5 root root 64458  3月 23  2011 /sbin/mkfs.ext2*
$ ls -l /sbin/mkfs.ext3
-rwxr-xr-x 5 root root 64458  3月 23  2011 /sbin/mkfs.ext3*
$ ls -l /sbin/mkfs.ext4
-rwxr-xr-x 5 root root 64458  3月 23  2011 /sbin/mkfs.ext4*
$ diff /sbin/mke2fs /sbin/mkfs.ext2
$ diff /sbin/mke2fs /sbin/mkfs.ext3
$ diff /sbin/mke2fs /sbin/mkfs.ext4

たぶんですが、mkfs と間違われてないでしょうか?
同じくman mkfsした結果です( http://linuxjm.sourceforge.jp/html/util-linux/man8/mkfs.8.html
引用:
実際は mkfs は単なるフロントエンドにすぎない。 Linux で利用できるファイルシステム には様々なものがあるが、実際のファイルシステムの作成はそれらファイル システムに専用のプログラム (mkfs.fstype) が行う
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2013-6-19 17:11
RobSmedley  新米   投稿数: 3
早速のご回答ありがとうございます!

mkfsが様々なファイルシステム作成コマンドのフロントエンドであるということは理解しております。(誤解しているわけではありません…)

要するにmke2fsコマンドの実体はmkfs.ext2,mkfs.ext3,mkfs.ext4と同じということなんでしょうか?

でももしそうだとしてもコマ問の正解はmke2fsでもmkfs.ext2,mkfs.ext3,mkfs.ext4でも良いと思うんですがね…(^_^;)

まだ私が理解不足なんでしょうかね…?
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2013-6-20 10:13 | 最終変更
arashi1977  長老 居住地: 広島  投稿数: 1715
では以下の結果ではいかがでしょう?
$ wget http://prdownloads.sourceforge.net/e2fsprogs/e2fsprogs-1.42.7.tar.gz
$ tar xzf e2fsprogs-1.42.7.tar.gz
$ cd e2fsprogs-1.42.7
$ ls
ABOUT-NLS       SUBMITTING-PATCHES  doc/               lib/
COPYING         aclocal.m4          e2fsck/            misc/
INSTALL         config/             e2fsprogs.lsm      po/
INSTALL.elfbin  configure*          e2fsprogs.spec     resize/
MCONFIG.in      configure.in        e2fsprogs.spec.in  tests/
Makefile.in     contrib/            ext2ed/            util/
README          debian/             include/           version.h
RELEASE-NOTES   debugfs/            install-utils/     wordwrap.pl
SHLIBS          depfix.sed          intl/
$ find . -name "*mkfs*"
./tests/m_mkfs_overhead
$ find . -name "*mke2fs*"
./tests/run_mke2fs
./tests/u_mke2fs
./tests/f_mke2fs2b
./tests/mke2fs.conf.in
./misc/mke2fs.c
./misc/mke2fs.8.in
./misc/mke2fs.conf.5.in
./misc/mke2fs-hurd.conf
./misc/mke2fs.conf.in
$ ./configure
(略)
$ cat -n misc/Makefile
(略)
   699  install: all $(SMANPAGES) $(UMANPAGES) installdirs
   700          $(Q) for i in $(SPROGS); do \
   701                  $(ES) " INSTALL $(root_sbindir)/$$i"; \
   702                  $(INSTALL_PROGRAM) $$i $(DESTDIR)$(root_sbindir)/$$i; \
   703          done
   704          $(Q) for i in $(USPROGS); do \
   705                  $(ES) " INSTALL $(sbindir)/$$i"; \
   706                  $(INSTALL_PROGRAM) $$i $(DESTDIR)$(sbindir)/$$i; \
   707          done
   708          $(Q) for i in ext2 ext3 ext4 ext4dev; do \
   709                  $(ES) " LINK $(root_sbindir)/mkfs.$$i"; \
   710                  (cd $(DESTDIR)$(root_sbindir); \
   711                          $(LN) $(LINK_INSTALL_FLAGS) mke2fs mkfs.$$i); \
   712          done
(略)
・e2fsprogsの中には「mkfs.ext2,mkfs.ext3,mkfs.ext4」のプログラム(ソース)はない
・mke2fsというプログラム(ソース)は存在する
・make installすると、misc/Makefileに従って「コンパイルされたmke2fsを【mkfs.ext2, mkfs.ext3, mkfs.ext4, mkfs.ext4devという名前でハードリンク】する」処理を行う
となります。

「内部で最終的に使用される」というのが曲者ですが、【mke2fs】が本体だ、ということですかね。

※興味があればmisc/mke2fs.cの中身も見てみてください。(blob: 2ffbbe9a639ac8c6be16b71296d57309951f08ab)
1060行目:static char **parse_fs_type の中でそのあたりの処理が書いてありますので
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2013-6-20 11:51
RobSmedley  新米   投稿数: 3
度々の詳細なご回答ありがとうございます!m(_ _)m

確かにinode番号を見てみると同じでした。
[root@localhost ~]# ls -i /sbin/mke2fs 
4021 /sbin/mke2fs
[root@localhost ~]# ls -i /sbin/mkfs.ext*
4021 /sbin/mkfs.ext2  4021 /sbin/mkfs.ext4
4021 /sbin/mkfs.ext3  4021 /sbin/mkfs.ext4dev

mke2fsが本体だという見解がしっくり来ました(^^)

これでモヤモヤが取れて勉強を続けられますw
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2013-6-20 15:04
arashi1977  長老 居住地: 広島  投稿数: 1715
理解の手助けになったようでよかったです。
がんばってください!

  >フォーラム検索へ


Copyright (c) 2020 Ping-t All rights reserved.