FreeBSD Daily Topics

2014年5月28日 mkimg(1)コマンド登場

この記事を読むのに必要な時間:およそ 3 分

src

mkimg, a utility for making disk images from raw partition contents

FreeBSD 11.0-CURRENTのベースシステムに新しくmkimg(1)というコマンドが追加されました。これはディスクイメージを作成するためのコマンドで,従来であればdd(1),gpart(8),mdconfig(8),newfs(8)などを使って作成していたディスクイメージをmkimg(1)コマンドのみで実現できるというものです。もともとJuniper Networksで使われていたコマンドですが,今回FreeBSDの一般コマンドとしてマージされました。

UFSファイルシステムイメージを作成するコマンドとしてmakefs(8)がベースシステムには含まれています。典型的にはこのmakefs(8)とmkimg(1)を組み合わせて実行することでディスクイメージを作成します。

たとえば,まず次のようにmakefs(8)コマンドでファイルシステムイメージを作ります。このコマンドで1GBのファイルシステムイメージファイルができあがります。対象のディレクトリにFreeBSDの成果物を展開しておけばブートして利用できるファイルシステムになります。ここでは動作のチェックだけしたいので簡単に1つのファイルが存在するディレクトリを用意してファイルシステムを作成しています。

makefs(8)で1GBのUFSイメージファイルを作成

