2009年5月7日星期四

Ubuntu 9.04 ext4文件系统下启用quota的方法

904开始支持ext4了,但是我装好以后发现quota找不到我的挂载点了,而我确定所有的设置没问题。于是开始怀疑是ext4的问题,Google一下发现很久以前这个bug就出了,但是到现在还没fix,找到一个邮件说要给quota打个patch,因为旧版的quota支持的是ext4dev,也就是开发板的ext4.
那么在官方没有升级之前,我就先山寨一个用咯:
要打的补丁是

Index: quota-tools/mntopt.h
===================================================================
--- quota-tools.orig/mntopt.h 2007-08-22 04:26:55.000000000 -0700
+++ quota-tools/mntopt.h 2008-10-29 16:37:57.000000000 -0700
@@ -6,7 +6,8 @@
/* filesystem type */
#define MNTTYPE_EXT2 "ext2" /* 2nd Extended file system */
#define MNTTYPE_EXT3 "ext3" /* ext2 + journaling */
-#define MNTTYPE_EXT4 "ext4dev" /* ext4 filesystem */
+#define MNTTYPE_EXT4 "ext4" /* ext4 filesystem */
+#define MNTTYPE_EXT4DEV "ext4dev"/* ext4dev filesystem */
#define MNTTYPE_MINIX "minix" /* MINIX file system */
#define MNTTYPE_UFS "ufs" /* UNIX file system */
#define MNTTYPE_UDF "udf" /* OSTA UDF file system */
Index: quota-tools/quotacheck.c
===================================================================
--- quota-tools.orig/quotacheck.c 2008-10-29 16:38:50.000000000 -0700
+++ quota-tools/quotacheck.c 2008-10-29 16:39:09.000000000 -0700
@@ -1064,6 +1064,7 @@ static void check_all(void)
!hasmntopt(mnt, MNTOPT_GRPJQUOTA) && !warned &&
(!strcmp(mnt->mnt_type, MNTTYPE_EXT3) ||
!strcmp(mnt->mnt_type, MNTTYPE_EXT4) ||
+ !strcmp(mnt->mnt_type, MNTTYPE_EXT4DEV) ||
!strcmp(mnt->mnt_type, MNTTYPE_REISER))) {
struct utsname stats;

Index: quota-tools/quotasys.c
===================================================================
--- quota-tools.orig/quotasys.c 2008-10-29 16:39:45.000000000 -0700
+++ quota-tools/quotasys.c 2008-10-29 16:40:01.000000000 -0700
@@ -63,6 +63,7 @@ static int correct_fstype(char *type)
if (!strcmp(type, MNTTYPE_EXT2) ||
!strcmp(type, MNTTYPE_EXT3) ||
!strcmp(type, MNTTYPE_EXT4) ||
+ !strcmp(type, MNTTYPE_EXT4DEV) ||
!strcmp(type, MNTTYPE_JFS) ||
!strcmp(type, MNTTYPE_MINIX) ||
!strcmp(type, MNTTYPE_UFS) ||


--

他给的patch的目录可能和你的不一样,每行前面有-的是要删除的,有+的是要添加的。然后去吧源代码拉下来先。

apt-get source quota

获取源代码以后按照上面给出的patch改源代码,其实就3处改动,手工改也可以。configure了以后不用make,直接用dpkg-buildpackage吧他打成deb包,这时可能提示缺少若干-dev包,装上就行了,之后用dpkg -i装上去就可以了,装之前推荐用apt-get remove quota吧原来的卸载掉。

1 条评论: