2010年10月22日金曜日

Mercurialでパッチの管理

分散バージョン管理システムのMercurialでパッチの管理を行うときは、mq を使う。
使い方のメモ

拡張を登録する

~/.hgrc に拡張機能を登録する。

[extensios]
mq=

元のソースファイルを展開し、 mq を初期化する。
hg init
hg commit --addremove -m "initial commit"
hg qinit
編集する前にパッチの名前をつける
hg qnew -m "説明文" pathc_no_namae

編集後パッチを作成
hg qrefresh


パッチファイルがある場合は

hg qimport patch_file

ちなみに今回はカーネルにvserverとaufsのパッチを当てた。

hg qimport patch-2.6.35.4
hg qimport patch-2.6.35.2-vs2.3.0.36.31.diff
hg qimport aufs2-base.patch
hg qimport aufs2-kbuild.patch
hg qimport aufs2-standalone.patch

hg qnew aufs2-files
include/linux/Kbuild に

header-y = aufs_type.h

を追加。README にはコピーするように書いてあったが、コピーするのはaufs_type.hだけ。

aufs2-standalone/include/linux/aufs_type.h , aufs2-standalone/fs, aufs2-standalone/Documentation をコピー

リポジトリに追加

hg add .
パッチをリフレッシュ

hg qrefresh


.hg/patchesの中身
$ ls .hg/patches/ -1
aufs2-base.patch
aufs2-files
aufs2-kbuild.patch
aufs2-standalone.patch
patch-2.6.35.2-vs2.3.0.36.31.diff
patch-2.6.35.4
series
status


aufsについては、クローンを作って、READMEを読む。

git clone git://aufs.git.sourceforge.net/gitroot/aufs/aufs2-standalone.git

2010年10月2日土曜日

CDイメージを作ってそれをオンメモリで起動する方法

タイトルのとおり、Linuxのroot イメージを作ってそれをオンメモリにマウントして起動するためのアイディア。

-- USBなどの内容物 --

/カーネル
/ルートファイルシステム(initramfs)

-- ルートファイルシステムの内容 --

/init
/bin/busybox
/cdrom-image.iso

-- cdrom-image.iso に必要なもの --
/linuxrc

起動方法

1. syslinux とかでカーネルとルートファイルをロードして、ルートファイルの initが実行される。

2. init で busybox を使って CD イメージをマウントし、switch_root で CD イメージ中の linuxrc を動かす。

3. CD イメージ中のlinuxrc で proc や sys をマウントする。

4. 最後に /sbin/init を実行する。