aboutsummaryrefslogtreecommitdiffstats
path: root/main/mkinitfs
diff options
context:
space:
mode:
Diffstat (limited to 'main/mkinitfs')
-rw-r--r--main/mkinitfs/0001-add-zpool-import-capability.patch121
-rw-r--r--main/mkinitfs/APKBUILD12
2 files changed, 129 insertions, 4 deletions
diff --git a/main/mkinitfs/0001-add-zpool-import-capability.patch b/main/mkinitfs/0001-add-zpool-import-capability.patch
new file mode 100644
index 0000000000..af280cd832
--- /dev/null
+++ b/main/mkinitfs/0001-add-zpool-import-capability.patch
@@ -0,0 +1,121 @@
+From be20737c8c6ca8b4ba94302f6b6c9725bc98565d Mon Sep 17 00:00:00 2001
+From: Mark Riedesel <mark@klowner.com>
+Date: Sat, 17 Sep 2016 10:46:03 -0500
+Subject: [PATCH] add zpool import capability
+
+---
+ features.d/zfs.files | 2 ++
+ features.d/zfs.modules | 7 +++++++
+ initramfs-init.in | 5 +++++
+ nlplug-findfs.c | 17 +++++++++++++++--
+ 4 files changed, 29 insertions(+), 2 deletions(-)
+ create mode 100644 features.d/zfs.files
+ create mode 100644 features.d/zfs.modules
+
+diff --git a/features.d/zfs.files b/features.d/zfs.files
+new file mode 100644
+index 0000000..c821e15
+--- /dev/null
++++ b/features.d/zfs.files
+@@ -0,0 +1,2 @@
++/usr/sbin/zfs
++/usr/sbin/zpool
+diff --git a/features.d/zfs.modules b/features.d/zfs.modules
+new file mode 100644
+index 0000000..be5225a
+--- /dev/null
++++ b/features.d/zfs.modules
+@@ -0,0 +1,7 @@
++extra/avl
++extra/nvpair
++extra/spl
++extra/unicode
++extra/zcommon
++extra/zfs
++extra/zpios
+diff --git a/initramfs-init.in b/initramfs-init.in
+index 64b1b5b..24a25c9 100755
+--- a/initramfs-init.in
++++ b/initramfs-init.in
+@@ -363,6 +363,11 @@ if [ -n "$KOPT_nbd" ]; then
+ setup_nbd || echo "Failed to setup nbd device."
+ fi
+
++if [ "$KOPT_rootfstype" = "zfs" ]; then
++ # zpool reports /dev/zfs missing if it can't read /etc/mtab
++ ln -s /proc/mounts /etc/mtab
++fi
++
+ # check if root=... was set
+ if [ -n "$KOPT_root" ]; then
+ if [ "$SINGLEMODE" = "yes" ]; then
+diff --git a/nlplug-findfs.c b/nlplug-findfs.c
+index 7907389..7104d40 100644
+--- a/nlplug-findfs.c
++++ b/nlplug-findfs.c
+@@ -51,11 +51,12 @@
+
+ #define LVM_PATH "/sbin/lvm"
+ #define MDADM_PATH "/sbin/mdadm"
++#define ZPOOL_PATH "/usr/sbin/zpool"
+
+ static int dodebug;
+ static char *default_envp[2];
+ char *argv0;
+-static int use_mdadm, use_lvm;
++static int use_mdadm, use_lvm, use_zpool;
+
+ #if defined(DEBUG)
+ #include <stdarg.h>
+@@ -496,6 +497,15 @@ static void start_lvm2(char *devnode)
+ spawn_command(&spawnmgr, lvm2_argv, 0);
+ }
+
++static void start_zpool(char *uuid) {
++ char *zpool_argv[] = {
++ ZPOOL_PATH, "import", uuid,
++ NULL
++ };
++ if (use_zpool && uuid)
++ spawn_command(&spawnmgr, zpool_argv, 0);
++}
++
+ static int read_pass(char *pass, size_t pass_size)
+ {
+ struct termios old_flags, new_flags;
+@@ -913,6 +923,7 @@ static int searchdev(struct uevent *ev, const char *searchdev, int scanbootmedia
+ blkid_get_cache(&conf->blkid_cache, NULL);
+
+ type = blkid_get_tag_value(conf->blkid_cache, "TYPE", ev->devnode);
++ uuid = blkid_get_tag_value(conf->blkid_cache, "UUID", ev->devnode);
+
+ if (searchdev != NULL) {
+ if (strncmp("LABEL=", searchdev, 6) == 0) {
+@@ -920,7 +931,6 @@ static int searchdev(struct uevent *ev, const char *searchdev, int scanbootmedia
+ if (label && strcmp(label, searchdev+6) == 0)
+ rc = FOUND_DEVICE;
+ } else if (strncmp("UUID=", searchdev, 5) == 0) {
+- uuid = blkid_get_tag_value(conf->blkid_cache, "UUID", ev->devnode);
+ if (uuid && strcmp(uuid, searchdev+5) == 0)
+ rc = FOUND_DEVICE;
+ }
+@@ -934,6 +944,8 @@ static int searchdev(struct uevent *ev, const char *searchdev, int scanbootmedia
+ start_mdadm(ev->devnode);
+ } else if (strcmp("LVM2_member", type) == 0) {
+ start_lvm2(ev->devnode);
++ } else if (strcmp("zfs_member", type) == 0) {
++ start_zpool(uuid);
+ } else if (scanbootmedia) {
+ rc = scandev(conf, ev->devnode, type);
+ }
+@@ -1133,6 +1145,7 @@ int main(int argc, char *argv[])
+ conf.uevent_timeout = DEFAULT_EVENT_TIMEOUT;
+ use_lvm = access(LVM_PATH, X_OK) == 0;
+ use_mdadm = access(MDADM_PATH, X_OK) == 0;
++ use_zpool = access(ZPOOL_PATH, X_OK) == 0;
+
+ argv0 = strrchr(argv[0], '/');
+ if (argv0++ == NULL)
+--
+2.11.0
+
diff --git a/main/mkinitfs/APKBUILD b/main/mkinitfs/APKBUILD
index 4291a614d2..a5aa15a265 100644
--- a/main/mkinitfs/APKBUILD
+++ b/main/mkinitfs/APKBUILD
@@ -2,7 +2,7 @@
pkgname=mkinitfs
pkgver=3.0.7
_ver=${pkgver%_git*}
-pkgrel=1
+pkgrel=2
pkgdesc="Tool to generate initramfs images for Alpine"
url="http://git.alpinelinux.org/cgit/mkinitfs"
makedepends_build=""
@@ -13,6 +13,7 @@ install="$pkgname.pre-upgrade $pkgname.post-install $pkgname.post-upgrade"
triggers="$pkgname.trigger=/usr/share/kernel/*"
source="http://dev.alpinelinux.org/archive/$pkgname/$pkgname-$_ver.tar.xz
0001-ext3-functionality-is-provided-by-ext4-module.patch
+ 0001-add-zpool-import-capability.patch
"
arch="all"
license="GPL2"
@@ -29,8 +30,11 @@ package() {
}
md5sums="f0ce066554bff1e1a3056c51f2fe4610 mkinitfs-3.0.7.tar.xz
-79e61fce422c035296fdf00780f15fb3 0001-ext3-functionality-is-provided-by-ext4-module.patch"
+79e61fce422c035296fdf00780f15fb3 0001-ext3-functionality-is-provided-by-ext4-module.patch
+7099f430777d916852608ccae5dfd1c7 0001-add-zpool-import-capability.patch"
sha256sums="eb80666fa1f2bb4907f13f7f4c09ee8e1b0b1211aba240c9d2a5cc2a1756f1ba mkinitfs-3.0.7.tar.xz
-60ba082ac2a542e55de9e5a335f058fe83789ccb25bf8958772e229b93442a78 0001-ext3-functionality-is-provided-by-ext4-module.patch"
+60ba082ac2a542e55de9e5a335f058fe83789ccb25bf8958772e229b93442a78 0001-ext3-functionality-is-provided-by-ext4-module.patch
+e815e2ec1571e8f033c3ffaa429a8dbc7bac2fcc7d46e65ca382cc5142c32d56 0001-add-zpool-import-capability.patch"
sha512sums="a4080f4709500484904aee34f93007a813c6f2470c8ba9a0493245122291e4c7460580f9ca2f3712662d8f8caea306872d0c79fa94f654300c4798a0332c19b2 mkinitfs-3.0.7.tar.xz
-815e961b6508c8b6843b8074fa752b6ff7404c1ad0bb2e9ff03211d9c7d7546c7f274fb323934ae455216feb291b05e49f1c5878bc85480757d5b501577151c6 0001-ext3-functionality-is-provided-by-ext4-module.patch"
+815e961b6508c8b6843b8074fa752b6ff7404c1ad0bb2e9ff03211d9c7d7546c7f274fb323934ae455216feb291b05e49f1c5878bc85480757d5b501577151c6 0001-ext3-functionality-is-provided-by-ext4-module.patch
+cd395eed6bab80421891a0630c0969ce02bdbc725e3d1d24b0472888f3d847856a9e32f7b20ae41f3527a8c94696a61370396dc32c2dca15b3c837618a4310c9 0001-add-zpool-import-capability.patch"