Minimum Ubuntu (ミニマムUbuntu:レスキュー機能を持ち、限界までサイズを絞ったUbuntu Linuxの派生)

Last-modified: 2012-10-29 (月) 23:36:56

(2012-7-14)Hi.Yamamorという方がMinimum Ubuntuの12.04版を作成されています。
http://www.geocities.jp/bay3897/linux/min-ubuntu.html


(2011-5-8)まだUbuntu 11.04をベースとした作成については確認していません。対応もまだ未定です。ただしUbuntu 10.04をベースに作成したMinimum Ubuntuで問題なく最新の11.04をメンテナンスできます。
(2010-10-30)Ver.0.9.013はUbuntu 10.10に対応していません。

初出 2009-01-18
最終更新 2012-10-29
Minimum Ubuntuのバイナリをダウンロードできるようにされたサイトがあります。WinMac氏のサイトです。
レスキュー用LinuxベースライブCDのメモ Vol.2

(2012-10-29)Ubuntu 10.04 LTSのアップデートに対応したUbuntu 10.04 LTS専用バージョン:0.9.014をリリースしました。
(2010-5-18)ちょっと更新しました(0.9.013)。(2010-05-16)こちらのユーティリティを含んだバージョン(0.9.011)をリリースしました。(2010-05-04)Ubuntu 10.04に対応した新バージョンをリリースしました。9.10系にも対応しています。10.04系を親環境として使うとやっぱ起動が激速です。(2009-12-02)ようやくUbuntu 9.10に対応した新バージョンをリリースしました。わりと大きく変更しましたが、それほど時間の要する変更をおこなったわけではありません。Ubnutu 9.10はブートの仕組みが大きく変わったんですが、うちのノートだとsyslinuxのブートプロンプトから12秒でログインプロンプトが出ます。9.04ベースより少しは早くなったのかもしれません。(Minimum Ubuntuは大きなinitramfs方式なので小さい割にはブートはあまり早くありません。)
Minimum Ubuntuの特徴はカーネルとinitramfsだけでOSが動くことです。カーネル2.6でinitramfs形式に変更されてからこういったことを実現しているのはMinimum Ubuntuだけではないでしょうか。この特徴によって事実上あらゆるブート環境で使用が可能となっています。

 

minimum-ubuntu_1_s.png
主にバックアップ・レスキュー用途を想定しています。その為grubはgrub1(grub-legacy,grub 0.97)とgrub2の両方をインストールしてあります。
こちらのページにはgrub2,grub1のレスキュー法などが書いてあります。

 

私自身は主にPXEブートで様々なユーティリティ用途(パーティションの編集, MBMのインストール, grub1,grub2のセットアップ, PBRの操作)、CDブートで仮想環境のメンテナンス・OSのレストア・Minimum Ubuntuの開発等に使用しています。リカバリDVDのOSとしても非常に適していますのでそのような用途での利用もお薦めします。

 

僅か28Mバイト余りの極少サイズながら、ネットワーク越しのバックアップ・レストア,各種ブートローダのインストール・修復、パーティションテーブルの修復、NTFS読み書き等々、ローレベルな機能を充実させたレスキュー用Linuxです。

 

バイナリ配布ではなくて、作成キットの配布です。このキットはUbuntu系(Ubuntu,Xubuntu,KubuntuやUbnutu Server等)がインストールされた環境上で使用できます。Ubuntu系Linuxが親環境となるわけです。2010-05-04現在、最新のVer.0.9.010が対応している親環境は「何とかbuntu 9.10と10.04」です。Ver.0.9.007が対応している環境は「何とかbuntu 8.04,8.10,9.04」です。

 

ページ最下部にユーザの方の投稿がありますが、今のところ親環境としては32bitPCしか対象にしていないのでamd64環境を親環境として使用すると細々としたエラーが発生すると思います。対応は簡単だろうと思いますが今日(2010-5-4)時点ではまだやる気になっていないです。

 

