現: 2023-05-02 (火) 12:09:01 yuji ソース
Line 1: Line 1:
 +* ディスクイメージファイルをマウントする [#o96ce30a]
 +PCで作業している際,たまにCD/DVDなどのISOイメージやHDDイメージファイルの中からファイルを抜き出したくなることがある。
 +Linuxではループバックデバイス機能を使うと,これらのイメージファイルをディスク((正確にはブロックデバイス))としてマウントすることが出来る。~
 +これによりイメージファイルの中身を編集したりすることも出来るようになる。
 +
 +** 実際の方法 [#p0618aad]
 +mountコマンドで''-o loop''オプション付きでを実行すれば,イメージファイルをマウントすることが出来る。
 +
 +試してみたいのだが,マウントしてみるイメージファイルが必要。~
 +DDコマンドを使って試しにイメージファイルを作成して,これをマウントしてみることにした。
 +
 +- イメージファイルの作成~
 +100MB,ext4フォーマットのイメージファイルを作成する。
 + $ dd if=/dev/zero of=./100m.img bs=1M count=100
 + $ mkfs.ext4 100m.img
 +これで,約100MBのイメージファイルが出来ました。中身は空っぽ。
 +- イメージファイルのマウント~
 +上記ので作成したイメージファイルをマウントする。
 + # mount -t ext4 -o loop 100m.img /mnt/任意のディレクトリ
 +このようにすると,/mnt/任意のディレクトリに,イメージファイルがマウントされる。~
 +読み込みはもちろん,書き込みも可能。
 +
 +** CD/DVDイメージのマウント(ISOイメージ) [#f6de7a7a]
 +CD/DVDのISOイメージを同様にマウントしてみる。~
 +例として,Ubuntu 16.04 LTSのインストールディスクイメージ ubuntu-ja-16.04-desktop-amd64.iso をマウントしてみる。
 + # mount -t iso9660 -o loop ubuntu-ja-16.04-desktop-amd64.iso /mnt/任意のディレクトリ
 +書き込み禁止だという警告が出るけど,マウントはされる。(読み込み専用)
 + $ ls /mnt/任意のディレクトリ
 + EFI  README.diskdefines  boot  casper  dists  isolinux  md5sum.txt  pool  preseed
 +
 +** SDカードのイメージのマウント [#c457e8a5]
 +Raspberry PiにインストールするOSのイメージファイルをマウントしてみる。~
 +
 +Raspbian Stretch Lite を使ってみる。
 + # mount -t ext4 -o loop 2018-04-18-raspbian-stretch-lite.img /mnt/任意のディレクトリ
 +しかし,以下のようなメッセージが表示されてうまくいかない。
 + mount: 何らかのエラーにより、マウントが失敗しました。
 +       ファイルシステムタイプ, オプション, /dev/loop0 上のスーパー
 +       ブロック, 必要なコードページ指定/ヘルパープログラム
 +       など、何らかの設定が間違っているものと思われます。
 +       syslog 内に記録された情報が手助けになるものと思います -
 +       dmesg | tail などを実行してお読みください
 +
 +これは,このイメージファイルにパーティションが複数あるから。~
 +複数のパーティションが含まれるディスクイメージの場合,パーティションを指定してマウントする必要がある。~
 +
 +これをどうするかと言うと,offsetオプションを使ってマウントすることが出来る。~
 +
 +offsetに指定する値を調べるために,fdisk -l -u として,ディスクイメージの情報を見てみる。
 + $ fdisk -l -u 2018-04-18-raspbian-stretch-lite.img
 + ディスク 2018-04-18-raspbian-stretch-lite.img: 1.8 GiB, 1862270976 バイト, 3637248 セクタ
 + 単位: セクタ (1 * 512 = 512 バイト)
 + セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
 + I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
 + ディスクラベルのタイプ: dos
 + ディスク識別子: 0xc7cb7e34
 + 
 + デバイス                              起動 開始位置 最後から  セクタ サイズ Id タイプ
 + 2018-04-18-raspbian-stretch-lite.img1          8192    96453  88262  43.1M  c W95 FAT32 (LBA)
 + 2018-04-18-raspbian-stretch-lite.img2        98304  3637247 3538944  1.7G 83 Linux
 +offsetオプションに指定する値は,セクタサイズ×マウントしたいパーティションの始点になる。~
 +例えば,上記の二つ目のパーティションをマウントする場合,512*98304=50331648 が指定値になる。
 + # mount -t ext4 -o loop,offset=50331648 2018-04-18-raspbian-stretch-lite.img /mnt/任意のディレクトリ
 +今度は,マウント出来ました。
 + $ ls /mnt/任意のディレクトリ
 + bin  boot  dev  etc  home  lib  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
 +ちなみに,以下のようにoffset指定することも可能。
 + # mount -t ext4 -o loop,offset=$((98304*512)) 2018-04-18-raspbian-stretch-lite.img /mnt/任意のディレクトリ
  

  • 開発/imgのマウント のバックアップ差分(No. All)
    • 現: 2023-05-02 (火) 12:09:01 yuji

トップ   差分 バックアップ 複製 名前変更 リロード   ページ新規作成 全ページ一覧 単語検索 最新ページの一覧   ヘルプ   最新ページのRSS 1.0 最新ページのRSS 2.0 最新ページのRSS Atom
Counter: 205, today: 5, yesterday: 4