diff -aur net-snmp-5.4.pre3/agent/mibgroup/host/hr_filesys.c net-snmp-5.4.pre3.dev/agent/mibgroup/host/hr_filesys.c
--- net-snmp-5.4.pre3/agent/mibgroup/host/hr_filesys.c	2006-08-06 05:01:01.000000000 +0500
+++ net-snmp-5.4.pre3.dev/agent/mibgroup/host/hr_filesys.c	2006-10-20 09:56:15.000000000 +0500
@@ -629,7 +629,10 @@
 #ifdef linux
     "devpts",
     "devfs",
+    "sysfs",
+    "usbfs",
     "usbdevfs",
+    "binfmt_misc",
     "tmpfs",
     "shm",
 #endif
diff -aur net-snmp-5.4.pre3/agent/mibgroup/host/hr_storage.c net-snmp-5.4.pre3.dev/agent/mibgroup/host/hr_storage.c
--- net-snmp-5.4.pre3/agent/mibgroup/host/hr_storage.c	2006-09-19 08:40:27.000000000 +0500
+++ net-snmp-5.4.pre3.dev/agent/mibgroup/host/hr_storage.c	2006-10-20 09:58:39.000000000 +0500
@@ -559,6 +559,8 @@
         if (store_idx > NETSNMP_MEM_TYPE_MAX)
             if (storageUseNFS && Check_HR_FileSys_NFS())
                 storage_type_id[storage_type_len - 1] = 10;     /* Network Disk */
+            else if (hasmntopt(HRFS_entry, "loop") != NULL)
+                storage_type_id[storage_type_len - 1] = 5;      /* Removable Disk */
             else
                 storage_type_id[storage_type_len - 1] = 4;      /* Assume fixed */
         else
diff -aur net-snmp-5.4.pre3/agent/mibgroup/host/hr_swinst.c net-snmp-5.4.pre3.dev/agent/mibgroup/host/hr_swinst.c
--- net-snmp-5.4.pre3/agent/mibgroup/host/hr_swinst.c	2006-09-15 05:48:39.000000000 +0500
+++ net-snmp-5.4.pre3.dev/agent/mibgroup/host/hr_swinst.c	2006-10-20 13:30:05.904846248 +0500
@@ -441,7 +441,19 @@
                 free(catg);
             }
 #else
+# ifdef HAVE_LIBRPM
+            char *rpm_groups;
+            if ( headerGetEntry(swi->swi_h, RPMTAG_GROUP, NULL, (void **) &rpm_groups, NULL) ) {
+                if ( strstr(rpm_groups, "System Environment") != NULL )
+                    long_return = 2;	/* operatingSystem */
+                else
+                    long_return = 4;	/* applcation */
+            } else {
+                long_return = 1;    /* unknown */
+            }
+# else
             long_return = 1;    /* unknown */
+# endif
 #endif
             ret = (u_char *) & long_return;
         }
@@ -450,9 +462,7 @@
         {
 #ifdef HAVE_LIBRPM
             int_32         *rpm_data;
-            headerGetEntry(swi->swi_h, RPMTAG_INSTALLTIME, NULL,
-                           (void **) &rpm_data, NULL);
-            if (rpm_data != NULL) {
+            if ( headerGetEntry(swi->swi_h, RPMTAG_INSTALLTIME, NULL, (void **) &rpm_data, NULL) ) {
                 time_t          installTime = *rpm_data;
                 ret = date_n_time(&installTime, var_len);
             } else {