# find dir        ← ファイルシステムに展開するコンテンツ
dir
dir/test        ↓ 1GBのファイルシステムイメージを作成
# makefs -s 1g ufs_image.disk dir
Calculated size of `ufs_image.disk': 1073741824 bytes, 3 inodes
Extent size set to 8192
density reduced from 357913942 to 906582
ufs_image.disk: 1024.0MB (2097152 sectors) block size 8192, fragment size 1024
    using 19 cylinder groups of 55.31MB, 7080 blks, 64 inodes.
super-block backups (for fsck -b #) at:
      32,  113312,  226592,  339872,  453152,  566432,  679712,  792992,
  906272, 1019552, 1132832, 1246112, 1359392, 1472672, 1585952, 1699232,
 1812512, 1925792, 2039072,
Populating `ufs_image.disk'
Image `ufs_image.disk' complete
# ls -lh ufs_image.disk    ↓ サイズを確認すると1GBになっている
-rw-r--r--  1 root  wheel   1.0G May 26 06:11 ufs_image.disk
# du -sh ufs_image.disk
1.0G    ufs_image.disk
# file ufs_image.disk    ↓ UFSイメージであることも確認
ufs_image.disk: Unix Fast File system [v1] (little-endian), last mounted on , last written at Mon May 26 06:11:49 2014, clean flag 1, number of blocks 1048576, number of data blocks 1048103, number of cylinder groups 19, block size 8192, fragment size 1024, minimum percentage of free blocks 8, rotational delay 0ms, disk rotational speed 60rps, TIME optimization
#

次にmkimg(1)コマンドを実行してディスクイメージを作成します。指定できるパーティショニングスキーマはgpart(8)で指定できるものと同じです。ここではGPTを指定して典型的なディスクイメージを作成しています。1つめのパーティションはブートコード専用の領域,2つめがファイルシステムの領域で,3つめがスワップ領域です。

mkimg(1)でディスクイメージを作成

# mkimg -s gpt -b /boot/pmbr -p freebsd-boot:=/boot/gptboot -p freebsd-ufs:=ufs_image.disk -p freebsd-swap::1G -o disk_image.disk
# ls -lh disk_image.disk    ↓ 2GBのファイルが生成されている    
-rw-r--r--  1 root  wheel   2.0G May 26 06:13 disk_image.disk
# du -sh disk_image.disk    ↓ 実際には1MBのスパースファイル
1.0M    disk_image.disk
# file disk_image.disk        ↓ ブート可能なディスクイメージ
disk_image.disk: x86 boot sector; partition 1: ID=0xee, starthead 0, startsector 1, 4194341 sectors, code offset 0x31
#

作成したディスクイメージをmdconfig(8)コマンドを使ってデバイスファイルとして認識させてみると,GPTでパーティショニングされたディスクとして認識されることを確認できます。マウントして中身をチェックすると,makefs(8)でファイルシステムイメージを作成する際に取り込んだファイルが含まれていることを確認できます。

作成されたディスクイメージを確認

# mdconfig -a -t vnode -f disk_image.disk
md0
# ls -lh /dev/ | grep md0
crw-r-----  1 root  operator   0x71 May 26 06:14 md0
crw-r-----  1 root  operator   0x72 May 26 06:14 md0p1
crw-r-----  1 root  operator   0x73 May 26 06:14 md0p2
crw-r-----  1 root  operator   0x74 May 26 06:14 md0p3
# gpart show md0
=>      3  4194336  md0  GPT  (2.0G)
        3       32    1  freebsd-boot  (16K)
       35  2097152    2  freebsd-ufs  (1.0G)
  2097187  2097152    3  freebsd-swap  (1.0G)

# mount /dev/md0p2 /mnt
# find /mnt
/mnt
/mnt/test
#

FreeBSDプロジェクトではこのところシステムのビルドを継続的に実施して品質改善などに努める取り組みを続けています。Jenkinsへの対応やテストスィートの導入などはこうした継続的なビルド作業を実現する取り組みの一環です。特にJuniper Networksにおいてこうした要望が強く,今回導入されたコマンドもJuniper Networksから提供されたものです。

継続的にシステムをビルドしテスト結果を報告することは,どのコミットによってシステムが不安定になったのか,どのコミットで互換性が失われたのかを確認することに繋がります。こうした取り組みを継続することでカーネルとベースシステムの品質を常に高い状態に維持することができます。

告知

第29回 FreeBSD勉強会

2014年6月2日(月)に東京,KDDIウェブコミュニケーションズさまの会議室において第29回 FreeBSD勉強会 シェルとコマンド~実践的企業システム開発手法を開催します。参加申し込みはこちらからどうぞ。

近年,企業の基幹システム(売上管理システム,商品マスタ管理システム,販売管理システム,在庫管理システム,勘定系システム,MDシステム,勤怠管理システム,給与系システム,データ分析システム,ログ分析システムなど)の開発手法として超高速開発手法と呼ばれる開発手法が注目されつつあります。

現在の企業活動に求められるシステムの開発時間はますます短くなっており,従来のウォーターフォール型の開発では経営の要求に応えることが難しくなりつつあります。高性能なシステムを短期間に開発できる開発手法の需要が高まってます。

本勉強会ではFreeBSDを企業システムのベースに採用し,シェルとコマンドを組み合わせて企業システムを開発する手法を紹介します。この手法は企業システムの開発速度がきわめて高速で,開発される成果物も高性能という特徴があります。こうした開発手法の草分け的存在がユニバーサル

  • シェル
  • プログラミング研究所が開発しているユニケージ開発手法です。オングスではトリプル
  • ティー開発手法と呼ばれるシェルとコマンドをベースとした開発手法を活用して企業システムを開発しています。

    本勉強会ではこうした企業システム開発の実践経験などをベースに,どのような発想で企業システムを開発するのか,シェルとコマンドをベースとしたシステム開発とはいったいどのようなものなのか,コマンドとしてはどういったものが活用できるのか,などを紹介します。

    開催日時2014年6月2日(月)19:00~21:30(18:30開場)
    場所KDDIウェブコミュニケーションズ会議室 / 東京都千代田区麹町三丁目6番地 住友不動産麹町ビル3号館
    参加申込http://atnd.org/events/49885

    発表のあとはその場で簡単な懇親会を開きます。軽いつまみとアルコール類は用意しますが,お好きなお酒の持ち込みも大歓迎です。

  • 技評×オングス FreeBSDをインストールする方法

    2014年6月23日に技術評論社本社ビル5F会議室において「技評×オングス FreeBSDをインストールする方法 ~インストーラから手動でインストールまで詳しく紹介~」を開催します。参加申し込みはこちらからどうぞ。

    FreeBSDをインストールしたことがない,またはLinuxを使っているもののFreeBSDも使ってみたい,という方向けにFreeBSDをインストーラを使ってインストールする方法を紹介します。パーティションの考え方,ファイルシステムの選択の指針,インストール後に最初に設定すべき内容なども紹介します。

    インストールという作業はパーティショニング,ファイルシステムフォーマット,成果物の展開,ユーザとグループの作成,各種設定などの作業をコマンドを叩いて実行するのと同じでもあります。インストーラを使ったインストール作業を紹介したあとは,同じ内容をコマンドを実行して行う方法を紹介します。

    数台ほどであれば手動インストールでもよいのですが,数十台や数百台といったホストにFreeBSDをインストールする場合には,ネットワークインストールを実行するか,インストーラを開発して自動インストールが行われるようにします。こうしたインストーラはコマンドを使うだけで実現できます。本講演ではこうしたテクニックについても紹介します。

    開催日時2014年6月23日(月)19:00~21:30(18:30開場)
    場所技術評論社 本社5F会議室 ⁠東京都新宿区市谷左内町21-13)
    参加申込http://atnd.org/events/51376
    第30回 FreeBSD勉強会

    2014年7月18日(月)に東京,KDDIウェブコミュニケーションズさまの会議室において「第30回 FreeBSD勉強会 Active Directoryとディスクレスクライアント」を開催します。参加申し込みはこちらからどうぞ。

    企業や教育組織などにおいて使われることが多いディレクトリサービスにActive Directoryがあります。ディレクトリサービスの構築と運用,およびストレージとの関連した管理業務などはインフラ管理業務として代表的なもののひとつです。

    第30回目となるFreeBSD勉強会では講師に佐藤広生先生をお招きして,FreeBSDを活用して構築・運用するActive Directoryとディスクレスクライアントについてお話いただきます。

    開催日時2014年7月18日(金)19:00~21:30(18:30開場)
    場所KDDIウェブコミュニケーションズ会議室 / 東京都千代田区麹町三丁目6番地 住友不動産麹町ビル3号館
    参加申込http://atnd.org/events/51196

    発表のあとはその場で簡単な懇親会を開きます。軽いつまみとアルコール類は用意しますが,お好きなお酒の持ち込みも大歓迎です。

    コメント

    コメントの記入