Linux 上で VMware (w/any-any-update104) を使っているのであるが, Linux 2.6.18-git1 以降だと vmnet.o の compile でこける.
include/linux/skbuff.h で [NET]: Replace CHECKSUM_HW by CHECKSUM_PARTIAL/CHECKSUM_COMPLETE という変更があったことに起因するらしい.
vmnet.tar 中の bridge.c と userif.c に関して CHECKSUM_HW となっている箇所を CHECKSUM_PARTIAL に置換すれば OK ぽい.
NFS 上で排他ロックできないー,とかもがいていたら, statd が動いていなかった.
こういう時,10.0.0.200 を NFS server とすると,
lockd: cannot monitor 10.0.0.200 lockd: failed to monitor 10.0.0.200
みたいなエラーが出る(dmesg). [myn:2004111600] も同様の原因だったのかも.
あと,排他ロックのテストは以下ぐらいで.
% ruby -e 'f=open(".lock","w"); f.flock(File::LOCK_EX)'
ロックに失敗したら例外を吐きます.
firefox で general.useragent.extra.firefox を default のものから Netscape/7.2 に 変更 していたのであるが, この状態だと,Gmail で クイック コンタクト (Quick Contact) が表示されないらしい.
ずっと,なんで クイック コンタクト が消えたのか悩んでいたのであるが, うーん,なんというか.
% /usr/sbin/ypbind --version ypbind (ypbind-mt) 1.20.1
なのであるが,
[man ypbind 抜粋] This ypbind version listens for DBUS messages from NetworkManager. If no NetworkManager is running at startup, ypbind will behave as usual and assumes there is a working network connection. If NetworkManager is running on the system, ypbind will only search and providde NIS informations, if NetworkManager tells that a network connection is available. If NetworkManager establishes a connection, ypbind will reread all configuration files, registers at the local portmapper and try to search NIS servers. If NetworkManager drops a connection, ypbind will unregister from portmapper.
ということで,dbus-daemon が動いていないと bind してくれないみたい.
[/etc/yp.conf] ypserver 10.0.0.3
とかしているのであるが,strace によると 10.0.0.3 に access が行かない.
ということで,
以下のようにして ypbind が dbus を使わないようにする
[/etc/default/nis] YPBINDARGS=-no-dbus
のどちらかで対処する必要があるみたい.
nis (3.17-2) で直った模様 (#388333).
cvs2svn は CVSROOT をまるごと SVN に入れることを想定している(たぶん). かつ SVN の ROOT から trunk,branches,tags という directory を掘って trunk の下に各 module を入れていく(default では).
ということで,今回は CVS の module 1つだけを SVN に移行したかったので, 若干ややこしいことになった.
svn リポジトリの作成.
% SVNROOT=/home/myn/svnroot % svnadmin create $SVNROOT % chmod 700 $SVNROOT
cvs2svn による dump.
% DUMPFILE=/home/myn/tmp/cvs2svn_dump % CVSROOT0=/home/myn/cvsroot % cvs2svn --trunk-only --trunk="meganecco" --dump-only --dumpfile=$DUMPFILE $CVSROOT0/meganecco
cvs2svn は $CVSROOT0/meganecco という感じで CVSROOT 以下の module を full path で指定すると,module 名を認識してくれない.そこで, --trunk-only --trunk="meganecco" とすることで trunk のかわりに "meganecco" を掘らせて,その下につっこむように細工している.
svnadmin による load.
% svn mkdir file://$SVNROOT/trunk % cat $DUMPFILE | svnadmin load --parent-dir trunk $SVNROOT
trunk,branches,tags という directory を掘って trunk の下に各 module を入れていくという しきたり(?)に従い,trunk の下に load するようにしている.
で,いきなり一気に rev 4359 まで行きました. 結構時間もかかった感じ(dump に数分,load に10数分ぐらい).
include/linux/fs.h の struct super_operations で
- int (*statfs) (struct super_block *, struct kstatfs *); + int (*statfs) (struct dentry *, struct kstatfs *);
という変更があり,また,同 file の get_sb_nodev に関しても,
-struct super_block *get_sb_nodev(struct file_system_type *fs_type,
+ int (*fill_super)(struct super_block *, void *, int),
+ struct vfsmount *mnt);
+extern int get_sb_nodev(struct file_system_type *fs_type,
int flags, void *data,
- int (*fill_super)(struct super_block *, void *, int));
+ int (*fill_super)(struct super_block *, void *, int),
+ struct vfsmount *mnt);
という変更があるので,これに対応する必要がある.以下のような patch で 対応できる.
.
--- shfs-0.35/shfs/Linux-2.6/inode.c 2006-09-03 21:45:45.000000000 +0900
+++ shfs-0.35-new/shfs/Linux-2.6/inode.c 2006-09-03 21:47:53.000000000 +0900
@@ -343,9 +343,9 @@
static struct super_block *
shfs_get_sb(struct file_system_type *fs_type,
- int flags, const char *dev_name, void *data)
+ int flags, const char *dev_name, void *data, struct vfsmount *mnt)
{
- return get_sb_nodev(fs_type, flags, data, shfs_read_super);
+ return get_sb_nodev(fs_type, flags, data, shfs_read_super, mnt);
}
static struct file_system_type sh_fs_type = {
--- shfs-0.35/shfs/Linux-2.6/proc.c 2004-06-01 22:16:19.000000000 +0900
+++ shfs-0.35-new/shfs/Linux-2.6/proc.c 2006-09-03 21:48:59.000000000 +0900
@@ -571,9 +571,9 @@
}
int
-shfs_statfs(struct super_block *sb, struct kstatfs *attr)
+shfs_statfs(struct dentry *dentry, struct kstatfs *attr)
{
- struct shfs_sb_info *info = info_from_sb(sb);
+ struct shfs_sb_info *info = info_from_dentry(dentry);
DEBUG("\n");
return info->fops.statfs(info, attr);
--- shfs-0.35/shfs/Linux-2.6/shfs_fs.h 2006-09-03 21:45:45.000000000 +0900
+++ shfs-0.35-new/shfs/Linux-2.6/shfs_fs.h 2006-09-03 20:53:29.000000000 +0900
@@ -100,7 +100,7 @@
void set_garbage(struct shfs_sb_info *info, int write, int count);
int get_name(struct dentry *d, char *name);
int shfs_notify_change(struct dentry *dentry, struct iattr *attr);
-int shfs_statfs(struct super_block *sb, struct kstatfs *attr);
+int shfs_statfs(struct dentry *dentry, struct kstatfs *attr);
/* shfs/inode.c */
void shfs_set_inode_attr(struct inode *inode, struct shfs_fattr *fattr);
一応 <URL:http://myn.meganecco.org/files/shfs-0.35-6-linux-2.6.18-rc1> にも置いておきます.あとは Debian の場合(かつ shfs-0.35-6 の場合)は,
% apt-get source shfs-source % cd shfs-0.35/debian/patches % wget http://myn.meganecco.org/files/shfs-0.35-6-linux-2.6.18-rc1 % echo shfs-0.35-6-linux-2.6.18-rc1 >> 00list % cd ../../ % fakeroot make -f debian/rules binary % sudo dpkg -i ../shfs-source_0.35-6_all.deb % sudo module-assistant build shfs % sudo dpkg -i /usr/src/shfs-module-2.6.18-rcX-XXXX_0.35-6+1.0_i386.deb
ぐらいで shfs.ko を仕込んで,あとは,
% shfsmount myn@example.com:/home/myn ~/mny
とかで mount.ちなみに,
% fakeroot make -f debian/rules binary
の際に dpatch が必要なので,必要であれば,
% sudo apt-get install dpatch
とか.
Last-modified: Sat Jun 16 12:00:14 +0900 2007