USBメモリやSDカード等のストレージが安くなった今、こんなに小容量なLinuxが特に必要なわけではありません。しかし自作OneCDルータとかを時々作成したりする私としては日頃使っているLinuxがいかに無駄な部分が多いかを感じていましたので、以前からぎりぎりの大きさのLinuxを作りたいと思っていました。

 
  • 技術的な特徴
    • ブート時にchrootしません。イニシャルラムディスク(本当はラムディスクではなくてinitramfs)上でinitデーモンを動かします。通常のルートとして見ると極小サイズですが、イニシャルラムディスクとしては超リッチだと見ることができます。
      • キット同様に特殊なイニシャルラムディスクを作成する場合に、キット中のcopy-execfile-to-newroot.shはかなり役に立つと思います。是非利用(流用)してみて下さい。
    • chrootしないのでvmlinuzとinitrd.img、ブートする前の段階ではこの2ファイルだけが構成ファイルです。しかもブート時にカーネルコマンドライン引数は全く必要ありません。構成が簡単なのでUSBメモリやCD、CF・SDカード等、フロッピー(は容量不足)以外のあらゆるブートデバイスから気楽にブートさせることができます。最もお薦めのブート形式はPXEブート(ネットワークブート)です。1台に設定するだけでネットワーク内の全(PXEブート可能な)PCで共用できるからです。通常のLinuxのようにイニシャルラムディスクを解凍後にnfsなどでルートデバイスを再マウントする必要がないので、ネットワーク母艦にはdhcpサーバとtftpサーバ(それも僅かな容量)を用意するだけで済みます。既存のdhcpサーバを稼動させているPCを少変更してネットワーク母艦とすることをお薦めします。私のところのネットワークではこれを実践しておりまして、有線LANが付いているPCは全て(友達が今日持ってきたPCとか新しく買ったPCも含めて)、起動時に[F12]キー等を押してネットワークブートするだけでレスキュー作業をおこなえます。
      (↓ LAN内の全てのPCで電源ON直後に[F12]キーを押すとネットワークブートメニューが出ます。)
      minimum-ubuntu_2_s.jpg
    • もちろんこのサイズですからXは含んでいません。そしてjfbtermも日本語入力システムも含まれていません。しかしネットワークが使え、sshdが動いているので、リモート接続すれば日本語名のファイルも問題なく扱えます。
       
 

ダウンロード filecreate-minimumubuntu-kit-0.9.014.tar.gz  2012-10-29更新 最新にアップデート済みのUbuntu 10.04 LTS専用

 

ダウンロード filecreate-minimumubuntu-kit-0.9.013.tar.gz  2010-05-18更新 Ubuntu 9.10系専用以降専用、もちろんUbuntu 10.04に対応

 

ダウンロード filecreate-minimumubuntu-kit-0.9.007.tar.gz  2009-07-19更新 Ubuntu 9.04系以前専用
0.9.004からは機能に関する更新をおこなっています。
0.9.006からはUbuntu 8.04,8.10,9.04系に対応しています。従来は8.10系のみ。

 

(2009-4-6記)しばらく更新していないのですが、予定では006ではscreen,testdisk,eject各コマンドを追加するつもりです。007では何処かにバージョン表示を追加したいです。またルート以外のデバイスを起動時に自動マウントするオプションを追加する希望ももっています。(2009-5-5追記)棒線で消した部分は006で対応しました。(2009-5-30)追加のToDo:service,clearコマンド追加。(2009-6-2)注意:親環境に/etc/rcS.d/S11hwclock.shが存在しない場合、timezoneが正しく設定されません。(2009-7-19追記)棒線で消した部分は007で対応しました。serviceコマンドは既に含んでいました。(2010-2-17記)現在のToDo:mkfs.ext4.shの追加,binutilsのインストール追加(server対応)

 

キットの使い方

作成手順

カーネルは親環境で現在使われているカーネルをそのまま使います。
イニシャルラムディスクは現在使われているものを元にして大幅に改変したものを作成します。
まず解凍したディレクトリに入り、

# ./create-minimumubuntu-initrd_contents.sh

足りないパッケージがあれば途中でそのインストールが親環境に対しておこなわれます。ただしもしICH?RのRAID0デバイスを扱う予定がある場合は事前に手動でdmraidを親環境にインストールしておいて下さい。
同じ場所のworkディレクトリ内に新たなイニシャルラムディスクの中身が作成されます。
0.9.008以降ではこの処理中に一部(今のところmountallだけ)コマンドのリコンパイル作業が追加された為、少し処理時間が延びました。
"Done"が画面に出力されれば問題なく作成されたことになります。
ここで場合によっては適宜独自のカスタマイズをおこなって下さい。
※0.9.005まで含んでいたufwは削除しました。代わりにiptablesを直接叩いています。

 

