diff --git a/service/lib/agama/storage/finisher.rb b/service/lib/agama/storage/finisher.rb index 8d63950556..3a37feb5f9 100644 --- a/service/lib/agama/storage/finisher.rb +++ b/service/lib/agama/storage/finisher.rb @@ -130,7 +130,10 @@ class CopyFilesStep < Step FILES = [ { dir: "/etc/udev/rules.d", file: "40-*" }, { dir: "/etc/udev/rules.d", file: "41-*" }, - { dir: "/etc/udev/rules.d", file: "70-persistent-net.rules" } + { dir: "/etc/udev/rules.d", file: "70-persistent-net.rules" }, + # Copy /etc/nvme/host* to keep NVMe working after installation, bsc#1238038 + { dir: "/etc/nvme", file: "hostnqn" }, + { dir: "/etc/nvme", file: "hostid" } ].freeze def label @@ -142,9 +145,12 @@ def run? end def run - target = File.join(Yast::Installation.destdir, UDEV_RULES_DIR) - FileUtils.mkdir_p(target) - FileUtils.cp(glob_files, target) + glob_files.each do |file| + target = File.dirname(file).sub(root_dir, dest_dir) + + FileUtils.mkdir_p(target) + FileUtils.cp(file, target) + end end private @@ -153,6 +159,10 @@ def root_dir ROOT_PATH end + def dest_dir + Yast::Installation.destdir + end + def glob_files Dir.glob(FILES.map { |f| File.join(root_dir, f[:dir], f[:file]) }) end diff --git a/service/package/rubygem-agama-yast.changes b/service/package/rubygem-agama-yast.changes index 300c3db69a..51a2ff56f8 100644 --- a/service/package/rubygem-agama-yast.changes +++ b/service/package/rubygem-agama-yast.changes @@ -1,3 +1,10 @@ +------------------------------------------------------------------- +Fri Apr 11 09:07:22 UTC 2025 - Michal Filka + +- bsc#1238038 + - copy NVMe configuration files from inst-sys to target + (gh#agama-project/agama#2257). + ------------------------------------------------------------------- Thu Apr 10 20:26:29 UTC 2025 - Josef Reidinger diff --git a/service/test/agama/storage/finisher_test.rb b/service/test/agama/storage/finisher_test.rb index dcf14db305..e3232fe6f8 100644 --- a/service/test/agama/storage/finisher_test.rb +++ b/service/test/agama/storage/finisher_test.rb @@ -94,6 +94,11 @@ "41-qeth-0.0.0800.rules", "70-persistent-net.rules" ] end + let(:nvme_files) do + [ + "hostnqn", "hostid" + ] + end it "copies some specific udev rules to the target system when exist" do subject.run @@ -101,6 +106,13 @@ expect(File.exist?(File.join(destdir, "/etc/udev/rules.d/#{rule}"))).to eql(true) end end + + it "copies some specific NVMe configuration files to the target system" do + subject.run + nvme_files.each do |file| + expect(File.exist?(File.join(destdir, "/etc/nvme/#{file}"))).to eql(true) + end + end end end diff --git a/service/test/fixtures/root_dir/etc/nvme/hostid b/service/test/fixtures/root_dir/etc/nvme/hostid new file mode 100644 index 0000000000..e69de29bb2 diff --git a/service/test/fixtures/root_dir/etc/nvme/hostnqn b/service/test/fixtures/root_dir/etc/nvme/hostnqn new file mode 100644 index 0000000000..e69de29bb2