diff options
author | A. Wilcox <AWilcox@Wilcox-Tech.com> | 2020-09-20 14:24:03 -0500 |
---|---|---|
committer | A. Wilcox <AWilcox@Wilcox-Tech.com> | 2020-09-20 14:24:03 -0500 |
commit | 3786b3b76afe5c68c7309f97150d5a8c279119c5 (patch) | |
tree | 73d9aaaa17d1062fa91b573570ba6f23ae999d58 /image | |
parent | 4260dc64812d2b2c7eb608461b7d7dc197700622 (diff) | |
download | horizon-3786b3b76afe5c68c7309f97150d5a8c279119c5.tar.gz horizon-3786b3b76afe5c68c7309f97150d5a8c279119c5.tar.bz2 horizon-3786b3b76afe5c68c7309f97150d5a8c279119c5.tar.xz horizon-3786b3b76afe5c68c7309f97150d5a8c279119c5.zip |
ISO backend: Call dracut in chroot
Diffstat (limited to 'image')
-rw-r--r-- | image/backends/iso.cc | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/image/backends/iso.cc b/image/backends/iso.cc index 89d1e84..c70f004 100644 --- a/image/backends/iso.cc +++ b/image/backends/iso.cc @@ -367,15 +367,20 @@ public: std::ifstream kverstream(kverpath); kverstream >> kver; - /* dracut with -r can't autodetect udev directory without udev.pc */ - ::setenv("udevdir", "/lib/udev", 0); - if(run_command("dracut", {"--kver", kver, "-r", target+"/", "-N", + const std::string irdname = "initrd-" + my_arch; + if(run_command("chroot", {target, "dracut", "--kver", kver, "-N", "--force", "-a", "dmsquash-live", - cdpath + "/initrd-" + my_arch}) != 0) { + "/boot/" + irdname}) != 0) { output_error("CD backend", "dracut failed to create initramfs"); return COMMAND_ERROR; } + fs::rename(target + "/boot/" + irdname, cdpath + "/" + irdname, ec); + if(ec) { + output_error("CD backend", "cannot install initrd to CD root"); + return FS_ERROR; + } + /* REQ: ISO.24 */ std::string postscript; if(opts.find("post-script") != opts.end() && |