次に

# ./create-minimumubuntu-usbboot-img.sh

で、28Mバイトの大きさのusb-minimumubuntu.imgというファイル名のイメージファイルが作成されます。
これを

# dd if=usb-minimumubuntu.img of=/dev/sdb

みたいな作業でUSBメモリに書き込めばUSBブート版の完成です。この作業は最も、そして圧倒的に危険な作業なので十分注意しておこなって下さい。(作業前にfdisk -l /dev/sd?を何度もおこなって十二分に対象のディスクを間違っていないか確認した方がいいでしょう)
ここで作成されるイメージファイルはパーティションテーブルを使わない形式です。この形式が嫌いな人は適宜自分で変更して下さい。またこのイメージでブートすれば、そのOS上でパーティションテーブルを使用する方法へと変更できます。

デフォルトユーザ名、パスワード

rootとowner(id=1000)がいます。初期パスワードはどちらもpasswordです。
しかし常にrootで作業することを前提とした内容になっていますのでownerは使用しないで下さい。デフォルトではリモートからいきなりrootでログインできるようになっています。
一度もブートさせない間にパスワードを変更したい場合は、親環境で同じユーザのパスワードを変更してから/etc/shadowの該当行をcontentfiles.tarの中のshadowにコピペして下さい。
カーネル引数にsingleを指定した場合はログインプロンプトは出ません。

 

↑(2010-2-10追記)パスワード入力は個人的なレスキュー用途で使用する場合には不要だと思います。しかしsshdがデフォルトで起動しているので、建前上?、このようにしているわけです。それに自分以外の人がいる場所で使用するなら、建前でなく本当にパスワード保護はほぼ必須な筈です。

ページ冒頭にリンクを載せているページからダウンロードできるWinMac氏が作成されたバイナリは、氏作成のパスワードなしでログインできるように修正するパッチがあてられています。

WinMac氏作成の修正パッチのダウンロード(適用対象は0.9.013 Ubuntu 9.10系専用)http://blog-imgs-32-origin.fc2.com/w/i/n/winmac/minimum-ubuntu-diff-0_9_013-10_04.txt(2010-7-17リンク掲載)(適用対象は0.9.008と0.9.009 Ubuntu 9.10系専用)
http://blog-imgs-37-origin.fc2.com/w/i/n/winmac/minimum-ubuntu-diff.txt

ネットワークの設定

デフォルトではdhcpになっています。/etc/networkにinterfaces.fixedaddress.sampleという固定アドレス用のサンプルファイルが置いてありますので、固定アドレスにしたい場合はそれを参考にして/etc/network/interfacesを編集してから(vi(vim.tiny)が入っています)、ifdown,ifupして下さい。

 

デフォルトではファイヤーウォール(iptables)が稼動しています。外からはsshととpingとDHCPだけ許可しています。レスキュー用Linuxであれば必ずしもファイヤーウォールを稼動させる必要はないと思いますが、sshサーバが稼動していることと、私としては簡易ルータに転用したい希望もある為にデフォルトで稼動させてあるわけです。

キーボードの設定

キーボードの設定機能は省いてあります。親環境の設定が受け継がれます。

必ず/mntにマウントして下さい(grub2の制限回避措置)

