coLinuxとは、Windowsのネイティブ環境でLinuxをエミュレータなしに同時に動かすことを目指したシステムで、現在betaバージョンがsourceforgeのcoLinuxサイトで公開されています。(*1)
別ハードを立てなくてもLinuxを動かせることと、実用に耐えるパフォーマンスが出ること、そして何よりフリーソフトであるので最近重宝しております。
(開発者様ありがとうございます_o_)
このcoLinuxで使用するディスクはrawモードも使用できますが、通常はディスクイメージのファイルを使用します。このファイルは固定長で最初に割り当てた大きさからの変更をしたい場合、少々工夫が必要になります。やってみて成功したので、簡単にまとめておきます。
(*1) coLinuxのインストールの仕方はERROR STORMさんのサイトや、coLinux導入メモ(元リンク消失につきarchive.orgを参照中)が詳しいので、必要な場合はそちらを参照してください。
resize2fsを使用したcoLinuxディスクイメージのリサイズ
coLinuxのディスクイメージとしてext2(ext3)を使用している場合、e2fsprogsにあるresize2fsにてサイズ変更が可能です。
さすがに動いている自分自身(=coLinux)で自分のディスクイメージのファイルサイズを書き換えることはできないので(^^; coLinuxではなく、Cygwin上にて上記のresize2fsを使用してディスクイメージをリサイズします。
Cygwin側にext2progsがなかったら、Cygwin Setupを使用してパッケージをインストールしておく必要があります。下記では、1.5G(1536M)に変更しています。サイズ指定には「K」「M」「G」が使えます。
resize2fsコマンドの詳細はmanを見てください。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
foo@bar ~ $ cd /cygdrive/c/coLinux foo@bar /cygdrive/c/coLinux $ /usr/sbin/resize2fs -p -f Debian-3.0r2.ext3-mit-backports.1gb 1536M resize2fs 1.35 (28-Feb-2004) Resizing the filesystem on Debian-3.0r2.ext3-mit-backports.1gb to 393216 (4k) blocks. Begin pass 1 (max = 4) Extending the inode table XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX The filesystem on Debian-3.0r2.ext3-mit-backports.1gb is now 393216 blocks long foo@bar /cygdrive/c/coLinux $ |
resize2fsコマンド実行時の注意点
コマンド実行時に一点注意をしておかないといけないのは、イメージファイルのある /cygdrive/c/coLinux ディレクトリに移って、カレントディレクトリにイメージファイルがある状態でresize2fsを実行しないとエラーが出ます。
coLinuxイメージファイルはWindowsのCドライブ上(私の場合)にあるので、Cygwinからは /cygdrive/c/coLinux 以下に見えます。
× /usr/sbin/resize2fs -p -f /cygdrive/c/coLinux/Debian-3.0r2.ext3-mit-backports.1gb 2G
○ cd /cygdrive/c/coLinux
/usr/sbin/resize2fs -p -f Debian-3.0r2.ext3-mit-backports.1gb 2G
resize2fsでのファイル指定では、このcygdriveを使った絶対パス指定をすると、イメージファイルがうまく認識されないようです。このcygdriveを使った絶対パス指定でコマンドを実行すると、
1 2 3 4 5 6 7 |
foo@bar /cygdrive/c/coLinux $ /usr/sbin/resize2fs -p -f /cygdrive/c/coLinux/Debian-3.0r2.ext3-mit-backports.1gb 1536M resize2fs 1.35 (28-Feb-2004) /usr/sbin/resize2fs: Bad file descriptor while trying to determine filesystem size foo@bar /cygdrive/c/coLinux $ |
と怒られてしまいます。(^^;;