diff -Naur systemd-213.orig/src/core/main.c systemd-213/src/core/main.c
--- systemd-213.orig/src/core/main.c	2014-05-23 22:56:20.869576813 +0000
+++ systemd-213/src/core/main.c	2014-08-28 02:29:52.676645795 +0000
@@ -1170,18 +1170,6 @@
                     "Please make sure to replace this file by a symlink to avoid incorrect or misleading mount(8) output.");
 }
 
-static void test_usr(void) {
-
-        /* Check that /usr is not a separate fs */
-
-        if (dir_is_empty("/usr") <= 0)
-                return;
-
-        log_warning("/usr appears to be on its own filesytem and is not already mounted. This is not a supported setup. "
-                    "Some things will probably break (sometimes even silently) in mysterious ways. "
-                    "Consult http://freedesktop.org/wiki/Software/systemd/separate-usr-is-broken for more information.");
-}
-
 static int initialize_join_controllers(void) {
         /* By default, mount "cpu" + "cpuacct" together, and "net_cls"
          * + "net_prio". We'd like to add "cpuset" to the mix, but
@@ -1568,7 +1556,6 @@
                 loopback_setup();
 
                 test_mtab();
-                test_usr();
         }
 
         if (arg_running_as == SYSTEMD_SYSTEM && arg_runtime_watchdog > 0)
diff -Naur systemd-213.orig/src/core/manager.c systemd-213/src/core/manager.c
--- systemd-213.orig/src/core/manager.c	2014-05-22 06:34:13.170753066 +0000
+++ systemd-213/src/core/manager.c	2014-08-28 02:29:52.676645795 +0000
@@ -501,8 +501,6 @@
          * here. We do that after deserialization, since they might
          * have gotten serialized across the reexec. */
 
-        m->taint_usr = dir_is_empty("/usr") > 0;
-
         *_m = m;
         return 0;
 
@@ -2211,15 +2209,6 @@
                         else
                                 m->n_failed_jobs += n;
 
-                } else if (startswith(l, "taint-usr=")) {
-                        int b;
-
-                        b = parse_boolean(l+10);
-                        if (b < 0)
-                                log_debug("Failed to parse taint /usr flag %s", l+10);
-                        else
-                                m->taint_usr = m->taint_usr || b;
-
                 } else if (startswith(l, "firmware-timestamp="))
                         dual_timestamp_deserialize(l+19, &m->firmware_timestamp);
                 else if (startswith(l, "loader-timestamp="))
diff -Naur systemd-213.orig/src/core/mount.c systemd-213/src/core/mount.c
--- systemd-213.orig/src/core/mount.c	2014-03-24 04:07:12.207923998 +0000
+++ systemd-213/src/core/mount.c	2014-08-28 02:29:52.676645795 +0000
@@ -353,8 +353,7 @@
 static bool should_umount(Mount *m) {
         MountParameters *p;
 
-        if (path_equal(m->where, "/") ||
-            path_equal(m->where, "/usr"))
+        if (path_equal(m->where, "/"))
                 return false;
 
         p = get_mount_parameters(m);
diff -Naur systemd-213.orig/src/core/umount.c systemd-213/src/core/umount.c
--- systemd-213.orig/src/core/umount.c	2014-03-19 01:01:16.441761218 +0000
+++ systemd-213/src/core/umount.c	2014-08-28 02:29:52.676645795 +0000
@@ -386,7 +386,7 @@
                          * them.
                          *
                          * Mount points can be stacked. If a mount
-                         * point is stacked below / or /usr, we
+                         * point is stacked below /, we
                          * cannot umount or remount it directly,
                          * since there is no way to refer to the
                          * underlying mount. There's nothing we can do
@@ -400,14 +400,10 @@
                         mount(NULL, m->path, NULL, MS_REMOUNT|MS_RDONLY, NULL);
                 }
 
-                /* Skip / and /usr since we cannot unmount that
-                 * anyway, since we are running from it. They have
+                /* Skip / since we cannot unmount that
+                 * anyway, since we are running from it. It has 
                  * already been remounted ro. */
-                if (path_equal(m->path, "/")
-#ifndef HAVE_SPLIT_USR
-                    || path_equal(m->path, "/usr")
-#endif
-                )
+                if (path_equal(m->path, "/"))
                         continue;
 
                 /* Trying to umount. We don't force here since we rely
diff -Naur systemd-213.orig/src/fstab-generator/fstab-generator.c systemd-213/src/fstab-generator/fstab-generator.c
--- systemd-213.orig/src/fstab-generator/fstab-generator.c	2014-03-11 22:59:57.843898632 +0000
+++ systemd-213/src/fstab-generator/fstab-generator.c	2014-08-28 02:30:26.936645699 +0000
@@ -151,14 +151,6 @@
                 fstype_is_network(me->mnt_type);
 }
 
-static bool mount_in_initrd(struct mntent *me) {
-        assert(me);
-
-        return
-                hasmntopt(me, "x-initrd.mount") ||
-                streq(me->mnt_dir, "/usr");
-}
-
 static int add_mount(
                 const char *what,
                 const char *where,
@@ -340,7 +332,7 @@
                 _cleanup_free_ char *where = NULL, *what = NULL;
                 int k;
 
-                if (initrd && !mount_in_initrd(me))
+                if (initrd)
                         continue;
 
                 what = fstab_node_to_udev_node(me->mnt_fsname);
@@ -375,8 +367,6 @@
 
                         if (initrd)
                                 post = SPECIAL_INITRD_FS_TARGET;
-                        else if (mount_in_initrd(me))
-                                post = SPECIAL_INITRD_ROOT_FS_TARGET;
                         else if (mount_is_network(me))
                                 post = SPECIAL_REMOTE_FS_TARGET;
                         else
diff -Naur systemd-213.orig/src/remount-fs/remount-fs.c systemd-213/src/remount-fs/remount-fs.c
--- systemd-213.orig/src/remount-fs/remount-fs.c	2014-01-28 10:08:51.099439497 +0000
+++ systemd-213/src/remount-fs/remount-fs.c	2014-08-28 02:29:52.676645795 +0000
@@ -77,10 +77,9 @@
                 int k;
                 char *s;
 
-                /* Remount the root fs, /usr and all API VFS */
+                /* Remount the root fs and all API VFS */
                 if (!mount_point_is_api(me->mnt_dir) &&
-                    !path_equal(me->mnt_dir, "/") &&
-                    !path_equal(me->mnt_dir, "/usr"))
+                    !path_equal(me->mnt_dir, "/"))
                         continue;
 
                 log_debug("Remounting %s", me->mnt_dir);