以下の説明はは0.9.008以降のみ該当
標準状態でルート直下に、
boot -> /mnt/boot
とのシンボリックリンクを作成してあります。
grub2のレスキュー・復旧にはこの知識が必須です。そこの内容を理解して頂けたなら、こちらもすぐに理解頂けると思います。つまり、マウントポイントとして/mntを使うことを前提としたダミーディレクトリを標準状態で既に作成してあるわけです。
このようなことが可能なのは/bootを自OSの起動に使用しないMinimum Ubuntuならではです。
grub2の復旧やレスキューや再セットアップをおこなうパーティションは必ず/mntにマウントして下さい
(2010-5-18追記)/bootが別パーティションになっている環境のgrub2を再セットアップ(修復やレストア)する場合は、標準の/bootシンボリックリンクを削除して代わりに、
boot -> /mnt
とのシンボリックリンクを作成して下さい。これは現在のgrub-setupの実装上の問題を回避する方法です。これでgrub-setupは正常におこなえるのですが、このような環境用のgrub.cfgファイルをgrub-mkconfigコマンドで作成することは今のところできません。対応しようと思えば対応できますが、私自身はraidはraid1しか使わないので、/bootが別パーティションとなっている環境のレスキューに対応しようとする動機が強くならないんです。
ただし現在のファイルを少しだけ、直に修正すれば、使いのものになるgrub.cfgファイルを生成できます。
bootが別パーティションになっている環境用のgrub.cfgファイルを生成する為にはgrub-mkconfigコマンド内の適切な場所に、以下の例のように、4つの変数とその値を書き込んでやればいいんです。
GRUB_DEVICE=/dev/sda5
GRUB_DEVICE_UUID=afba4670-d34d-430c-88a8-e710347b484a
GRUB_DEVICE_BOOT=/dev/sda6
GRUB_DEVICE_BOOT_UUID=41088a17-a69d-4cb2-8206-426cfe65af91
これだけ設定してやれば、ちゃんと使えるgrub.cfgファイルが生成できます。ここまでで気づいたと思いますが、/bootが別パーティションの場合、grub.cfgファイルを生成する為には/用と/boot用、それぞれのデバイス名とUUIDを指定する必要があるわけです。これが現在起動中のOSなら/と/bootがどれなのかは一目瞭然ですが、レスキュー時だとユーザが指定する必要があるわけです。今のところ、その為のインターフェースを追加する予定はないです。

grub1(grub 0.97)について

以下の説明はは0.9.008以降のみ該当
Ubuntu 9.10以降に含まれないgrub1(grub 0.97)は、Ubuntu 9.04のミラーサーバからdebパッケージをダウンロードしてインストールしています。
grub2のファイル群と名前が重ならないようにファイル名やディレクトリ名やヘルパースクリプト中の"grub"を"grub1"に変更しています。
例)
(grub1の)grub → grub1 ←使用頻度が多いと思うので特に注意して下さい。
(grub1の)grub-install → grub1-install

mountallコマンドについて

以下の説明はは0.9.008以降のみ該当
リコンパイル時に使用されるpatches/mountall-1.0_enable-rootfsroot.patchと適用される個所直後のソースをご覧頂くと一目瞭然ですが、残念ながら修正前は絶対にrootfsをルートファイルシステムに出来ない仕様となっています。
何でまたわざわざNULLにするんだよ?とボヤきたくなります。

/mntへの自動マウント機能

以下の説明はは0.9.008以降のみ該当
カーネル引数に/mnt=${device}=${type}形式で記述しておくとfstabに
${device} /mnt ${type} defaults 0 0形式で追記されて、
ブート時に自動でマウントされるようになりました。
リカバリDVDのOSとして使う場合等で便利です。
例)
/mnt=/dev/scd0=udf ←リカバリDVDのOSとして使用する場合
/mnt=/dev/sda1=ext3

その他の注意

デフォルトでは/直下にブート初期に使用したinitが残ったままになっています。
起動中は再実行してはいけないものなので、本来ならばrc.localとかで削除するかmoveすべきなのですが、本キットはLinuxの勉強に役立てて欲しいという意図もあるので、目立つ場所(/直下)にわざと残してあります。

 

このキットで作成したイニシャルラムディスクでbootする為にはもちろんそれなりのメモリ容量が必要となります。現状では起動するために最低80Mバイトのメモリが必要です。通常のrootファイルシステムとして使用した場合にはもちろんずっと必要メモリ容量は少なくて済みます。

 

親環境の最新カーネルを決めうちで使用しますので、親環境のカーネルを更新した際は必ず再起動してからキットを使用して下さい。

 

Minimum Ubuntuは通常のLinuxではつきもののカーネル引数でのルートデバイスの指定(root=??)が完全に不要です。しかし逆に、ルートデバイスの指定がなされた際にそれを無視するようには作っていませんので、ルートデバイスの指定は絶対にしないで下さい。同様にカーネル引数にsplashは決して付けないで下さい。

いろいろなブート方法

