Currently if initramfs triggers regenration of initrd using
`mkinitrd -q /boot/initrd.img-$k $k` host_only will be 0 because we are
specifying both target & kernel.
So, control never eneters default_kernel_images function.
As a result after a kernel upgrade/downgrade generic initrd will be
created which is unnecessary.
So, moved the host_only flag setting logic outside of default_kernel_images
function.
Change-Id: I6af523598f796d46240a717d864cdf5c5298035b
Signed-off-by: Shreenidhi Shedi <sshedi@vmware.com>
Reviewed-on: http://photon-jenkins.eng.vmware.com:8082/12020
Reviewed-by: Ankit Jain <ankitja@vmware.com>
Tested-by: gerrit-photon <photon-checkins@vmware.com>
Reviewed-by: Alexey Makhalov <amakhalov@vmware.com>
... | ... |
@@ -4,7 +4,7 @@ |
4 | 4 |
Summary: dracut to create initramfs |
5 | 5 |
Name: dracut |
6 | 6 |
Version: 050 |
7 |
-Release: 5%{?dist} |
|
7 |
+Release: 6%{?dist} |
|
8 | 8 |
Group: System Environment/Base |
9 | 9 |
# The entire source code is GPLv2+ |
10 | 10 |
# except install/* which is LGPLv2+ |
... | ... |
@@ -156,6 +156,8 @@ rm -rf -- $RPM_BUILD_ROOT |
156 | 156 |
%dir /var/lib/dracut/overlay |
157 | 157 |
|
158 | 158 |
%changelog |
159 |
+* Tue Dec 15 2020 Shreenidhi Shedi <sshedi@vmware.com> 050-6 |
|
160 |
+- Adjust hostonly based on running environment |
|
159 | 161 |
* Tue Nov 03 2020 Srinidhi Rao <srinidhir@vmware.com> 050-5 |
160 | 162 |
- Remove fipsify support |
161 | 163 |
* Fri Oct 09 2020 Shreenidhi Shedi <sshedi@vmware.com> 050-4 |
... | ... |
@@ -1,20 +1,56 @@ |
1 |
-diff --color -Naurp -rupN dracut-050/mkinitrd-dracut.sh dracut-050-new/mkinitrd-dracut.sh |
|
2 |
-+++ dracut-050-new/mkinitrd-dracut.sh 2020-10-09 12:23:40.832349012 +0530 |
|
3 |
-@@ -61,7 +61,15 @@ default_kernel_images() { |
|
1 |
+From c06a5e795b9213b749ded74e5f9ced0e63ad93f4 Mon Sep 17 00:00:00 2001 |
|
2 |
+From: Shreenidhi Shedi <sshedi@vmware.com> |
|
3 |
+Date: Mon, 21 Dec 2020 12:41:51 +0530 |
|
4 |
+Subject: [PATCH] adjust host_only flag based on running environment |
|
5 |
+ |
|
6 |
+host_only decides the nature of initrd. |
|
7 |
+If initrd is getting generated in docker/chroot environemnt, it should |
|
8 |
+be generic. Otherwise cloud-images & ova will have a host specific |
|
9 |
+initrd which may fail to boot on a different host. |
|
10 |
+ |
|
11 |
+Signed-off-by: Shreenidhi Shedi <sshedi@vmware.com> |
|
12 |
+--- |
|
13 |
+ mkinitrd-dracut.sh | 20 +++++++++++++++++--- |
|
14 |
+ 1 file changed, 17 insertions(+), 3 deletions(-) |
|
15 |
+ |
|
16 |
+diff --git a/mkinitrd-dracut.sh b/mkinitrd-dracut.sh |
|
17 |
+index 01c989c3..6d502a09 100755 |
|
18 |
+--- a/mkinitrd-dracut.sh |
|
19 |
+@@ -60,9 +60,6 @@ default_kernel_images() { |
|
20 |
+ kernels="$kernels $kernel_version" |
|
4 | 21 |
targets="$targets $boot_dir/initrd.img-$kernel_version" |
5 | 22 |
done |
6 |
- |
|
23 |
+- |
|
7 | 24 |
- host_only=1 |
8 |
-+ # don't set hostonly flag if running in docker env |
|
9 |
-+ # if set initrd will be incomplete |
|
10 |
-+ # https://fedoraproject.org/wiki/Features/DracutHostOnly#Detailed_Description |
|
11 |
-+ # https://man7.org/linux/man-pages/man5/dracut.conf.5.html |
|
12 |
-+ if grep -qc docker /proc/self/cgroup; then |
|
13 |
-+ host_only=0 |
|
14 |
-+ else |
|
15 |
-+ host_only=1 |
|
16 |
-+ fi |
|
17 |
- force=1 |
|
25 |
+- force=1 |
|
18 | 26 |
} |
19 | 27 |
|
28 |
+ while (($# > 0)); do |
|
29 |
+@@ -148,6 +145,23 @@ done |
|
30 |
+ targets=( $targets ) |
|
31 |
+ [[ $kernels ]] && kernels=( $kernels ) |
|
32 |
+ |
|
33 |
++# don't set hostonly flag if running in docker env |
|
34 |
++# if set initrd will be incomplete |
|
35 |
++# https://fedoraproject.org/wiki/Features/DracutHostOnly#Detailed_Description |
|
36 |
++# https://man7.org/linux/man-pages/man5/dracut.conf.5.html |
|
37 |
++if grep -qc docker /proc/self/cgroup; then |
|
38 |
++ echo "--- Generating initrd under docker environment ---" |
|
39 |
++ host_only=0 |
|
40 |
++elif [ "$(stat -c %d:%i /)" != "$(stat -c %d:%i /proc/1/root/.)" ]; then |
|
41 |
++ # set host_only=0 if initrd is generated in chroot |
|
42 |
++ # otherwise cloud images generated in a Photon host will have bad initrd |
|
43 |
++ echo "--- Generating initrd under chroot environment ---" |
|
44 |
++ host_only=0 |
|
45 |
++else |
|
46 |
++ host_only=1 |
|
47 |
++fi |
|
48 |
++force=1 |
|
49 |
++ |
|
50 |
+ [[ $host_only == 1 ]] && dracut_args="${dracut_args} -H" |
|
51 |
+ [[ $force == 1 ]] && dracut_args="${dracut_args} -f" |
|
52 |
+ |
|
53 |
+-- |
|
54 |
+2.17.1 |
|
55 |
+ |
... | ... |
@@ -750,6 +750,7 @@ class BuildImage: |
750 | 750 |
self.srpm_path = constants.sourceRpmPath |
751 | 751 |
self.pkg_to_rpm_map_file = os.path.join(Build_Config.stagePath, "pkg_info.json") |
752 | 752 |
self.ph_docker_image = configdict["photon-build-param"]["photon-docker-image"] |
753 |
+ self.ova_cloud_images = ["ami", "gce", "azure", "ova_uefi", "ova"] |
|
753 | 754 |
|
754 | 755 |
def set_Iso_Parameters(self, imgName): |
755 | 756 |
self.generated_data_path = Build_Config.stagePath + "/common/data" |
... | ... |
@@ -829,7 +830,7 @@ class BuildImage: |
829 | 829 |
rpmBuildTarget.packages() |
830 | 830 |
if not check_prerequesite["ostree-repo"]: |
831 | 831 |
RpmBuildTarget.ostree_repo() |
832 |
- print("Building image " + self.img_name) |
|
832 |
+ print("Building " + self.img_name + " image") |
|
833 | 833 |
imagebuilder.createImage(self) |
834 | 834 |
|
835 | 835 |
@staticmethod |
... | ... |
@@ -865,8 +866,7 @@ class BuildImage: |
865 | 865 |
os.chdir(curDir) |
866 | 866 |
|
867 | 867 |
def all_images(self): |
868 |
- images = ["ami", "gce", "azure", "ova_uefi", "ova"] |
|
869 |
- for img in images: |
|
868 |
+ for img in self.ova_cloud_images: |
|
870 | 869 |
self.img_name = img |
871 | 870 |
self.build_image() |
872 | 871 |
|
... | ... |
@@ -1078,7 +1078,7 @@ def main(): |
1078 | 1078 |
if options.targetName in ["iso", "src-iso", "minimal-iso", "rt-iso"]: |
1079 | 1079 |
buildImage.set_Iso_Parameters(options.targetName) |
1080 | 1080 |
buildImage.build_iso() |
1081 |
- elif options.targetName in ["ami", "gce", "ova", "ova_uefi", "azure", "rpi", "ls1012afrwy"]: |
|
1081 |
+ elif options.targetName in buildImage.ova_cloud_images + ["rpi", "ls1012afrwy"]: |
|
1082 | 1082 |
buildImage.build_image() |
1083 | 1083 |
else: |
1084 | 1084 |
attr = getattr(buildImage, configdict["targetName"]) |
... | ... |
@@ -24,7 +24,7 @@ rm -f /etc/ssh/ssh_host_* |
24 | 24 |
sudo groupadd docker |
25 | 25 |
sudo groupadd sudo |
26 | 26 |
|
27 |
-rm /root/.ssh/authorized_keys |
|
27 |
+rm /root/.ssh/authorized_keys |
|
28 | 28 |
|
29 | 29 |
# ssh server config |
30 | 30 |
# Override old values |
... | ... |
@@ -66,14 +66,3 @@ sed -i 's/$photon_cmdline/init=\/lib\/systemd\/systemd loglevel=3 ro console=tty |
66 | 66 |
|
67 | 67 |
# Remove kernel symbols |
68 | 68 |
rm -f /boot/System.map* |
69 |
- |
|
70 |
-arch="$(uname -m)" |
|
71 |
- |
|
72 |
-if [[ "$arch" == "aarch64" ]]; then |
|
73 |
-kver="$(rpm -q --queryformat "%{VERSION}-%{RELEASE}" linux)" |
|
74 |
- |
|
75 |
-# Regenerate initramfs to reflect the new dracut config and also without the host-only flag |
|
76 |
-# TODO: improve mkinitrd to simplify the command line |
|
77 |
- |
|
78 |
-dracut_args='-N --force' mkinitrd "/boot/initrd.img-$kver" "$kver" |
|
79 |
-fi |
... | ... |
@@ -16,10 +16,3 @@ cat > /etc/modules-load.d/genet.conf << "EOF" |
16 | 16 |
mdio_bcm_unimac |
17 | 17 |
genet |
18 | 18 |
EOF |
19 |
- |
|
20 |
-kver="$(rpm -q --queryformat "%{VERSION}-%{RELEASE}" linux)" |
|
21 |
- |
|
22 |
-# Regenerate initramfs to reflect the new dracut config and also without the host-only flag |
|
23 |
-# TODO: improve mkinitrd to simplify the command line |
|
24 |
- |
|
25 |
-dracut_args='-N --force' mkinitrd "/boot/initrd.img-$kver" "$kver" |