キットの中にmenu.lst.sampleというファイル名でgrub用の設定ファイルの雛型があります。
何しろブート時にカーネルコマンドライン引数が必要ないので、気軽にisolinuxやgrubを使ってCDからブートさせたり、PXEブートさせて下さい。コンパクトなのでリカバリDVDのOSとしても適しています。

 

通常カーネルコマンドライン引数は必要ありませんが、もちろん引数にsingle※を与えればシングルユーザモードで起動します。もちろん通常のランレベルでの使用時にtelinit 1すればシングルユーザモードに移行します。
※キット付属のsyslinux.cfgを使用した場合はbootプロンプトで「vmlinuz single」もしくは「linux single」と入力することになります。

ネットワークブート(PXEブート)の設定

Linuxをネットワーク母艦とするならpxelinux.0を使うべきでしょう。pxelinux.0はできる限り最新のものを使用して下さい。場合によりけりではありますが、pxelinux.0に関しては”ディストリビューション付属のものを最新に更新するだけでいい”と思わない方がいいと思います。最新はここからダウンロードできます。
設定の一例を簡単に示します。

  • atftpd,syslinux,dhcp3-serverパッケージをインストールする
  • /tftpboot/common/にvmlinuz,initrd.imgを置く。(commonディレクトリは作成して下さい。またtftpのデフォルト・ルートディレクトリが/var/lib/tftpbootなどの場合もあります。適宜読み替えたり、inetd.confをカスタマイズする等の作業を加えて下さい。)
  • /lib/syslinux/pxelinux.0を/tftpboot/にコピーする
  • dhcpd.confに「filename "pxelinux.0"」を記述する(1ネットワークの中,グローバルな場所,いずれでもいい)
  • /tftpboot/pxelinux.cfg/にdefaultというファイル名で以下の内容のファイルを設置する
    SAY .
    SAY .
    SAY 1) Minimum Ubuntu
    SAY 2) memtest86
    SAY .
    SAY h) Boot from first Harddisk (0x80)
    SAY .
    SAY When no key is pressed for 10 sec, or when you hit Enter, "h" will be run...
default h
timeout 100
prompt 1
label h
localboot 0x80
label 1
	kernel common/vmlinuz
	append initrd=common/initrd.img quiet
label 2
	kernel common/memdisk
	append initrd=common/memtest.bin

上のような内容にしなくても、実際にはキット内のsyslinux.cfgをそのままdefaultというファイル名に変更するだけでも使用することが出来ます。
もっと体裁を良くしたければ、このページのようにvesamenu.c32を追加使用すればいいでしょう。メニュー画面の背景に画像を使う必要を感じなければvesamenu.c32ではなくmenu.c32を使うことをお薦めします。

通常のrootファイルシステムとしての使用法

本キットで作成したイニシャルラムディスク(の中身)をイニシャルラムディスクとしてではなく、通常のrootファイルシステムとして使用することもできます。その場合のイニシャルラムディスクは標準のイニシャルラムディスクを用います。ブート時の引数は普通のものを与えます。つまり”root=/dev/sda1 ro quiet”とかです。

この方法を用いるとメモリ容量が非常に小さなPCでも使用できます。この方法に関するTipsですが、ルータ用途等に使用している場合、リモートからシステムを一気に更新したい場合があると思いますが、この方法を用いる場合にはrootファイルシステム用のパーティションを二つ確保しておくことをお薦めします。具体的な数値を挙げますと、256MバイトのCFを使う場合、80Mバイトくらいのパーティション3つに分割し、第一パーテョションを/boot、第二、第三パーティションをルート用とするわけです。一つのルートパーテョションを使用中にもう一方をそっくり入れ替えることが出来ます。ブートローダの引数を変更して再起動することで新しいシステムが立ち上がります。

リカバリーDVDのOSとしての使用

Minimum Ubuntuはリカバリー・レストア用DVDのOSとしても最適です。超コンパクトなのでDVDの容量を最大限バックアップ用に利用できますし、オールオンメモリーで動作しますので稼動中にDVDの差し替えも可能です。デフォルトでリモート操作が可能なこともリカバリー・レストア作業の助けとなるでしょう。

 

どのようにしてリカバリーDVDのOSとして使用するのか、具体的に説明します。
例としてバックアップファイル等を以下のように配置します。

ワークdirectory/----DELLBACKUP/
                |
                |--dell-sda2-20090319.img.bz2
                |--fdisk-dell-20090319.txt
                |--md5sum-dell-sda2-20090319.txt
                |--isolinux/
                     |
                     |--vmlinuz
                     |--initrd.img

DELLBACKUP直下のバックアップファイル群の説明は省略します。
isolinux直下のvmlinuzとinitrd.imgはMinimum Ubuntuを構成する全ファイルです。

このように配置した状態で、ワークdirectory直下にcdし、

$ mk-recovery-dvd-iso.sh DELLBACKUP

とタイプするとDELLBACKUP.isoというisoイメージファイルが出来上がります。
これをこのように焼けばリカバリ・レストアDVDの出来上がりです。

圧縮しても1個のバックアップファイル・イメージファイルの大きさが4Gバイトを超えそうな時は分割バックアップしてもいいのですが、genisoimageコマンドの"-allow-limited-size"オプションを使用すれば互換性は犠牲になりますが、大きなサイズのファイルをDVDに分割せずに収めることができます。下のスクリプトはこのオプションを使用した例です。ここに書いたような手順を踏んで圧縮すると、相当にアプリケーションをインストールした十数ギガバイトのXPのパーティションも1枚の片面DVDにバックアップできたりします。

[mk-recovery-dvd-iso.sh]

#!/bin/sh -e
test $# -lt 1 && echo "$0 (backup directory)" && exit 1
cd "${1}/isolinux"
if ! (test -e isolinux.cfg) then
cat<<EOT>isolinux.cfg
DEFAULT vmlinuz
APPEND initrd=initrd.img /mnt=/dev/scd0=udf quiet
TIMEOUT 30
LABEL linux
KERNEL vmlinuz
APPEND initrd=initrd.img
EOT
fi
cp -pf /usr/lib/syslinux/isolinux.bin .
cd ../..
genisoimage -allow-limited-size -r -R \
-b isolinux/isolinux.bin \
-c isolinux/boot.cat \
-no-emul-boot \
-boot-load-size 4 \
-boot-info-table \
-V "${1}" \
-o "${1}.iso" "${1}"

スクリプト中で自動的に作成されるisolinux.cfgにはデフォルトのカーネル引数に/mnt=/dev/scd0=udfと記述されます(0.9.008以降のみ)。記述しておくと起動時にfstabに

/dev/scd0       /mnt            udf     defaults   0 0

と追記され、マウントがおこなわれます。 ※:/mntへの自動マウント機能
あと、カーネル引数にsingleを指定しておくとログインプロンプトが出なくなるので、リカバリDVDとして使うならそうした方がいいかもしれません。あと、DVD関係のスクリプト等がこちらにあります。

カストマイズ(およびその保存)

基本的にはスクリプトを読めばわかると思います。
それから以下のコマンドは完全に覚えておいた方がいいと思います。
イニシャルラムディスクの解凍

# gzip -dc ファイルパス | cpio -idmv

イニシャルラムディスクの再圧縮

# find . | cpio -H newc -o | gzip -9 > ファイルパス

以前のバージョンのUbuntuでの使用可否

試しにUbuntu 8.04.1でキットを使用してみました。
結論としては僅かな変更で使用できます。
修正点は以下のとおりです。

  • /sbin/dosfslabelはないので、それをコピーする個所を削除する
  • /lib/dhcp3-client/を追加する
  • /etc/{init.d,rcS.d}/*mountall-bootclean.shを削除する(元々8.10でも必要ない^)
  • /initのパッチ当てで、最後の行が失敗するので、手で修正した上で新たな.patchファイルを作っておく

0.9.006で8.04(系)にも対応しました。
0.9.008以降は9.10(系)以降専用です。

バグ

7台のPCで動かしてみましたが、1台だけ正しく動きませんでした。8年程前のIBM Netvistaです。ネットワークが使えなかったようです。そのPCが変わったハード構成であるのはわかっているので、それ以上全く調査はしていません。
(2009-02-27)最新版では問題ありません。

 

それから、キットでは親環境の設定ファイル類をかなりの数、そのままコピーしています。元々親環境であまりに大きくカスタマイズしている場合にはそれが原因で不具合が生じる可能性もあるでしょう。

その他

バージョンについて

最初のリリースバージョン: 0.9.001
これはあまり真剣に改良する気はないということを示すものです。
バックアップ関係の機能を充実させている筈なのにCD,DVD書き込み機能を付けていないことには自分でも仕様的に抜けを感じています。この機能を省いた理由は現在のgenisoimageコマンドがまだmkisofsコマンドの完全な代替となっていない為です。

ライセンスについて

わざわざ書くまでもないくらいです。
今までに公開してきたものと同じく実質PDSです。
Ubuntuのバイナリや著作権表記のあるスクリプトは一切変更していません。そのままコピーして利用しているだけです。

 

(2009-12-23追記)0.9.008以降はGPL2ソフトウェアのmountallを改変して利用していますので、その部分についてはGPL2となりました。

 

NTFSパーティションのPBR修復

※当サイト内にこの分野の専門ページがこれこれとあります。
修復法1に関してはパスの通った/直下にextract-backuped-pbr.shが置いてあります。
緑色に着色されているのですぐにわかると思います。

# extract-backuped-pbr.sh /dev/sda1

みたいな感じで実行します。
もちろん修復法2にも使用できます。

パーティションテーブルの修復

※当サイト内にこんな文章があります。
パスの通った/直下にguess-partition-table.shが置いてあります。
緑色に着色されているのですぐにわかると思います。

# guess-partition-table.sh  /dev/sda -HS=255/63 | tee guess-PT-dell.log

みたいな感じで実行します。
まずは引数なしで実行してみて下さい。
実際に実行した感じはこんな感じです。

# guess-partition-table.sh  /dev/sda -HS=255/63 | tee guess-PT-dell.log
Target Device: /dev/sda
Total Cylinders: 15017
H/S=255/63
Start-Cylinder 2	offset 0	NTFS Boot Sector
   Cylinder 610 is NTFS End Cylinder
Start-Cylinder 611	offset 0	FAT Boot Sector
Start-Cylinder 1221	offset 0	GRUB Boot Sector
Start-Cylinder 3182	offset 0
Start-Cylinder 3312	offset 0
Start-Cylinder 3312	offset 63	GRUB Boot Sector
Start-Cylinder 4253	offset 0
Start-Cylinder 4253	offset 63	GRUB Boot Sector
Start-Cylinder 5554	offset 0
Start-Cylinder 5554	offset 63	GRUB Boot Sector
Start-Cylinder 6295	offset 0
Start-Cylinder 6295	offset 63	GRUB Boot Sector
Start-Cylinder 6862	offset 0
Start-Cylinder 6862	offset 63	NTFS Boot Sector

で、同じディスクのfdisk -l の出力はこんな感じです。

# fdisk -l /dev/sda
Disk /dev/sda: 123.5 GB, 123522416640 bytes
255 heads, 63 sectors/track, 15017 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0xfc69fc69
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           2         610     4891792+   7  HPFS/NTFS
/dev/sda2             611        1219     4891792+   b  W95 FAT32
/dev/sda3            1221        3080    14940450   bf  Solaris
/dev/sda4            3182       15017    95072670    5  Extended
/dev/sda5            3182        3311     1044193+  82  Linux swap / Solaris
/dev/sda6            3312        4252     7558551   83  Linux
/dev/sda7            4253        5553    10450251   83  Linux
/dev/sda8            5554        6294     5952051   83  Linux
/dev/sda9            6295        6861     4554396   83  Linux
/dev/sda10           6862       15017    65513038+   7  HPFS/NTFS

この例の場合は正しいパーティションテーブルを修復できるだけの情報量が"ほぼ"得られていると言えるでしょう。ハードディスク内のパーティションがNTFSやFAT32などWindows系のファイルシステムだけで占められている場合や、この例のように2段階ブートに統一されている場合は、パーティションテーブルの修復が完全に成功する可能性が高いです。しかしLinuxディストリビューションのインストール時にあまりカスタマイズせずにインストールしてしまって1段階ブートでマルチブートしている場合にはパーティションテーブルの完全な修復は困難なものとなりがちです。

 

※上のguess-partition-table.shの出力でoffset 63(1トラックあたりのセクタ数分シリンダ先頭からズレた位置)にパーティションの先頭が見つかっているのは、そこが論理領域であることを示しています。

NTFS,FAT32,FAT16パーティションからの日本語名ファイル抽出、バックアップ

halを含めていないので自動でマウントはされません。適宜自分でマウントする必要があります。

NTFSのマウントでは特にオプションは必要ありません。

# mount /dev/sda1 /mnt

FAT,FAT32のマウントではこんな感じのオプションを付与して下さい。

# mount /dev/sda1 /mnt -o shortname=mixed,utf8

ext3,FAT32,FAT16のフォーマット

ext3のフォーマットは大量のオプションを付けるべきなのでスクリプトを用意してあります。
パスの通った/直下にmkfs.ext3.shが置いてあります。
緑色に着色されているのですぐにわかると思います。

# mkfs.ext3.sh /dev/sda1

みたいな感じで実行します。

 

FAT32,FAT16のフォーマットは
mkfs.vfatなんかでおこなって下さい。

NFSマウント

NFSv4には対応していません。他に特に言うべきことはないと思います。

# mount IPアドレス:/エクスポートポイント マウントポイント

パーティションの確保・変更

最近はLinuxでもGUIでこの種の作業をおこなう機会が多いのかもしれませんが、日頃からCUIのfdiskコマンドでおこなう癖をつけておいた方が何かトラブルがあった際に応用が効き易いと思います。
そしてパーティションを編集した後は必ず

# fdisk -l /dev/sda > /mnt/fdisk-vaio-20090118.txt

みたいな感じでテキストの記録を取っておきましょう。

CIFSマウント(Windowsファイルサーバ、Sambaサーバへの接続)

基本的な使い方は、

# mount //IPアドレス/共有名 マウントポイント -o user=hoge,iocharset=utf8

IPアドレスはipオプションで指定して↓こんな感じにすることもできます。

# mount //サーバ名/共有名 マウントポイント -o ip=IPアドレス,user=hoge,iocharset=utf8

管理共有(?$)もOKです。

各種ブートローダ(MBM,grub,syslinux)のインストール・設定変更

MBMのインストールは、
パスの通った/直下にinstall-mbmというシンボリックリンクが置いてあります。
水色に着色されているのですぐにわかると思います。

# install-mbm /dev/sda

みたいな感じで実行します。

 

grub2のセットアップはここを参照して下さい。 (0.9.008以降grub2を追加)

 

grub1のセットアップは、grub1コマンドを使って下さい (0.9.008以降はgrubをgrub1に改名してインストール)
新規にgrubディレクトリを構築する場合はcp -rp /usr/lib/grub1/i386-pc somewhere/grub すればいいでしょう。
詳細は他ページのgrubのインストールブート環境の復旧(grub再インストール時の注意点)を参照して下さい。

 

syslinuxのインストールについては特に説明はありません。

デフォルトMBRイメージのインストール

これはWindowsがMBRにインストールするものと機能的に互換なブートローダ(つまり画面に何も表示せず、ただアクティブなパーティションをブートするだけ)をインストールする作業です。
これをおこなえば、実質的にgrubやMBMををアンインストール出来るということになります。

# dd if=/usr/lib/syslinux/mbr.bin of=/dev/sda

みたいな感じで実行します。

NTシグニチャのクリア

NTシグニチャのクリアはNT系OSのハードディスクを引越ししたりマルチブートする際には必須となる知識です。
パスの通った/直下にclear-disk_identifier(ntsig).shが置いてあります。
緑色に着色されているのですぐにわかると思います。
後はこちらを参照して下さい。

 

ご要望、ご意見、質問を下のフォームにどうぞ
(でもここより、掲示板書き込みフォームのページに書いて頂いた方が気づき易いと思います。)

  • Server版9.04インストール直後に作業したら/usr/bin/stringsがないのでスクリプト止まりました。binutilsも取ってこないとだめかも……。 -- ippei? 2009-08-16 (日) 19:51:04
  • すみません。今始めて読みました。今日リリースした最新版にbinutilsがインストールされているかを確認する行を追加すれば良かったと今さらながら思います。 -- disklessfun? 2009-12-02 (水) 02:02:03
  • amd64環境だとamd64版no -- kabbalah? 2010-04-30 (金) 13:07:50
  • (↑入力ミス失礼)amd64環境だとamd64版のmountallを作ってしまって、その後のdpkg -xで失敗します。 -- kabbalah? 2010-04-30 (金) 13:09:36