diff --git a/0001-KubeOS-modify-checks-in-generate.sh-and-change-modul.patch b/0001-KubeOS-modify-checks-in-generate.sh-and-change-modul.patch deleted file mode 100644 index 3210e0d0827529b2b1f0d8a165d979929949cb92..0000000000000000000000000000000000000000 --- a/0001-KubeOS-modify-checks-in-generate.sh-and-change-modul.patch +++ /dev/null @@ -1,264 +0,0 @@ -From 0ccbd9d7eba9d600746420d2dd363065f487be17 Mon Sep 17 00:00:00 2001 -From: liyuanr -Date: Sat, 30 Oct 2021 02:50:37 +0000 -Subject: [PATCH] KubeOS:modify checks in generate.sh and change module path - -The previous disk space check did not consider the case where -the disk capacity was TB. In addition,if a path containing -/mnt exists,the mount check consider that /mnt has been mounted. - -Add the processing when the disk capacity is TB during disk check, -modify mount check and changes module path to openeuler.org/KubeOS. - -Signed-off-by: liyuanr ---- - VERSION | 2 +- - cmd/agent/main.go | 6 ++-- - cmd/agent/server/server.go | 2 +- - cmd/operator/controllers/os_controller.go | 6 ++-- - cmd/operator/main.go | 8 +++--- - cmd/proxy/controllers/os_controller.go | 14 ++++----- - cmd/proxy/main.go | 12 ++++---- - go.mod | 2 +- - hack/releasenote.sh | 35 +++++++++++++++++++++++ - pkg/agentclient/connection.go | 2 +- - scripts/generate.sh | 16 ++++++----- - 11 files changed, 71 insertions(+), 34 deletions(-) - create mode 100755 hack/releasenote.sh - -diff --git a/VERSION b/VERSION -index 3eefcb9..7dea76e 100644 ---- a/VERSION -+++ b/VERSION -@@ -1 +1 @@ --1.0.0 -+1.0.1 -diff --git a/cmd/agent/main.go b/cmd/agent/main.go -index 8f9485a..aef9e47 100644 ---- a/cmd/agent/main.go -+++ b/cmd/agent/main.go -@@ -17,9 +17,9 @@ import ( - - "github.com/sirupsen/logrus" - "google.golang.org/grpc" -- pb "openeuler.org/saiyan/cmd/agent/api" -- "openeuler.org/saiyan/cmd/agent/server" -- "openeuler.org/saiyan/pkg/version" -+ pb "openeuler.org/KubeOS/cmd/agent/api" -+ "openeuler.org/KubeOS/cmd/agent/server" -+ "openeuler.org/KubeOS/pkg/version" - ) - - func main() { -diff --git a/cmd/agent/server/server.go b/cmd/agent/server/server.go -index ef8630b..711e0c8 100644 ---- a/cmd/agent/server/server.go -+++ b/cmd/agent/server/server.go -@@ -29,7 +29,7 @@ import ( - "time" - - "github.com/sirupsen/logrus" -- pb "openeuler.org/saiyan/cmd/agent/api" -+ pb "openeuler.org/KubeOS/cmd/agent/api" - ) - - const ( -diff --git a/cmd/operator/controllers/os_controller.go b/cmd/operator/controllers/os_controller.go -index 5c572fd..a040ef4 100644 ---- a/cmd/operator/controllers/os_controller.go -+++ b/cmd/operator/controllers/os_controller.go -@@ -25,9 +25,9 @@ import ( - ctrl "sigs.k8s.io/controller-runtime" - "sigs.k8s.io/controller-runtime/pkg/client" - -- upgradev1 "openeuler.org/saiyan/api/v1alpha1" -- "openeuler.org/saiyan/pkg/common" -- "openeuler.org/saiyan/pkg/values" -+ upgradev1 "openeuler.org/KubeOS/api/v1alpha1" -+ "openeuler.org/KubeOS/pkg/common" -+ "openeuler.org/KubeOS/pkg/values" - ) - - // OSReconciler reconciles an OS object -diff --git a/cmd/operator/main.go b/cmd/operator/main.go -index c8c0530..17b74e1 100644 ---- a/cmd/operator/main.go -+++ b/cmd/operator/main.go -@@ -21,10 +21,10 @@ import ( - _ "k8s.io/client-go/plugin/pkg/client/auth" - ctrl "sigs.k8s.io/controller-runtime" - -- upgradev1 "openeuler.org/saiyan/api/v1alpha1" -- "openeuler.org/saiyan/cmd/operator/controllers" -- "openeuler.org/saiyan/pkg/common" -- "openeuler.org/saiyan/pkg/version" -+ upgradev1 "openeuler.org/KubeOS/api/v1alpha1" -+ "openeuler.org/KubeOS/cmd/operator/controllers" -+ "openeuler.org/KubeOS/pkg/common" -+ "openeuler.org/KubeOS/pkg/version" - //+kubebuilder:scaffold:imports - ) - -diff --git a/cmd/proxy/controllers/os_controller.go b/cmd/proxy/controllers/os_controller.go -index 04aed8f..ab9a411 100644 ---- a/cmd/proxy/controllers/os_controller.go -+++ b/cmd/proxy/controllers/os_controller.go -@@ -26,10 +26,10 @@ import ( - "sigs.k8s.io/controller-runtime/pkg/client" - "sigs.k8s.io/controller-runtime/pkg/manager" - -- upgradev1 "openeuler.org/saiyan/api/v1alpha1" -- "openeuler.org/saiyan/pkg/agentclient" -- "openeuler.org/saiyan/pkg/common" -- "openeuler.org/saiyan/pkg/values" -+ upgradev1 "openeuler.org/KubeOS/api/v1alpha1" -+ "openeuler.org/KubeOS/pkg/agentclient" -+ "openeuler.org/KubeOS/pkg/common" -+ "openeuler.org/KubeOS/pkg/values" - ) - - // OSReconciler reconciles a OS object -@@ -137,9 +137,9 @@ func evictNode(drainer *drain.Helper, node *corev1.Node) error { - } - if err := drain.RunNodeDrain(drainer, node.Name); err != nil { - log.Error(err, "unable to drain node") -- if err := drain.RunCordonOrUncordon(drainer, node, false); err != nil { -- log.Error(err, "unable to uncordon node when an error occurs in draining node") -- return err -+ if terr := drain.RunCordonOrUncordon(drainer, node, false); terr != nil { -+ log.Error(terr, "unable to uncordon node when an error occurs in draining node") -+ return terr - } - return err - } -diff --git a/cmd/proxy/main.go b/cmd/proxy/main.go -index 921bd95..ce1f58d 100644 ---- a/cmd/proxy/main.go -+++ b/cmd/proxy/main.go -@@ -22,12 +22,12 @@ import ( - _ "k8s.io/client-go/plugin/pkg/client/auth" - ctrl "sigs.k8s.io/controller-runtime" - -- upgradev1 "openeuler.org/saiyan/api/v1alpha1" -- "openeuler.org/saiyan/cmd/agent/server" -- "openeuler.org/saiyan/cmd/proxy/controllers" -- "openeuler.org/saiyan/pkg/agentclient" -- "openeuler.org/saiyan/pkg/common" -- "openeuler.org/saiyan/pkg/version" -+ upgradev1 "openeuler.org/KubeOS/api/v1alpha1" -+ "openeuler.org/KubeOS/cmd/agent/server" -+ "openeuler.org/KubeOS/cmd/proxy/controllers" -+ "openeuler.org/KubeOS/pkg/agentclient" -+ "openeuler.org/KubeOS/pkg/common" -+ "openeuler.org/KubeOS/pkg/version" - //+kubebuilder:scaffold:imports - ) - -diff --git a/go.mod b/go.mod -index cdf8ff6..736e6bd 100644 ---- a/go.mod -+++ b/go.mod -@@ -1,4 +1,4 @@ --module openeuler.org/saiyan -+module openeuler.org/KubeOS - - go 1.15 - -diff --git a/hack/releasenote.sh b/hack/releasenote.sh -new file mode 100755 -index 0000000..71049a2 ---- /dev/null -+++ b/hack/releasenote.sh -@@ -0,0 +1,35 @@ -+#!/bin/bash -+####################################################################### -+##- @Copyright (C) Huawei Technologies., Ltd. 2021. All rights reserved. -+# - KubeOS licensed under the Mulan PSL v2. -+# - You can use this software according to the terms and conditions of the Mulan PSL v2. -+# - You may obtain a copy of Mulan PSL v2 at: -+# - http://license.coscl.org.cn/MulanPSL2 -+# - THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR -+# - IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR -+# - PURPOSE. -+# - See the Mulan PSL v2 for more details. -+####################################################################### -+ -+#!/bin/bash -+ -+function get_release_notes() -+{ -+ LAST_RELEASE=$(git describe --tags --abbrev=0) -+ # Prepare proposed delease notes -+ echo "$(date "+%Y-%m-%d") $USER release $1" -+ git log --first-parent --oneline $LAST_RELEASE.. | cut -d' ' -f 2- | sed 's/^/ - /' -+ echo "" -+ echo " dev stats:" -+ echo " -$(git diff --shortstat $LAST_RELEASE)" -+ echo -n " - contributors: " -+ git shortlog -ns --no-merges $LAST_RELEASE..HEAD | cut -d$'\t' -f 2 | sed -e ':a' -e 'N' -e '$!ba' -e 's/\n/, /g' -+ echo "" -+} -+ -+if [ $# -ne 1 ];then -+ echo "Usage:" -+ echo "./hack/releasenote.sh v1.0.0" -+ exit 0 -+fi -+get_release_notes $1 -diff --git a/pkg/agentclient/connection.go b/pkg/agentclient/connection.go -index 1f28ee4..7d16019 100644 ---- a/pkg/agentclient/connection.go -+++ b/pkg/agentclient/connection.go -@@ -21,7 +21,7 @@ import ( - "google.golang.org/grpc" - "google.golang.org/grpc/backoff" - -- pb "openeuler.org/saiyan/cmd/agent/api" -+ pb "openeuler.org/KubeOS/cmd/agent/api" - ) - - // Client defines the client stub for OS service -diff --git a/scripts/generate.sh b/scripts/generate.sh -index 7a57b05..1374894 100644 ---- a/scripts/generate.sh -+++ b/scripts/generate.sh -@@ -145,7 +145,7 @@ function check_path() { - exit 5 - fi - -- if mount 2>/dev/null | grep -q "${ISO_PATH}"; then -+ if mount 2>/dev/null | grep -w -q "${ISO_PATH}"; then - echo "$ISO_PATH has already been mounted." - exit 4 - fi -@@ -153,11 +153,13 @@ function check_path() { - - function check_disk_space() { - local disk_ava="$(df ${PWD} -h | awk 'NR==2{print}' | awk '{print $4}')" -- if echo "${disk_ava}" | grep -q G$; then -- disk_ava="$(echo ${disk_ava} | awk -F G '{print $1}' | awk -F . '{print $1}')" -- if [ "${disk_ava}" -lt 25 ]; then -- echo "The available disk space is not enough, at least 25GB." -- exit 6 -+ if echo "${disk_ava}" | grep -q [GT]$; then -+ if echo "${disk_ava}" | grep -q G$; then -+ disk_ava="$(echo ${disk_ava} | awk -F G '{print $1}' | awk -F . '{print $1}')" -+ if [ "${disk_ava}" -lt 25 ]; then -+ echo "The available disk space is not enough, at least 25GB." -+ exit 6 -+ fi - fi - else - echo "The available disk space is not enough, at least 25G." -@@ -293,7 +295,7 @@ fi - set +eE - for i in $1 $2 $3 - do -- echo "$i" | grep -v -E ${CHECK_REGEX} -+ echo "$i" | grep -v -E -q ${CHECK_REGEX} - filterParam=$(echo "$i" | grep -v -E ${CHECK_REGEX}) - if [[ "${filterParam}" != "$i" ]]; then - echo "error: params $i is invalid, please check it." --- -2.30.0 - diff --git a/0001-Write-a-tool-to-support-KubeOS-deployment-on-physica.patch b/0001-Write-a-tool-to-support-KubeOS-deployment-on-physica.patch new file mode 100644 index 0000000000000000000000000000000000000000..c321333cf4c0f7067d27b0e5c5e55f44e44e4f3d --- /dev/null +++ b/0001-Write-a-tool-to-support-KubeOS-deployment-on-physica.patch @@ -0,0 +1,479 @@ +From 236b8ddeb3bc7f35eb817769f117ecd68a59335c Mon Sep 17 00:00:00 2001 +From: stedylan <836671668@qq.com> +Date: Sun, 7 Aug 2022 01:47:14 +0800 +Subject: [PATCH] Write a tool to support KubeOS deployment on physical + machines. + +This tool uses dracut module to make partitions and formatting, set network infomation, get rootfs and set boot options in initramfs before switch to the real root. + +Signed-off-by: stedylan <836671668@qq.com> +--- + scripts/00bootup/Global.cfg | 12 ++ + scripts/00bootup/module-setup.sh | 28 +++ + scripts/00bootup/mount.sh | 332 +++++++++++++++++++++++++++++++ + scripts/create/imageCreate.sh | 4 +- + scripts/create/rootfsCreate.sh | 1 + + scripts/rpmlist | 10 +- + scripts/set_in_chroot.sh | 3 + + 7 files changed, 387 insertions(+), 3 deletions(-) + create mode 100644 scripts/00bootup/Global.cfg + create mode 100644 scripts/00bootup/module-setup.sh + create mode 100644 scripts/00bootup/mount.sh + +diff --git a/scripts/00bootup/Global.cfg b/scripts/00bootup/Global.cfg +new file mode 100644 +index 0000000..cad4e33 +--- /dev/null ++++ b/scripts/00bootup/Global.cfg +@@ -0,0 +1,12 @@ ++# rootfs file name ++rootfs_name=kubeos.tar ++ ++# select the target disk to install kubeOS ++disk=/dev/sda ++ ++# address where stores the rootfs on the http server ++server_ip=192.168.1.50 ++ ++local_ip=192.168.1.100 ++ ++route_ip=192.168.1.1 +\ No newline at end of file +diff --git a/scripts/00bootup/module-setup.sh b/scripts/00bootup/module-setup.sh +new file mode 100644 +index 0000000..5460b2b +--- /dev/null ++++ b/scripts/00bootup/module-setup.sh +@@ -0,0 +1,28 @@ ++#!/bin/bash ++ ++check() { ++ return 0 ++} ++ ++depends() { ++ echo systemd ++} ++ ++install() { ++ inst_multiple -o grub2-mkimage mkfs.ext4 mkfs.vfat lsblk tar cpio gunzip lspci parted dhclient ifconfig curl hwinfo head tee arch df awk route ++ inst_hook mount 00 "$moddir/mount.sh" ++ inst_simple "$moddir/mount.sh" "/mount.sh" ++ inst_simple "$moddir/Global.cfg" "/Global.cfg" ++} ++ ++installkernel() { ++ hostonly='' \ ++ instmods \ ++ =drivers/ata \ ++ =drivers/nvme \ ++ =drivers/scsi \ ++ =drivers/net \ ++ =fs/fat \ ++ =fs/nls ++} ++ +diff --git a/scripts/00bootup/mount.sh b/scripts/00bootup/mount.sh +new file mode 100644 +index 0000000..a04a364 +--- /dev/null ++++ b/scripts/00bootup/mount.sh +@@ -0,0 +1,332 @@ ++#!/bin/bash ++arch=$(arch) ++min_size=8 ++log=/install.log ++ ++source /Global.cfg ++ ++function CheckSpace() { ++ local disk_ava="$(parted -l | grep ${disk} | awk '{print $3}')" ++ if echo "${disk_ava}" | grep [GT]B$; then ++ if echo "${disk_ava}" | grep GB$; then ++ disk_ava="$(echo ${disk_ava} | awk -F G '{print $1}' | awk -F . '{print $1}')" ++ if [ "${disk_ava}" -lt ${min_size} ]; then ++ echo "The available disk space is not enough, at least ${min_size}GB." | tee -a ${log} ++ return 1 ++ fi ++ fi ++ else ++ echo "The available disk space is not enough, at least ${min_size}G." | tee -a ${log} ++ return 1 ++ fi ++ ++ return 0 ++} ++ ++function GetDisk() { ++ disks=$(hwinfo --disk --short | grep -vi "^disk" | awk '{print $1}') ++ if [ ! -z ${disks} ]; then ++ if [ ! -z ${disk} ] && echo "${disks[@]}" | grep -wq "${disk}" ; then ++ echo "${disk} exists, start partition" | tee -a ${log} ++ else ++ echo "disk not exist, choose default disk" | tee -a ${log} ++ disk=$(echo ${disks[0]}) ++ fi ++ else ++ echo "no disk found" | tee -a ${log} ++ return 1 ++ fi ++ ++ ++ CheckSpace ++ if [ $? -ne 0 ]; then ++ echo "no enough space on ${disk}" | tee -a ${log} ++ return 1 ++ fi ++ ++ return 0 ++} ++ ++function PartitionAndFormatting() { ++ echo "Partitioning and formatting disk $disk..." ++ # partition and format ++ parted ${disk} -s mklabel gpt >> ${log} 2>&1 ++ if [ $? -ne 0 ]; then ++ echo "partition failed" | tee -a ${log} ++ return 1 ++ fi ++ ++ parted ${disk} -s mkpart primary fat16 1M 100M >> ${log} 2>&1 ++ if [ $? -ne 0 ]; then ++ echo "partition failed" | tee -a ${log} ++ return 1 ++ fi ++ ++ parted ${disk} -s mkpart primary ext4 100M 2600M >> ${log} 2>&1 ++ if [ $? -ne 0 ]; then ++ echo "partition failed" | tee -a ${log} ++ return 1 ++ fi ++ ++ parted ${disk} -s mkpart primary ext4 2600M 5100M >> ${log} 2>&1 ++ if [ $? -ne 0 ]; then ++ echo "partition failed" | tee -a ${log} ++ return 1 ++ fi ++ ++ parted ${disk} -s mkpart primary ext4 5100M 100% >> ${log} 2>&1 ++ if [ $? -ne 0 ]; then ++ echo "partition failed" | tee -a ${log} ++ return 1 ++ fi ++ ++ parted ${disk} -s set 1 boot on >> ${log} 2>&1 ++ if [ $? -ne 0 ]; then ++ echo "partition failed" | tee -a ${log} ++ return 1 ++ fi ++ ++ mkfs.vfat -n "BOOT" ${disk}1 >> ${log} 2>&1 ++ if [ $? -ne 0 ]; then ++ echo "format failed" | tee -a ${log} ++ return 1 ++ fi ++ ++ mkfs.ext4 -L "ROOT-A" ${disk}2 >> ${log} 2>&1 ++ if [ $? -ne 0 ]; then ++ echo "format failed" | tee -a ${log} ++ return 1 ++ fi ++ ++ mkfs.ext4 -L "ROOT-B" ${disk}3 >> ${log} 2>&1 ++ if [ $? -ne 0 ]; then ++ echo "format failed" | tee -a ${log} ++ return 1 ++ fi ++ ++ mkfs.ext4 -L "PERSIST" ${disk}4 >> ${log} 2>&1 ++ if [ $? -ne 0 ]; then ++ echo "format failed" | tee -a ${log} ++ return 1 ++ fi ++ ++ return 0 ++} ++ ++function InitNetwork() { ++ echo "Initializing network..." ++ # 获取网卡信息,默认只有一个网卡 ++ net_name=`ifconfig -a | awk '{print $1}' | grep : | grep '^e' | awk -F: '{print $1}'` ++ # dhclient --timeout 60 >> ${log} 2>&1 ++ ++ ifconfig ${net_name} up ++ if [ $? -ne 0 ]; then ++ echo "load net card failed" | tee -a ${log} ++ return 1 ++ fi ++ sleep 3 ++ ++ ifconfig ${net_name} ${local_ip} netmask 255.255.255.0 >> ${log} 2>&1 ++ if [ $? -ne 0 ]; then ++ echo "ip set failed" | tee -a ${log} ++ return 1 ++ fi ++ sleep 3 ++ ++ route add default gw ${route_ip} >> ${log} 2>&1 ++ if [ $? -ne 0 ]; then ++ echo "add route failed" | tee -a ${log} ++ return 1 ++ fi ++ sleep 3 ++ ++ ++ ++ return 0 ++} ++ ++function MountRoot() { ++ echo "Mounting rootfs..." ++ # mount rootfs ++ mount ${disk}2 /sysroot >> ${log} 2>&1 ++ if [ $? -ne 0 ]; then ++ echo "mount rootfs failed" | tee -a ${log} ++ return 1 ++ fi ++ ++ return 0 ++} ++ ++function MountPersist() { ++ echo "Mounting persist" ++ mkdir /persist ++ mount ${disk}4 /persist >> ${log} 2>&1 ++ if [ $? -ne 0 ]; then ++ echo "mount persist failed" | tee -a ${log} ++ return 1 ++ fi ++ mkdir /persist/{var,etc,etcwork} ++ mkdir -p /persist/etc/KubeOS/certs ++ return 0 ++} ++ ++function MountBoot() { ++ echo "Mounting boot" ++ mkdir -p /sysroot/boot/efi ++ mount ${disk}1 /sysroot/boot/efi >> ${log} 2>&1 ++ if [ $? -ne 0 ]; then ++ echo "mount boot failed" | tee -a ${log} ++ return 1 ++ fi ++ return 0 ++} ++ ++function GetRootfs() { ++ echo "Downloading rootfs..." ++ ++ curl -o /persist/${rootfs_name} http://${server_ip}/${rootfs_name} ++ if [ ! -e "/persist/${rootfs_name}" ]; then ++ echo "download rootfs failed" | tee -a ${log} ++ return 1 ++ fi ++ ++ tar -xvf /persist/${rootfs_name} -C /sysroot ++ if [ $? -ne 0 ]; then ++ echo "decompose rootfs failed" | tee -a ${log} ++ return 1 ++ fi ++ ++ rm -rf /persist/${rootfs_name} ++ ++ return 0 ++} ++ ++function Inst_Grub2_x86() { ++ # copy the files that boot need ++ cp -r /sysroot/usr/lib/grub/x86_64-efi /sysroot/boot/efi/EFI/openEuler ++ eval "grub2-mkimage -d /sysroot/usr/lib/grub/x86_64-efi -O x86_64-efi --output=/sysroot/boot/efi/EFI/openEuler/grubx64.efi '--prefix=(,gpt1)/EFI/openEuler' fat part_gpt part_msdos linux" >> ${log} 2>&1 ++ if [ $? -ne 0 ]; then ++ echo "grub2-mkimage on x86 failed" | tee -a ${log} ++ return 1 ++ fi ++ ++ mkdir -p /sysroot/boot/efi/EFI/BOOT/ ++ cp -f /sysroot/boot/efi/EFI/openEuler/grubx64.efi /sysroot/boot/efi/EFI/BOOT/BOOTX64.EFI ++ ++ return 0 ++} ++ ++function Inst_Grub2_aarch64() { ++ cp -r /sysroot/usr/lib/grub/arm64-efi /sysroot/boot/efi/EFI/openEuler/ ++ eval "grub2-mkimage -d /sysroot/usr/lib/grub/arm64-efi -O arm64-efi --output=/sysroot/boot/efi/EFI/openEuler/grubaa64.efi '--prefix=(,gpt1)/EFI/openEuler' fat part_gpt part_msdos linux" >> ${log} 2>&1 ++ if [ $? -ne 0 ]; then ++ echo "grub2-mkimage on aarch64 failed" | tee -a ${log} ++ return 1 ++ fi ++ ++ mkdir -p /sysroot/boot/efi/EFI/BOOT/ ++ cp -f /sysroot/boot/efi/EFI/openEuler/grubaa64.efi /sysroot/boot/efi/EFI/BOOT/BOOTAA64.EFI ++ ++ return 0 ++} ++ ++function SetBoot() { ++ # mount boot ++ echo "Setting boot" ++ ++ if [ $arch == "x86_64" ]; then ++ Inst_Grub2_x86 ++ if [ $? -ne 0 ]; then ++ echo "install grub on x86 failed" | tee -a ${log} ++ return 1 ++ fi ++ fi ++ ++ if [ $arch == "aarch64" ]; then ++ Inst_Grub2_aarch64 ++ if [ $? -ne 0 ]; then ++ echo "install grub on aarch64 failed" | tee -a ${log} ++ return 1 ++ fi ++ fi ++ ++ return 0 ++} ++ ++function Bootup_Main() { ++ # get disk ++ echo "Checking disk info..." | tee -a ${log} ++ GetDisk ++ if [ $? -ne 0 ]; then ++ echo "Checking disk info failed" | tee -a ${log} ++ return 1 ++ fi ++ ++ # partition and format disk ++ echo "Partion and formatting..." | tee -a ${log} ++ PartitionAndFormatting ++ if [ $? -ne 0 ]; then ++ echo "Partition and formatting disk failed" | tee -a ${log} ++ return 1 ++ fi ++ ++ # init network ++ echo "Initializing network..." | tee -a ${log} ++ InitNetwork ++ if [ $? -ne 0 ]; then ++ echo "Initializing network failed" | tee -a ${log} ++ return 1 ++ fi ++ ++ # mount partitions ++ echo "Mounting root..." | tee -a ${log} ++ MountRoot ++ if [ $? -ne 0 ]; then ++ echo "Mounting root failed" | tee -a ${log} ++ return 1 ++ fi ++ ++ # mount persist ++ echo "Mounting persisst..." | tee -a ${log} ++ MountPersist ++ if [ $? -ne 0 ]; then ++ echo "Mounting persist failed" | tee -a ${log} ++ return 1 ++ fi ++ ++ # mount boot ++ echo "Mounting boot..." | tee -a ${log} ++ MountBoot ++ if [ $? -ne 0 ]; then ++ echo "Mounting boot failed" | tee -a ${log} ++ return 1 ++ fi ++ ++ # download rootfs ++ echo "Downloading rootfs..." | tee -a ${log} ++ GetRootfs ++ if [ $? -ne 0 ]; then ++ echo "Downloading rootfs failed" | tee -a ${log} ++ return 1 ++ fi ++ ++ # set boot ++ echo "Setting boot..." | tee -a ${log} ++ SetBoot ++ if [ $? -ne 0 ]; then ++ echo "Setting boot failed" | tee -a ${log} ++ return 1 ++ fi ++ ++ return 0 ++} ++ ++Bootup_Main ++ret=$? ++if [ ${ret} -eq 0 ]; then ++ echo "kubeOS install success! switch to root" | tee -a ${log} ++ cp ${log} /persist ++else ++ echo "kubeOS install failed, see install.log" | tee -a ${log} ++fi ++ +diff --git a/scripts/create/imageCreate.sh b/scripts/create/imageCreate.sh +index f8dafbe..95ebcde 100644 +--- a/scripts/create/imageCreate.sh ++++ b/scripts/create/imageCreate.sh +@@ -62,12 +62,12 @@ function create_pxe_img() { + case $opt in + "repo") + create_os_tar_from_repo "$@" +- tar -xvf os.tar ./boot/initramfs.img ++ tar -xvf os.tar ./initramfs.img + tar -xvf os.tar ./boot/vmlinuz + ;; + "docker") + create_os_tar_from_docker "$@" +- tar -xvf os.tar boot/initramfs.img ++ tar -xvf os.tar initramfs.img + tar -xvf os.tar boot/vmlinuz + ;; + esac +diff --git a/scripts/create/rootfsCreate.sh b/scripts/create/rootfsCreate.sh +index 8049f09..e5c53d5 100644 +--- a/scripts/create/rootfsCreate.sh ++++ b/scripts/create/rootfsCreate.sh +@@ -61,6 +61,7 @@ EOF + mv "${RPM_ROOT}"/boot/initramfs* "${RPM_ROOT}/boot/initramfs.img" + cp grub.cfg "${RPM_ROOT}"/boot/grub2 + cp grub.cfg "${RPM_ROOT}"/boot/efi/EFI/openEuler ++ cp -r ./00bootup ${RPM_ROOT}/usr/lib/dracut/modules.d/ + cp set_in_chroot.sh "${RPM_ROOT}" + ROOT_PWD="${PASSWD}" chroot "${RPM_ROOT}" bash /set_in_chroot.sh + rm "${RPM_ROOT}/set_in_chroot.sh" +diff --git a/scripts/rpmlist b/scripts/rpmlist +index 7a9adfa..077a164 100644 +--- a/scripts/rpmlist ++++ b/scripts/rpmlist +@@ -13,4 +13,12 @@ socat + conntrack-tools + ebtables + ethtool +-rsyslog +\ No newline at end of file ++rsyslog ++vi ++net-tools ++hwinfo ++dracut ++coreutils ++gawk ++parted ++dosfstools +\ No newline at end of file +diff --git a/scripts/set_in_chroot.sh b/scripts/set_in_chroot.sh +index bacef78..4b061df 100644 +--- a/scripts/set_in_chroot.sh ++++ b/scripts/set_in_chroot.sh +@@ -11,3 +11,6 @@ sed -i '/^root:/d' /etc/shadow_bak + echo "root:"${ROOT_PWD}${str:1} > /etc/shadow + cat /etc/shadow_bak >> /etc/shadow + rm -rf /etc/shadow_bak ++ ++dracut -f -v --add bootup /initramfs.img --kver `ls /lib/modules` ++rm -rf /usr/lib/dracut/modules.d/00bootup +\ No newline at end of file +-- +2.33.0.windows.2 + diff --git a/0002-KubeOS-fix-the-kbimg.sh-exception-and-pxe-installati.patch b/0002-KubeOS-fix-the-kbimg.sh-exception-and-pxe-installati.patch new file mode 100644 index 0000000000000000000000000000000000000000..dc36db07bcc5b2d211da7df2cde2706bab89af93 --- /dev/null +++ b/0002-KubeOS-fix-the-kbimg.sh-exception-and-pxe-installati.patch @@ -0,0 +1,341 @@ +From f64c9587a20cc44036b0f622105501ff142729d7 Mon Sep 17 00:00:00 2001 +From: liyuanr +Date: Tue, 23 Aug 2022 15:32:36 +0800 +Subject: [PATCH] KubeOS:fix the kbimg.sh exception and pxe installation + problem. + +Fixed the issue of abnormal usage printing of the kbimg.sh parameter, +no verification of the -b parameter, and environment clearance in +the concurrent scenario. +Fix the problem that disks and network adapters cannot be found +due to disk and network adapter verification during PXE installation. +Fix the problem that os-proxy does not transfer imagetype and dockerimage +to the os-agent. + +Signed-off-by: liyuanr +--- + cmd/proxy/controllers/os_controller.go | 16 ++++++------ + scripts/00bootup/Global.cfg | 12 ++++++--- + scripts/00bootup/mount.sh | 35 ++++++++++++++------------ + scripts/common/utils.sh | 7 ++++++ + scripts/create/imageCreate.sh | 4 +-- + scripts/kbimg.sh | 30 +++++++++++++--------- + 6 files changed, 62 insertions(+), 42 deletions(-) + +diff --git a/cmd/proxy/controllers/os_controller.go b/cmd/proxy/controllers/os_controller.go +index f73c750..09e58f9 100644 +--- a/cmd/proxy/controllers/os_controller.go ++++ b/cmd/proxy/controllers/os_controller.go +@@ -106,13 +106,15 @@ func (r *OSReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Re + case "upgrade": + version := osVersionSpec + downloadInfo := &agentclient.DownloadInfo{ +- ImageURL: osInstance.Spec.ImageURL, +- FlagSafe: osInstance.Spec.FlagSafe, +- CheckSum: osInstance.Spec.CheckSum, +- CaCert: osInstance.Spec.CaCert, +- ClientCert: osInstance.Spec.ClientCert, +- ClientKey: osInstance.Spec.ClientKey, +- MTLS: osInstance.Spec.MTLS, ++ ImageURL: osInstance.Spec.ImageURL, ++ FlagSafe: osInstance.Spec.FlagSafe, ++ CheckSum: osInstance.Spec.CheckSum, ++ CaCert: osInstance.Spec.CaCert, ++ ClientCert: osInstance.Spec.ClientCert, ++ ClientKey: osInstance.Spec.ClientKey, ++ MTLS: osInstance.Spec.MTLS, ++ ImageType: osInstance.Spec.ImageType, ++ DockerImage: osInstance.Spec.DockerImage, + } + if err := r.Connection.UpdateSpec(version, downloadInfo); err != nil { + return values.RequeueNow, err +diff --git a/scripts/00bootup/Global.cfg b/scripts/00bootup/Global.cfg +index cad4e33..dd78617 100644 +--- a/scripts/00bootup/Global.cfg ++++ b/scripts/00bootup/Global.cfg +@@ -4,9 +4,13 @@ rootfs_name=kubeos.tar + # select the target disk to install kubeOS + disk=/dev/sda + +-# address where stores the rootfs on the http server ++# pxe server ip address where stores the rootfs on the http server + server_ip=192.168.1.50 +- ++# target machine ip + local_ip=192.168.1.100 +- +-route_ip=192.168.1.1 +\ No newline at end of file ++# target machine route ++route_ip=192.168.1.1 ++# target machine netmask ++netmask=255.255.255.0 ++# target machine netDevice name ++net_name=eth0 +diff --git a/scripts/00bootup/mount.sh b/scripts/00bootup/mount.sh +index a04a364..1bc83ff 100644 +--- a/scripts/00bootup/mount.sh ++++ b/scripts/00bootup/mount.sh +@@ -24,20 +24,17 @@ function CheckSpace() { + } + + function GetDisk() { +- disks=$(hwinfo --disk --short | grep -vi "^disk" | awk '{print $1}') +- if [ ! -z ${disks} ]; then +- if [ ! -z ${disk} ] && echo "${disks[@]}" | grep -wq "${disk}" ; then ++ disks=(`hwinfo --disk --short 2>&1 | grep -vi "^disk" | awk '{print $1}'`) ++ if [ ${#disks[*]} -gt 0 ]; then ++ if [ -n "${disk}" ] && echo "${disks[@]}" | grep -wq "${disk}" ; then + echo "${disk} exists, start partition" | tee -a ${log} + else +- echo "disk not exist, choose default disk" | tee -a ${log} +- disk=$(echo ${disks[0]}) ++ echo "disk not exist, please choose correct disk" | tee -a ${log} + fi + else + echo "no disk found" | tee -a ${log} + return 1 + fi +- +- + CheckSpace + if [ $? -ne 0 ]; then + echo "no enough space on ${disk}" | tee -a ${log} +@@ -115,9 +112,18 @@ function PartitionAndFormatting() { + + function InitNetwork() { + echo "Initializing network..." +- # 获取网卡信息,默认只有一个网卡 +- net_name=`ifconfig -a | awk '{print $1}' | grep : | grep '^e' | awk -F: '{print $1}'` +- # dhclient --timeout 60 >> ${log} 2>&1 ++ netNames=(`ifconfig -a | awk '{print $1}' | grep : | grep '^e' | awk -F: '{print $1}'`) ++ if [ ${#netNames[*]} -gt 0 ]; then ++ if [ -n "${net_name}" ] && echo "${netNames[@]}" | grep -wq "${net_name}" ; then ++ echo "${net_name} exists, start set ip" | tee -a ${log} ++ else ++ echo "net_name not exist, choose default net" | tee -a ${log} ++ net_name=${netNames[0]} ++ fi ++ else ++ echo "no net Device found" | tee -a ${log} ++ return 1 ++ fi + + ifconfig ${net_name} up + if [ $? -ne 0 ]; then +@@ -126,7 +132,7 @@ function InitNetwork() { + fi + sleep 3 + +- ifconfig ${net_name} ${local_ip} netmask 255.255.255.0 >> ${log} 2>&1 ++ ifconfig ${net_name} ${local_ip} netmask ${netmask} >> ${log} 2>&1 + if [ $? -ne 0 ]; then + echo "ip set failed" | tee -a ${log} + return 1 +@@ -139,9 +145,6 @@ function InitNetwork() { + return 1 + fi + sleep 3 +- +- +- + return 0 + } + +@@ -249,6 +252,7 @@ function SetBoot() { + return 1 + fi + fi ++ sed -i 's#/dev/sda#'${disk}'#g' /sysroot/boot/efi/EFI/openEuler/grub.cfg + + return 0 + } +@@ -328,5 +332,4 @@ if [ ${ret} -eq 0 ]; then + cp ${log} /persist + else + echo "kubeOS install failed, see install.log" | tee -a ${log} +-fi +- ++fi +\ No newline at end of file +diff --git a/scripts/common/utils.sh b/scripts/common/utils.sh +index 902a6ae..3546c8c 100644 +--- a/scripts/common/utils.sh ++++ b/scripts/common/utils.sh +@@ -87,6 +87,13 @@ function delete_file() { + return 0 + } + ++function check_binary_exist() { ++ if [ ! -f "$1" ];then ++ log_error_print "binary path is invalid." ++ exit 3 ++ fi ++} ++ + function check_repo_path() { + if [ ! -f "$1" ];then + log_error_print "REPO path is invalid." +diff --git a/scripts/create/imageCreate.sh b/scripts/create/imageCreate.sh +index 95ebcde..564c740 100644 +--- a/scripts/create/imageCreate.sh ++++ b/scripts/create/imageCreate.sh +@@ -56,19 +56,17 @@ function create_img() { + } + + function create_pxe_img() { +- rm -rf boot/ kubeos.tar ++ rm -rf initramfs.img kubeos.tar + local opt=$1 + shift + case $opt in + "repo") + create_os_tar_from_repo "$@" + tar -xvf os.tar ./initramfs.img +- tar -xvf os.tar ./boot/vmlinuz + ;; + "docker") + create_os_tar_from_docker "$@" + tar -xvf os.tar initramfs.img +- tar -xvf os.tar boot/vmlinuz + ;; + esac + mv os.tar kubeos.tar +diff --git a/scripts/kbimg.sh b/scripts/kbimg.sh +index 1268700..a77d62e 100644 +--- a/scripts/kbimg.sh ++++ b/scripts/kbimg.sh +@@ -72,12 +72,12 @@ options: + EOF + } + +-function show_vm_image_usage() { ++function show_vm_pxe_image_usage() { + cat << EOF + +-Usage : kbimg create vm-image -p iso-path -v os-version -b os-agent-dir -e os-password ++Usage : kbimg create [vm-image|pxe-image] -p iso-path -v os-version -b os-agent-dir -e os-password + or +- kbimg create vm-image -d repository/name:tag ++ kbimg create [vm-image|pxe-image] -d repository/name:tag + + options: + -p repo path +@@ -130,7 +130,7 @@ function clean_space() { + function clean_img() { + delete_file system.img + delete_file update.img +- delete_dir boot ++ delete_file initramfs.img + delete_file kubeos.tar + } + +@@ -170,6 +170,7 @@ function verify_upgrade_image_input() { + ;; + *) + log_error_print "option $opt not found" ++ show_upgrade_image_usage + exit 3 + ;; + esac +@@ -183,6 +184,7 @@ function verify_repo_input() { + echo "$@" | grep -q "\-$i " + if [ "$?" -ne 0 ];then + log_error_print "option -$i is mandatory, please check input" ++ show_vm_pxe_image_usage + exit 3 + fi + done +@@ -208,6 +210,7 @@ function verify_repo_input() { + ;; + *) + log_error_print "option $opt not found" ++ show_vm_pxe_image_usage + exit 3 + ;; + esac +@@ -215,7 +218,8 @@ function verify_repo_input() { + } + function verify_docker_input() { + if [ $1 != "-d" ]; then +- log_error_print "option $opt not found" ++ log_error_print "option $1 not found" ++ show_vm_pxe_image_usage + exit 3 + fi + check_param $2 +@@ -242,13 +246,14 @@ function verify_create_input() { + check_disk_space "docker" + verify_upgrade_image_input "$@" + check_repo_path "${REPO}" ++ check_binary_exist "${AGENT_PATH}" + create_docker_image "${REPO}" "${VERSION}" "${AGENT_PATH}" "${PASSWD}" "${DOCKER_IMG}" + ;; + "vm-image") + shift + if [ $# -eq 1 ]; then + if [ "$1" == "-h" ] || [ "$1" == "--help" ]; then +- show_vm_image_usage ++ show_vm_pxe_image_usage + exit 0 + fi + fi +@@ -256,6 +261,7 @@ function verify_create_input() { + if [ $# -eq 8 ]; then + verify_repo_input "$@" + check_repo_path "${REPO}" ++ check_binary_exist "${AGENT_PATH}" + create_vm_img "repo" "${REPO}" "${VERSION}" "${AGENT_PATH}" "${PASSWD}" + elif [ $# -eq 2 ]; then + verify_docker_input "$@" +@@ -263,7 +269,7 @@ function verify_create_input() { + create_vm_img "docker" "${DOCKER_IMG}" + else + log_error_print "the number of parameters is incorrect, please check it." +- show_vm_image_usage ++ show_vm_pxe_image_usage + exit 3 + fi + ;; +@@ -271,7 +277,7 @@ function verify_create_input() { + shift + if [ $# -eq 1 ]; then + if [ "$1" == "-h" ] || [ "$1" == "--help" ]; then +- show_pxe_image_usage ++ show_vm_pxe_image_usage + exit 0 + fi + fi +@@ -279,6 +285,7 @@ function verify_create_input() { + if [ $# -eq 8 ]; then + verify_repo_input "$@" + check_repo_path "${REPO}" ++ check_binary_exist "${AGENT_PATH}" + create_pxe_img "repo" "${REPO}" "${VERSION}" "${AGENT_PATH}" "${PASSWD}" + elif [ $# -eq 2 ]; then + verify_docker_input "$@" +@@ -286,7 +293,7 @@ function verify_create_input() { + create_pxe_img "docker" "${DOCKER_IMG}" + else + log_error_print "the number of parameters is incorrect, please check it." +- show_pxe_image_usage ++ show_vm_pxe_image_usage + exit 3 + fi + ;; +@@ -327,9 +334,8 @@ function kubeos_image_main() { + esac + } + ++test_lock + trap clean_space EXIT + trap clean_img ERR + +-test_lock +-kubeos_image_main "$@" +- ++kubeos_image_main "$@" +\ No newline at end of file +-- +2.33.0.windows.2 + diff --git a/0002-change-generate-argument-from-isopath-to-repopath.patch b/0002-change-generate-argument-from-isopath-to-repopath.patch deleted file mode 100644 index 2f37e8f26cd4ad5f2b2864cfa5c9fdb28e20b564..0000000000000000000000000000000000000000 --- a/0002-change-generate-argument-from-isopath-to-repopath.patch +++ /dev/null @@ -1,119 +0,0 @@ -From c652bb6f46ce2e434bd098552abebbba8909a9c0 Mon Sep 17 00:00:00 2001 -From: linxiaoxu -Date: Wed, 8 Dec 2021 02:01:18 +0000 -Subject: [PATCH] change generate argument from isopath to repopath - ---- - docs/quick-start.md | 4 ++-- - scripts/generate.sh | 30 ++++++------------------------ - 2 files changed, 8 insertions(+), 26 deletions(-) - -diff --git a/docs/quick-start.md b/docs/quick-start.md -index 098c839..ceb81e5 100644 ---- a/docs/quick-start.md -+++ b/docs/quick-start.md -@@ -56,10 +56,10 @@ - 进入scripts目录,执行脚本 - ``` - cd scripts -- bash generate.sh ISO_PATH VERSION AGENT_PATH ENCRYPTED_PASSWD -+ bash generate.sh REPO_PATH VERSION AGENT_PATH ENCRYPTED_PASSWD - ``` - - 参数说明: -- - ISO_PATH :全量iso的路径 -+ - REPO_PATH :全量repo的路径 - - VERSION :制作的容器OS镜像的版本 - - AGENT_PATH:构建出来的os-agent的路径 - - ENCRYPTED_PASSWD:镜像的root用户密码,加密后的带盐值的密码。可以用openssl、kiwi等命令生成 -diff --git a/scripts/generate.sh b/scripts/generate.sh -index 1374894..d5111f1 100644 ---- a/scripts/generate.sh -+++ b/scripts/generate.sh -@@ -12,8 +12,7 @@ - set -e - - NAME=KubeOS --ISO_PATH="/mnt" --ISO="" -+REPO="" - VERSION="" - AGENT_PATH="" - PASSWD="" -@@ -27,7 +26,7 @@ CHECK_REGEX='\||;|&|&&|\|\||>|>>|<|,|#|!|\$' - function show_options() { - cat << EOF - --usage example: sh generate.sh isopath osversion agentpath passwd(encrypted) -+usage example: sh generate.sh repopath osversion agentpath passwd(encrypted) - - options: - -h,--help show help information -@@ -114,7 +113,6 @@ function delete_file() { - function clean_space() { - delete_dir "${RPM_ROOT}" - delete_dir "${TMP_MOUNT_PATH}" -- unmount_dir "${ISO_PATH}" - delete_file os.tar - rm -rf "${LOCK}" - } -@@ -135,8 +133,8 @@ function test_lock() { - } - - function check_path() { -- if [ ! -f "${ISO}" ];then -- echo "ISO path is invalid." -+ if [ ! -f "${REPO}" ];then -+ echo "REPO path is invalid." - exit 3 - fi - -@@ -144,11 +142,6 @@ function check_path() { - echo "there is a rootfs folder. please confirm if rootfs is being used, if not, please remove ${RPM_ROOT} first." - exit 5 - fi -- -- if mount 2>/dev/null | grep -w -q "${ISO_PATH}"; then -- echo "$ISO_PATH has already been mounted." -- exit 4 -- fi - } - - function check_disk_space() { -@@ -168,24 +161,13 @@ function check_disk_space() { - } - - function prepare_yum() { -- mount "${ISO}" "${ISO_PATH}" -- if [ ! -d "/mnt/Packages" ]; then -- echo "please use ISO file path as ${ISO}." -- exit 2 -- fi -- - # init rpmdb - rpm --root "${RPM_ROOT}" --initdb - mkdir -p "${RPM_ROOT}"{/etc/yum.repos.d,/persist,/proc,/dev/pts,/sys} - mount_proc_dev_sys "${RPM_ROOT}" - # init yum repo - local iso_repo="${RPM_ROOT}/etc/yum.repos.d/iso.repo" -- echo "[base]" >"${iso_repo}" -- { -- echo "name=ISO base" -- echo "baseurl=file://${ISO_PATH}" -- echo "enabled=1" -- } >>"${iso_repo}" -+ cat ${REPO} > ${RPM_ROOT}/etc/yum.repos.d/iso.repo - } - - function install_packages() { -@@ -304,7 +286,7 @@ do - done - set -eE - --ISO=$1 -+REPO=$1 - VERSION=$2 - AGENT_PATH=$3 - PASSWD=$4 --- -2.30.0 - diff --git a/0003-KubeOS-add-arm-architecture-support-to-the-OS-image.patch b/0003-KubeOS-add-arm-architecture-support-to-the-OS-image.patch deleted file mode 100644 index 0700480980bcd951789932c3570a99f9d5b5e626..0000000000000000000000000000000000000000 --- a/0003-KubeOS-add-arm-architecture-support-to-the-OS-image.patch +++ /dev/null @@ -1,298 +0,0 @@ -From a19218ad25eac323ead61ec5ff1fbb04a6dc2539 Mon Sep 17 00:00:00 2001 -From: liyuanr -Date: Fri, 3 Dec 2021 11:16:22 +0800 -Subject: [PATCH] KubeOS:add arm architecture support to the OS image - -Signed-off-by: liyuanr ---- - cmd/agent/server/server.go | 5 +- - files/{boot-grub2.mount => boot.mount} | 6 +- - scripts/bootloader.sh | 40 +++++++++++++ - scripts/generate.sh | 83 +++++++++++++++----------- - scripts/grub.cfg | 16 ++--- - scripts/rpmlist | 3 +- - scripts/set_in_chroot.sh | 2 +- - 7 files changed, 107 insertions(+), 48 deletions(-) - rename files/{boot-grub2.mount => boot.mount} (92%) - create mode 100644 scripts/bootloader.sh - -diff --git a/cmd/agent/server/server.go b/cmd/agent/server/server.go -index 711e0c8..e4db02e 100644 ---- a/cmd/agent/server/server.go -+++ b/cmd/agent/server/server.go -@@ -174,7 +174,10 @@ func install(imagePath string, mainPart string, partB string) error { - if side != partB { - next = "A" - } -- return runCommand("grub2-set-default", next) -+ if err := runCommand("grub2-set-default", next); err != nil { -+ return err -+ } -+ return runCommand("cp", "/boot/grub2/grubenv", "/boot/efi/EFI/openEuler") - } - - func (s *Server) reboot() error { -diff --git a/files/boot-grub2.mount b/files/boot.mount -similarity index 92% -rename from files/boot-grub2.mount -rename to files/boot.mount -index a53fff7..a228aae 100644 ---- a/files/boot-grub2.mount -+++ b/files/boot.mount -@@ -15,9 +15,9 @@ Conflicts=umount.target - Before=local-fs.target umount.target - - [Mount] --What=/dev/disk/by-label/GRUB2 --Where=/boot/grub2 --Type=ext4 -+What=/dev/disk/by-label/BOOT -+Where=/boot -+Type=vfat - Options=defaults - - [Install] -diff --git a/scripts/bootloader.sh b/scripts/bootloader.sh -new file mode 100644 -index 0000000..b93c314 ---- /dev/null -+++ b/scripts/bootloader.sh -@@ -0,0 +1,40 @@ -+#!/bin/bash -+set -eu -+set -o pipefail -+set -x -+ARCH=`arch` -+ -+function install_grub2_x86 () -+{ -+ # make boot.img/core.img and setup, to support legacy boot mode -+ GRUBNAME=$(which grub2-install) -+ echo "Installing GRUB2..." -+ GRUB_OPTS=${GRUB_OPTS:-"--force"} -+ GRUB_OPTS="$GRUB_OPTS --target=i386-pc" -+ -+ $GRUBNAME --modules="biosdisk part_msdos" $GRUB_OPTS $DEVICE -+ -+ # make efi file, and save in FAT16 partition, to support UEFI boot mode -+ cp -r /usr/lib/grub/x86_64-efi boot/efi/EFI/openEuler -+ eval "grub2-mkimage -d /usr/lib/grub/x86_64-efi -O x86_64-efi --output=/boot/efi/EFI/openEuler/grubx64.efi '--prefix=(,msdos1)/efi/EFI/openEuler' fat part_gpt part_msdos linux" -+ -+ mkdir -p /boot/EFI/BOOT/ -+ cp -f /boot/efi/EFI/openEuler/grubx64.efi /boot/EFI/BOOT/BOOTX64.EFI -+} -+ -+function install_grub2_efi () -+{ -+ cp -r /usr/lib/grub/arm64-efi /boot/efi/EFI/openEuler/ -+ eval "grub2-mkimage -d /usr/lib/grub/arm64-efi -O arm64-efi --output=/boot/efi/EFI/openEuler/grubaa64.efi '--prefix=(,msdos1)/efi/EFI/openEuler' fat part_gpt part_msdos linux" -+ -+ mkdir -p /boot/EFI/BOOT/ -+ cp -f /boot/efi/EFI/openEuler/grubaa64.efi /boot/EFI/BOOT/BOOTAA64.EFI -+} -+ -+if [ $ARCH == "x86_64" ]; then -+ install_grub2_x86 -+fi -+ -+if [ $ARCH == "aarch64" ]; then -+ install_grub2_efi -+fi -diff --git a/scripts/generate.sh b/scripts/generate.sh -index 73830ea..c481e30 100644 ---- a/scripts/generate.sh -+++ b/scripts/generate.sh -@@ -22,6 +22,7 @@ TMP_MOUNT_PATH="${PWD}/mnt" - RPM_ROOT="${PWD}/rootfs" - LOCK=./test.lock - CHECK_REGEX='\||;|&|&&|\|\||>|>>|<|,|#|!|\$' -+ARCH=$(arch) - - function show_options() { - cat << EOF -@@ -76,9 +77,14 @@ function init_part() { - offset=$(echo "${offset}*512" | bc) - local loop=$(losetup -f) - losetup -o "${offset}" --sizelimit "${sizelimit}" "${loop}" system.img -- mkfs.ext4 -L "$2" "${loop}" -- mount -t ext4 "${loop}" "$3" -- rm -rf "$3/lost+found" -+ if [ $2 == "BOOT" ];then -+ mkfs.vfat -n "$2" "${loop}" -+ mount -t vfat "${loop}" "$3" -+ else -+ mkfs.ext4 -L "$2" "${loop}" -+ mount -t ext4 "${loop}" "$3" -+ rm -rf "$3/lost+found" -+ fi - } - - function delete_dir() { -@@ -183,12 +189,15 @@ function install_packages() { - fi - - local rpms=$(cat ./rpmlist | tr "\n" " ") -- yum -y --installroot="${RPM_ROOT}" install --nogpgcheck --setopt install_weak_deps=False ${rpms} -- yum -y --installroot="${RPM_ROOT}" clean all -+ if [ "${ARCH}" == "x86_64" ]; then -+ yum -y --installroot="${RPM_ROOT}" install --nogpgcheck --setopt install_weak_deps=False ${rpms} grub2 grub2-efi-x64-modules grub2-pc-modules -+ elif [ "${ARCH}" == "aarch64" ]; then -+ yum -y --installroot="${RPM_ROOT}" install --nogpgcheck --setopt install_weak_deps=False ${rpms} grub2-efi-aa64-modules -+ fi -+ yum -y --installroot="${RPM_ROOT}" clean all - } - - function install_misc() { -- cp grub.cfg "${RPM_ROOT}/boot/grub2/" - cp ../files/*mount ../files/os-agent.service "${RPM_ROOT}/usr/lib/systemd/system/" - cp ../files/os-release "${RPM_ROOT}/usr/lib/" - cp "${AGENT_PATH}" "${RPM_ROOT}/usr/bin" -@@ -204,38 +213,46 @@ EOF - mv "${RPM_ROOT}"/boot/initramfs* "${RPM_ROOT}/boot/initramfs.img" - - cp set_in_chroot.sh "${RPM_ROOT}" -- ROOT_PWD="${PASSWD}" chroot "$RPM_ROOT" bash /set_in_chroot.sh -+ ROOT_PWD="${PASSWD}" chroot "${RPM_ROOT}" bash /set_in_chroot.sh - rm "${RPM_ROOT}/set_in_chroot.sh" - } - - function create_img() { - rm -f system.img update.img - qemu-img create system.img ${IMG_SIZE}G -- parted system.img -- mklabel msdos -- parted system.img -- mkpart primary ext4 1MiB 20MiB -- parted system.img -- mkpart primary ext4 20MiB 2120MiB -- parted system.img -- mkpart primary ext4 2120MiB 4220MiB -- parted system.img -- mkpart primary ext4 4220MiB 100% -- -- local device=$(losetup -f) -- losetup "${device}" system.img -- -- mkdir -p "${TMP_MOUNT_PATH}" -- -- init_part system.img2 ROOT-A "${TMP_MOUNT_PATH}" -- local grub2_path="${TMP_MOUNT_PATH}/boot/grub2" -- mkdir -p "${grub2_path}" -- init_part system.img1 GRUB2 "${grub2_path}" -- -- tar -x -C "${TMP_MOUNT_PATH}" -f os.tar -- sync -- -- dd if=/dev/disk/by-label/ROOT-A of=update.img bs=8M -- mount_proc_dev_sys "${TMP_MOUNT_PATH}" -- chroot "${TMP_MOUNT_PATH}" grub2-install --modules="biosdisk part_msdos" "${device}" -- sync -- unmount_dir "${TMP_MOUNT_PATH}" -- -+ parted system.img -- mklabel msdos -+ parted system.img -- mkpart primary fat16 1MiB 60MiB -+ parted system.img -- mkpart primary ext4 60MiB 2160MiB -+ parted system.img -- mkpart primary ext4 2160MiB 4260MiB -+ parted system.img -- mkpart primary ext4 4260MiB 100% -+ -+ local device=$(losetup -f) -+ losetup "${device}" system.img -+ -+ mkdir -p "${TMP_MOUNT_PATH}" -+ -+ init_part system.img2 ROOT-A "${TMP_MOUNT_PATH}" -+ local BOOT_PATH=${TMP_MOUNT_PATH}/boot -+ mkdir -p ${BOOT_PATH} -+ chmod 755 ${BOOT_PATH} -+ init_part system.img1 BOOT "${BOOT_PATH}" -+ -+ mv -f ${RPM_ROOT}/boot/* ${BOOT_PATH} || true -+ [ -d ${RPM_ROOT}/boot/ ] && rm -rf ${RPM_ROOT}/boot/ -+ sudo mv -t ${TMP_MOUNT_PATH} ${RPM_ROOT}/* || true -+ cp bootloader.sh "${TMP_MOUNT_PATH}" -+ mount_proc_dev_sys "${TMP_MOUNT_PATH}" -+ DEVICE="${device}" chroot "${TMP_MOUNT_PATH}" bash bootloader.sh -+ cp grub.cfg ${TMP_MOUNT_PATH}/boot/grub2 -+ cp grub.cfg ${TMP_MOUNT_PATH}/boot/efi/EFI/openEuler -+ rm -rf "${TMP_MOUNT_PATH}/bootloader.sh" -+ sync -+ -+ dd if=/dev/disk/by-label/ROOT-A of=update.img bs=8M -+ sync -+ unmount_dir "${TMP_MOUNT_PATH}" -+ -+ - init_part system.img3 ROOT-B "${TMP_MOUNT_PATH}" - umount "${TMP_MOUNT_PATH}" - -@@ -251,8 +268,6 @@ function create_os_tar() { - install_packages - install_misc - unmount_dir "${RPM_ROOT}" -- -- tar -C "${RPM_ROOT}" -cf ./os.tar . - } - - test_lock -diff --git a/scripts/grub.cfg b/scripts/grub.cfg -index d10e4cf..90507c4 100644 ---- a/scripts/grub.cfg -+++ b/scripts/grub.cfg -@@ -92,12 +92,12 @@ menuentry 'A' --class KubeOS --class gnu-linux --class gnu --class os --unrestri - insmod ext2 - set root='hd0,msdos2' - if [ x$feature_platform_search_hint = xy ]; then -- search --no-floppy --file --set=root --hint-bios=hd0,msdos2 --hint-efi=hd0,msdos2 --hint-baremetal=ahci0,msdos2 /boot/vmlinuz -+ search --no-floppy --file --set=root --hint-bios=hd0,msdos2 --hint-efi=hd0,msdos2 --hint-baremetal=ahci0,msdos2 /vmlinuz - else -- search --no-floppy --file --set=root /boot/vmlinuz -+ search --no-floppy --file --set=root /vmlinuz - fi -- linux /boot/vmlinuz root=/dev/sda2 ro rootfstype=ext4 nomodeset quiet oops=panic softlockup_panic=1 nmi_watchdog=1 rd.shell=0 selinux=0 crashkernel=256M panic=3 -- initrd /boot/initramfs.img -+ linux /vmlinuz root=/dev/sda2 ro rootfstype=ext4 nomodeset quiet oops=panic softlockup_panic=1 nmi_watchdog=1 rd.shell=0 selinux=0 crashkernel=256M panic=3 -+ initrd /initramfs.img - } - - menuentry 'B' --class KubeOS --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'KubeOS-B' { -@@ -108,12 +108,12 @@ menuentry 'B' --class KubeOS --class gnu-linux --class gnu --class os --unrestri - insmod ext2 - set root='hd0,msdos3' - if [ x$feature_platform_search_hint = xy ]; then -- search --no-floppy --file --set=root --hint-bios=hd0,msdos3 --hint-efi=hd0,msdos3 --hint-baremetal=ahci0,msdos3 /boot/vmlinuz -+ search --no-floppy --file --set=root --hint-bios=hd0,msdos3 --hint-efi=hd0,msdos3 --hint-baremetal=ahci0,msdos3 /vmlinuz - else -- search --no-floppy --file --set=root /boot/vmlinuz -+ search --no-floppy --file --set=root /vmlinuz - fi -- linux /boot/vmlinuz root=/dev/sda3 ro rootfstype=ext4 nomodeset quiet oops=panic softlockup_panic=1 nmi_watchdog=1 rd.shell=0 selinux=0 crashkernel=256M panic=3 -- initrd /boot/initramfs.img -+ linux /vmlinuz root=/dev/sda3 ro rootfstype=ext4 nomodeset quiet oops=panic softlockup_panic=1 nmi_watchdog=1 rd.shell=0 selinux=0 crashkernel=256M panic=3 -+ initrd /initramfs.img - } - - ### END /etc/grub.d/10_linux ### -diff --git a/scripts/rpmlist b/scripts/rpmlist -index 93c277c..7a9adfa 100644 ---- a/scripts/rpmlist -+++ b/scripts/rpmlist -@@ -1,6 +1,7 @@ - kernel - passwd --grub2 -+grub2-efi -+grub2-tools - dhcp - NetworkManager - openssh-server -diff --git a/scripts/set_in_chroot.sh b/scripts/set_in_chroot.sh -index 3b8313f..49e3894 100644 ---- a/scripts/set_in_chroot.sh -+++ b/scripts/set_in_chroot.sh -@@ -1,7 +1,7 @@ - #!/bin/bash - ln -s /usr/lib/systemd/system/os-agent.service /usr/lib/systemd/system/multi-user.target.wants/os-agent.service - ln -s /usr/lib/systemd/system/kubelet.service /usr/lib/systemd/system/multi-user.target.wants/kubelet.service --ln -s /usr/lib/systemd/system/boot-grub2.mount /lib/systemd/system/local-fs.target.wants/boot-grub2.mount -+ln -s /usr/lib/systemd/system/boot.mount /lib/systemd/system/local-fs.target.wants/boot.mount - ln -s /usr/lib/systemd/system/etc.mount /lib/systemd/system/local-fs.target.wants/etc.mount - - str=`sed -n '/^root:/p' /etc/shadow | awk -F "root:" '{print $2}'` --- -2.30.0 - diff --git a/0003-KubeOS-fixed-the-issue-of-VMs-images-and-add-check-o.patch b/0003-KubeOS-fixed-the-issue-of-VMs-images-and-add-check-o.patch new file mode 100644 index 0000000000000000000000000000000000000000..7e9eee8c457d66f4f51445dc11aacd5f551caa6b --- /dev/null +++ b/0003-KubeOS-fixed-the-issue-of-VMs-images-and-add-check-o.patch @@ -0,0 +1,300 @@ +From fd5b3f24446c8c5dfc2fb271431ed296618eccc1 Mon Sep 17 00:00:00 2001 +From: liyuanr +Date: Sat, 27 Aug 2022 16:22:56 +0800 +Subject: [PATCH] KubeOS: fixed the issue of VMs images and add check of + Global.cfg. + +Modify the docker image creation method to fix the problem that /etc/hosts is +empty in the VM created using the docker image and that the /sys directory is +mounted abnormally. +Add checks whether configuration in the Global.cfg file are empty and whether +the IP address is valid. + +Signed-off-by: liyuanr +--- + api/v1alpha1/os_types.go | 15 +++--- + cmd/agent/server/docker_image.go | 27 +++++++---- + .../config/crd/upgrade.openeuler.org_os.yaml | 1 - + scripts/Dockerfile | 2 +- + scripts/common/utils.sh | 48 ++++++++++++++++--- + scripts/create/imageCreate.sh | 3 +- + scripts/create/rootfsCreate.sh | 12 ++--- + scripts/kbimg.sh | 19 +------- + 8 files changed, 74 insertions(+), 53 deletions(-) + +diff --git a/api/v1alpha1/os_types.go b/api/v1alpha1/os_types.go +index 5acb97a..862d408 100644 +--- a/api/v1alpha1/os_types.go ++++ b/api/v1alpha1/os_types.go +@@ -23,14 +23,13 @@ type OSSpec struct { + MaxUnavailable int `json:"maxunavailable"` + CheckSum string `json:"checksum"` + FlagSafe bool `json:"flagSafe"` +- // +kubebuilder:default=true +- MTLS bool `json:"mtls"` +- ImageType string `json:"imagetype"` +- DockerImage string `json:"dockerimage"` +- OpsType string `json:"opstype"` +- CaCert string `json:"cacert"` +- ClientCert string `json:"clientcert"` +- ClientKey string `json:"clientkey"` ++ MTLS bool `json:"mtls"` ++ ImageType string `json:"imagetype"` ++ DockerImage string `json:"dockerimage"` ++ OpsType string `json:"opstype"` ++ CaCert string `json:"cacert"` ++ ClientCert string `json:"clientcert"` ++ ClientKey string `json:"clientkey"` + } + + // +kubebuilder:subresource:status +diff --git a/cmd/agent/server/docker_image.go b/cmd/agent/server/docker_image.go +index c5ed640..11b21aa 100644 +--- a/cmd/agent/server/docker_image.go ++++ b/cmd/agent/server/docker_image.go +@@ -54,7 +54,7 @@ func pullOSImage(req *pb.UpdateRequest) (string, error) { + return "", err + } + defer cli.ContainerRemove(ctx, info.ID, types.ContainerRemoveOptions{}) +- tarStream, stat, err := cli.CopyFromContainer(ctx, info.ID, "/") ++ tarStream, stat, err := cli.CopyFromContainer(ctx, info.ID, "/os.tar") + if err != nil { + return "", err + } +@@ -71,6 +71,15 @@ func pullOSImage(req *pb.UpdateRequest) (string, error) { + return "", fmt.Errorf("space is not enough for downloaing") + } + ++ srcInfo := archive.CopyInfo{ ++ Path: "/", ++ Exists: true, ++ IsDir: stat.Mode.IsDir(), ++ } ++ if err = archive.CopyTo(tarStream, srcInfo, PersistDir); err != nil { ++ return "", err ++ } ++ + tmpMountPath := filepath.Join(PersistDir, "/kubeos-update") + if err = os.Mkdir(tmpMountPath, imgPermission); err != nil { + return "", err +@@ -80,25 +89,23 @@ func pullOSImage(req *pb.UpdateRequest) (string, error) { + if err = runCommand("dd", "if=/dev/zero", "of="+imagePath, "bs=2M", "count=1024"); err != nil { + return "", err + } +- if err = runCommand("mkfs.ext4", imagePath); err != nil { ++ _, next, err := getNextPart(partA, partB) ++ if err = runCommand("mkfs.ext4", "-L", "ROOT-"+next, imagePath); err != nil { + return "", err + } + if err = runCommand("mount", "-o", "loop", imagePath, tmpMountPath); err != nil { + return "", err + } + defer func() { +- runCommand("losetup", "-D") + syscall.Unmount(tmpMountPath, 0) +- ++ runCommand("losetup", "-D") + }() +- srcInfo := archive.CopyInfo{ +- Path: "/", +- Exists: true, +- IsDir: stat.Mode.IsDir(), +- } ++ + logrus.Infoln("downloading to file " + imagePath) +- if err = archive.CopyTo(tarStream, srcInfo, tmpMountPath); err != nil { ++ tmpTarPath := filepath.Join(PersistDir, "/os.tar") ++ if err = runCommand("tar", "-xvf", tmpTarPath, "-C", tmpMountPath); err != nil { + return "", err + } ++ defer os.Remove(tmpTarPath) + return imagePath, nil + } +diff --git a/docs/example/config/crd/upgrade.openeuler.org_os.yaml b/docs/example/config/crd/upgrade.openeuler.org_os.yaml +index 465e803..f240b8d 100644 +--- a/docs/example/config/crd/upgrade.openeuler.org_os.yaml ++++ b/docs/example/config/crd/upgrade.openeuler.org_os.yaml +@@ -51,7 +51,6 @@ spec: + maxunavailable: + type: integer + mtls: +- default: true + type: boolean + opstype: + type: string +diff --git a/scripts/Dockerfile b/scripts/Dockerfile +index 6a616f5..3da4708 100644 +--- a/scripts/Dockerfile ++++ b/scripts/Dockerfile +@@ -1,3 +1,3 @@ + FROM scratch +-ADD os.tar / ++COPY os.tar / + CMD ["/bin/sh"] +diff --git a/scripts/common/utils.sh b/scripts/common/utils.sh +index 3546c8c..cf9441b 100644 +--- a/scripts/common/utils.sh ++++ b/scripts/common/utils.sh +@@ -87,19 +87,53 @@ function delete_file() { + return 0 + } + +-function check_binary_exist() { +- if [ ! -f "$1" ];then +- log_error_print "binary path is invalid." ++function check_file_valid() { ++ local file="$1" ++ local mesg="$2" ++ if [ ! -e "${file}" ]; then ++ log_error_print "${mesg} is not exist." ++ exit 3 ++ fi ++ if [ ! -f "${file}" ];then ++ log_error_print "${mesg} is not a file." + exit 3 + fi + } + +-function check_repo_path() { +- if [ ! -f "$1" ];then +- log_error_print "REPO path is invalid." ++function check_conf_valid() { ++ local conf_path="${PWD}/00bootup/Global.cfg" ++ check_file_valid ${conf_path} "Globab.cfg" ++ if [ $# != 7 ];then ++ log_error_print "configure configured in Global.cfg is empty." + exit 3 + fi ++ for addr in ${server_ip} ${local_ip} ${route_ip} ${netmask}; do ++ check_ip_valid $addr ++ done ++} + ++function check_ip_valid() { ++ local ipaddr="$1"; ++ if [[ ! $ipaddr =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]] ; then ++ log_error_print "ip address configured in Global.cfg is not valid." ++ exit 3; ++ fi ++ for quad in $(echo "${ipaddr//./ }"); do ++ if [ $quad -ge 0 ] && [ $quad -le 255 ];then ++ continue ++ fi ++ log_error_print "ip address configured in Global.cfg is not valid." ++ exit 3; ++ done ++ ++} ++ ++function check_binary_exist() { ++ check_file_valid "$1" "os-agent binary" ++} ++ ++function check_repo_path() { ++ check_file_valid $1 "REPO file" + if [ -d "${RPM_ROOT}" ]; then + log_error_print "there is a rootfs folder. please confirm if rootfs is being used, if not, please remove ${RPM_ROOT} first." + exit 5 +@@ -117,7 +151,7 @@ function check_disk_space() { + fi + ;; + vm) +- local maxsize=$((5*1024*1024)) ++ local maxsize=$((25*1024*1024)) + if [ "${disk_ava}" -lt "${maxsize}" ]; then + log_error_print "The available disk space is not enough, at least 25GiB." + exit 6 +diff --git a/scripts/create/imageCreate.sh b/scripts/create/imageCreate.sh +index 564c740..9689f62 100644 +--- a/scripts/create/imageCreate.sh ++++ b/scripts/create/imageCreate.sh +@@ -62,13 +62,12 @@ function create_pxe_img() { + case $opt in + "repo") + create_os_tar_from_repo "$@" +- tar -xvf os.tar ./initramfs.img + ;; + "docker") + create_os_tar_from_docker "$@" +- tar -xvf os.tar initramfs.img + ;; + esac ++ tar -xvf os.tar ./initramfs.img + mv os.tar kubeos.tar + } + function create_docker_image() { +diff --git a/scripts/create/rootfsCreate.sh b/scripts/create/rootfsCreate.sh +index e5c53d5..4c02c35 100644 +--- a/scripts/create/rootfsCreate.sh ++++ b/scripts/create/rootfsCreate.sh +@@ -65,8 +65,6 @@ EOF + cp set_in_chroot.sh "${RPM_ROOT}" + ROOT_PWD="${PASSWD}" chroot "${RPM_ROOT}" bash /set_in_chroot.sh + rm "${RPM_ROOT}/set_in_chroot.sh" +- +- #todo:chroot create initramfs.img to include install-scripts for PXE install + } + + function create_os_tar_from_repo() { +@@ -80,9 +78,9 @@ function create_os_tar_from_repo() { + tar -C "$RPM_ROOT" -cf ./os.tar . + } + function create_os_tar_from_docker() { +- local DOCKER_IMG=$1 +- container_id=$(docker create ${DOCKER_IMG}) +- echo "$container_id" +- docker export $container_id > os.tar +- docker rm $container_id ++ local DOCKER_IMG=$1 ++ container_id=$(docker create ${DOCKER_IMG}) ++ echo "$container_id" ++ docker cp $container_id:/os.tar ./ ++ docker rm $container_id + } +diff --git a/scripts/kbimg.sh b/scripts/kbimg.sh +index a77d62e..a623e3d 100644 +--- a/scripts/kbimg.sh ++++ b/scripts/kbimg.sh +@@ -24,6 +24,7 @@ source common/log.sh &>/dev/null + source common/utils.sh &>/dev/null + source create/rootfsCreate.sh &>/dev/null + source create/imageCreate.sh &>/dev/null ++source 00bootup/Global.cfg &>/dev/null + + function show_options() { + cat << EOF +@@ -89,23 +90,6 @@ options: + EOF + } + +-function show_pxe_image_usage() { +- cat << EOF +- +-Usage : kbimg create pxe-image -p iso-path -v os-version -b os-agent-dir -e os-password +- or +- kbimg create pxe-image -d repository/name:tag +- +-options: +- -p repo path +- -v KubeOS version +- -b directory of os-agent binary +- -e os encrypted password +- -d docker image like repository/name:tag +- -h,--help show help information +-EOF +-} +- + function file_lock() { + local lock_file=$1 + exec {lock_fd}>"${lock_file}" +@@ -282,6 +266,7 @@ function verify_create_input() { + fi + fi + check_disk_space "pxe" ++ check_conf_valid ${rootfs_name} ${disk} ${server_ip} ${local_ip} ${route_ip} ${netmask} ${net_name} + if [ $# -eq 8 ]; then + verify_repo_input "$@" + check_repo_path "${REPO}" +-- +2.33.0.windows.2 + diff --git a/0004-KubeOS-add-the-clearing-of-space-before-the-upgrade-.patch b/0004-KubeOS-add-the-clearing-of-space-before-the-upgrade-.patch new file mode 100644 index 0000000000000000000000000000000000000000..c183d1b2827ac39e4d4e1f8f6910cdefe3f66817 --- /dev/null +++ b/0004-KubeOS-add-the-clearing-of-space-before-the-upgrade-.patch @@ -0,0 +1,183 @@ +From 54d0a0304a0f76a0e619a8adac370eb3866f52b1 Mon Sep 17 00:00:00 2001 +From: liyuanr +Date: Wed, 31 Aug 2022 18:06:28 +0800 +Subject: [PATCH] KubeOS:add the clearing of space before the upgrade and + rectifying the rollback failure. + +The pre-upgrade space clearance function is added to resolve the problem that the upgrade +fails due to residual resources when the upgrade is performed again after a power failure. +Fix the rollback failure when the upgrade fails due to the upgrade using different architectures. + +Signed-off-by: liyuanr +--- + cmd/agent/server/docker_image.go | 91 ++++++++++++++++++++++++++++---- + scripts/grub.cfg | 10 ---- + 2 files changed, 81 insertions(+), 20 deletions(-) + +diff --git a/cmd/agent/server/docker_image.go b/cmd/agent/server/docker_image.go +index 11b21aa..4f9edc1 100644 +--- a/cmd/agent/server/docker_image.go ++++ b/cmd/agent/server/docker_image.go +@@ -15,6 +15,7 @@ package server + + import ( + "context" ++ "errors" + "fmt" + "io/ioutil" + "os" +@@ -47,9 +48,18 @@ func pullOSImage(req *pb.UpdateRequest) (string, error) { + return "", err + } + ++ containerName := "kubeos-temp" ++ containers, err := cli.ContainerList(ctx, types.ContainerListOptions{All: true}) ++ for _, container := range containers { ++ if container.Names[0] == "/"+containerName { ++ if err = cli.ContainerRemove(ctx, container.ID, types.ContainerRemoveOptions{}); err != nil { ++ return "", err ++ } ++ } ++ } + info, err := cli.ContainerCreate(ctx, &container.Config{ + Image: imageName, +- }, nil, nil, "kubeos-temp") ++ }, nil, nil, containerName) + if err != nil { + return "", err + } +@@ -71,22 +81,31 @@ func pullOSImage(req *pb.UpdateRequest) (string, error) { + return "", fmt.Errorf("space is not enough for downloaing") + } + ++ tmpUpdatePath := filepath.Join(PersistDir, "/KubeOS-Update") ++ tmpMountPath := filepath.Join(tmpUpdatePath, "/kubeos-update") ++ tmpTarPath := filepath.Join(tmpUpdatePath, "/os.tar") ++ imagePath := filepath.Join(PersistDir, "/update.img") ++ ++ if err = cleanSpace(tmpUpdatePath, tmpMountPath, imagePath); err != nil { ++ return "", err ++ } ++ if err = os.MkdirAll(tmpMountPath, imgPermission); err != nil { ++ return "", err ++ } ++ defer os.RemoveAll(tmpUpdatePath) ++ + srcInfo := archive.CopyInfo{ + Path: "/", + Exists: true, + IsDir: stat.Mode.IsDir(), + } +- if err = archive.CopyTo(tarStream, srcInfo, PersistDir); err != nil { ++ if err = archive.CopyTo(tarStream, srcInfo, tmpUpdatePath); err != nil { + return "", err + } +- +- tmpMountPath := filepath.Join(PersistDir, "/kubeos-update") +- if err = os.Mkdir(tmpMountPath, imgPermission); err != nil { ++ if err = runCommand("dd", "if=/dev/zero", "of="+imagePath, "bs=2M", "count=1024"); err != nil { + return "", err + } +- defer os.Remove(tmpMountPath) +- imagePath := filepath.Join(PersistDir, "/update.img") +- if err = runCommand("dd", "if=/dev/zero", "of="+imagePath, "bs=2M", "count=1024"); err != nil { ++ if err = os.Chmod(imagePath, imgPermission); err != nil { + return "", err + } + _, next, err := getNextPart(partA, partB) +@@ -102,10 +121,62 @@ func pullOSImage(req *pb.UpdateRequest) (string, error) { + }() + + logrus.Infoln("downloading to file " + imagePath) +- tmpTarPath := filepath.Join(PersistDir, "/os.tar") + if err = runCommand("tar", "-xvf", tmpTarPath, "-C", tmpMountPath); err != nil { + return "", err + } +- defer os.Remove(tmpTarPath) + return imagePath, nil + } ++ ++func cleanSpace(updatePath, mountPath, imagePath string) error { ++ isFileExist, err := checkFileExist(mountPath) ++ if err != nil { ++ return err ++ } ++ if isFileExist { ++ var st syscall.Stat_t ++ if err := syscall.Lstat(mountPath, &st); err != nil { ++ return err ++ } ++ dev := st.Dev ++ parent := filepath.Dir(mountPath) ++ if err := syscall.Lstat(parent, &st); err != nil { ++ return err ++ } ++ if dev != st.Dev { ++ if err := syscall.Unmount(mountPath, 0); err != nil { ++ return err ++ } ++ } ++ } ++ ++ if err = deleteFile(updatePath); err != nil { ++ return err ++ } ++ ++ if err = deleteFile(imagePath); err != nil { ++ return err ++ } ++ return nil ++} ++ ++func deleteFile(path string) error { ++ isFileExist, err := checkFileExist(path) ++ if err != nil { ++ return err ++ } ++ if isFileExist { ++ if err = os.RemoveAll(path); err != nil { ++ return err ++ } ++ } ++ return nil ++} ++func checkFileExist(path string) (bool, error) { ++ if _, err := os.Stat(path); err == nil { ++ return true, nil ++ } else if errors.Is(err, os.ErrNotExist) { ++ return false, nil ++ } else { ++ return false, err ++ } ++} +diff --git a/scripts/grub.cfg b/scripts/grub.cfg +index d10e4cf..c1a2641 100644 +--- a/scripts/grub.cfg ++++ b/scripts/grub.cfg +@@ -91,11 +91,6 @@ menuentry 'A' --class KubeOS --class gnu-linux --class gnu --class os --unrestri + insmod part_msdos + insmod ext2 + set root='hd0,msdos2' +- if [ x$feature_platform_search_hint = xy ]; then +- search --no-floppy --file --set=root --hint-bios=hd0,msdos2 --hint-efi=hd0,msdos2 --hint-baremetal=ahci0,msdos2 /boot/vmlinuz +- else +- search --no-floppy --file --set=root /boot/vmlinuz +- fi + linux /boot/vmlinuz root=/dev/sda2 ro rootfstype=ext4 nomodeset quiet oops=panic softlockup_panic=1 nmi_watchdog=1 rd.shell=0 selinux=0 crashkernel=256M panic=3 + initrd /boot/initramfs.img + } +@@ -107,11 +102,6 @@ menuentry 'B' --class KubeOS --class gnu-linux --class gnu --class os --unrestri + insmod part_msdos + insmod ext2 + set root='hd0,msdos3' +- if [ x$feature_platform_search_hint = xy ]; then +- search --no-floppy --file --set=root --hint-bios=hd0,msdos3 --hint-efi=hd0,msdos3 --hint-baremetal=ahci0,msdos3 /boot/vmlinuz +- else +- search --no-floppy --file --set=root /boot/vmlinuz +- fi + linux /boot/vmlinuz root=/dev/sda3 ro rootfstype=ext4 nomodeset quiet oops=panic softlockup_panic=1 nmi_watchdog=1 rd.shell=0 selinux=0 crashkernel=256M panic=3 + initrd /boot/initramfs.img + } +-- +2.33.0.windows.2 + diff --git a/0005-KubeOS-add-the-configuration-of-etc-resolv.conf-and-.patch b/0005-KubeOS-add-the-configuration-of-etc-resolv.conf-and-.patch new file mode 100644 index 0000000000000000000000000000000000000000..7140e9e86780e376ee4c624adfcb2ed1d4f3c33a --- /dev/null +++ b/0005-KubeOS-add-the-configuration-of-etc-resolv.conf-and-.patch @@ -0,0 +1,254 @@ +From a1bf179490d33c25dd49fe6c363eec5e0e8fe532 Mon Sep 17 00:00:00 2001 +From: liyuanr +Date: Sat, 3 Sep 2022 14:21:54 +0800 +Subject: [PATCH] KubeOS:add the configuration of /etc/resolv.conf and change + the VM disk to gpt. + +Add the user-defined /etc/resolv.conf file and change the VM disk to gpt +to be the same as that on the physical machine. + +Signed-off-by: liyuanr +--- + cmd/agent/server/docker_image.go | 3 +- + scripts/00bootup/mount.sh | 50 ++++++++++++++++++-------------- + scripts/bootloader.sh | 4 +-- + scripts/create/imageCreate.sh | 12 ++++---- + scripts/create/rootfsCreate.sh | 4 +++ + scripts/grub.cfg | 8 ++--- + 6 files changed, 45 insertions(+), 36 deletions(-) + +diff --git a/cmd/agent/server/docker_image.go b/cmd/agent/server/docker_image.go +index 4f9edc1..735ace0 100644 +--- a/cmd/agent/server/docker_image.go ++++ b/cmd/agent/server/docker_image.go +@@ -108,8 +108,7 @@ func pullOSImage(req *pb.UpdateRequest) (string, error) { + if err = os.Chmod(imagePath, imgPermission); err != nil { + return "", err + } +- _, next, err := getNextPart(partA, partB) +- if err = runCommand("mkfs.ext4", "-L", "ROOT-"+next, imagePath); err != nil { ++ if err = runCommand("mkfs.ext4", "-L", "ROOT-A", imagePath); err != nil { + return "", err + } + if err = runCommand("mount", "-o", "loop", imagePath, tmpMountPath); err != nil { +diff --git a/scripts/00bootup/mount.sh b/scripts/00bootup/mount.sh +index 1bc83ff..7f00fd6 100644 +--- a/scripts/00bootup/mount.sh ++++ b/scripts/00bootup/mount.sh +@@ -23,6 +23,14 @@ function CheckSpace() { + return 0 + } + ++function mount_proc_dev_sys() { ++ local tmp_root=$1 ++ mount -t proc none "${tmp_root}/proc" ++ mount --bind /dev "${tmp_root}/dev" ++ mount --bind /dev/pts "${tmp_root}/dev/pts" ++ mount -t sysfs none "${tmp_root}/sys" ++} ++ + function GetDisk() { + disks=(`hwinfo --disk --short 2>&1 | grep -vi "^disk" | awk '{print $1}'`) + if [ ${#disks[*]} -gt 0 ]; then +@@ -162,14 +170,13 @@ function MountRoot() { + + function MountPersist() { + echo "Mounting persist" +- mkdir /persist +- mount ${disk}4 /persist >> ${log} 2>&1 ++ mount ${disk}4 /sysroot/persist >> ${log} 2>&1 + if [ $? -ne 0 ]; then + echo "mount persist failed" | tee -a ${log} + return 1 + fi +- mkdir /persist/{var,etc,etcwork} +- mkdir -p /persist/etc/KubeOS/certs ++ mkdir /sysroot/persist/{var,etc,etcwork} ++ mkdir -p /sysroot/persist/etc/KubeOS/certs + return 0 + } + +@@ -187,20 +194,20 @@ function MountBoot() { + function GetRootfs() { + echo "Downloading rootfs..." + +- curl -o /persist/${rootfs_name} http://${server_ip}/${rootfs_name} +- if [ ! -e "/persist/${rootfs_name}" ]; then ++ curl -o /${rootfs_name} http://${server_ip}/${rootfs_name} ++ if [ ! -e "/${rootfs_name}" ]; then + echo "download rootfs failed" | tee -a ${log} + return 1 + fi + +- tar -xvf /persist/${rootfs_name} -C /sysroot ++ tar -xf /${rootfs_name} -C /sysroot + if [ $? -ne 0 ]; then + echo "decompose rootfs failed" | tee -a ${log} + return 1 + fi + +- rm -rf /persist/${rootfs_name} +- ++ rm -rf /${rootfs_name} ++ mount -o remount,ro ${disk}2 /sysroot >> ${log} 2>&1 + return 0 + } + +@@ -283,6 +290,8 @@ function Bootup_Main() { + fi + + # mount partitions ++ ++ # mount boot + echo "Mounting root..." | tee -a ${log} + MountRoot + if [ $? -ne 0 ]; then +@@ -290,15 +299,6 @@ function Bootup_Main() { + return 1 + fi + +- # mount persist +- echo "Mounting persisst..." | tee -a ${log} +- MountPersist +- if [ $? -ne 0 ]; then +- echo "Mounting persist failed" | tee -a ${log} +- return 1 +- fi +- +- # mount boot + echo "Mounting boot..." | tee -a ${log} + MountBoot + if [ $? -ne 0 ]; then +@@ -313,7 +313,7 @@ function Bootup_Main() { + echo "Downloading rootfs failed" | tee -a ${log} + return 1 + fi +- ++ mount_proc_dev_sys /sysroot + # set boot + echo "Setting boot..." | tee -a ${log} + SetBoot +@@ -321,7 +321,13 @@ function Bootup_Main() { + echo "Setting boot failed" | tee -a ${log} + return 1 + fi +- ++ # mount persist ++ echo "Mounting persist..." | tee -a ${log} ++ MountPersist ++ if [ $? -ne 0 ]; then ++ echo "Mounting persist failed" | tee -a ${log} ++ return 1 ++ fi + return 0 + } + +@@ -329,7 +335,7 @@ Bootup_Main + ret=$? + if [ ${ret} -eq 0 ]; then + echo "kubeOS install success! switch to root" | tee -a ${log} +- cp ${log} /persist ++ cp ${log} /sysroot/persist + else + echo "kubeOS install failed, see install.log" | tee -a ${log} +-fi +\ No newline at end of file ++fi +diff --git a/scripts/bootloader.sh b/scripts/bootloader.sh +index 0f906d4..5760f3d 100644 +--- a/scripts/bootloader.sh ++++ b/scripts/bootloader.sh +@@ -16,7 +16,7 @@ function install_grub2_x86 () + + # make efi file, and save in FAT16 partition, to support UEFI boot mode + cp -r /usr/lib/grub/x86_64-efi boot/efi/EFI/openEuler +- eval "grub2-mkimage -d /usr/lib/grub/x86_64-efi -O x86_64-efi --output=/boot/efi/EFI/openEuler/grubx64.efi '--prefix=(,msdos1)/EFI/openEuler' fat part_gpt part_msdos linux" ++ eval "grub2-mkimage -d /usr/lib/grub/x86_64-efi -O x86_64-efi --output=/boot/efi/EFI/openEuler/grubx64.efi '--prefix=(,gpt1)/EFI/openEuler' fat part_gpt part_msdos linux" + + mkdir -p /boot/EFI/BOOT/ + cp -f /boot/efi/EFI/openEuler/grubx64.efi /boot/efi/EFI/BOOT/BOOTX64.EFI +@@ -25,7 +25,7 @@ function install_grub2_x86 () + function install_grub2_efi () + { + cp -r /usr/lib/grub/arm64-efi /boot/efi/EFI/openEuler/ +- eval "grub2-mkimage -d /usr/lib/grub/arm64-efi -O arm64-efi --output=/boot/efi/EFI/openEuler/grubaa64.efi '--prefix=(,msdos1)/EFI/openEuler' fat part_gpt part_msdos linux" ++ eval "grub2-mkimage -d /usr/lib/grub/arm64-efi -O arm64-efi --output=/boot/efi/EFI/openEuler/grubaa64.efi '--prefix=(,gpt1)/EFI/openEuler' fat part_gpt part_msdos linux" + + mkdir -p /boot/EFI/BOOT/ + cp -f /boot/efi/EFI/openEuler/grubaa64.efi /boot/efi/EFI/BOOT/BOOTAA64.EFI +diff --git a/scripts/create/imageCreate.sh b/scripts/create/imageCreate.sh +index 9689f62..e615d5f 100644 +--- a/scripts/create/imageCreate.sh ++++ b/scripts/create/imageCreate.sh +@@ -16,12 +16,12 @@ PWD="$(pwd)" + function create_img() { + rm -f system.img update.img + qemu-img create system.img ${IMG_SIZE}G +- parted system.img -- mklabel msdos +- parted system.img -- mkpart primary fat16 1MiB 60MiB +- parted system.img -- mkpart primary ext4 60MiB 2160MiB +- parted system.img -- mkpart primary ext4 2160MiB 4260MiB +- parted system.img -- mkpart primary ext4 4260MiB 100% +- ++ parted system.img -s mklabel gpt ++ parted system.img -s mkpart primary fat32 1MiB 60MiB ++ parted system.img -s mkpart primary ext4 60MiB 2160MiB ++ parted system.img -s mkpart primary ext4 2160MiB 4260MiB ++ parted system.img -s mkpart primary ext4 4260MiB 100% ++ parted system.img -s set 1 boot on + local device=$(losetup -f) + losetup "${device}" system.img + +diff --git a/scripts/create/rootfsCreate.sh b/scripts/create/rootfsCreate.sh +index 4c02c35..29f2762 100644 +--- a/scripts/create/rootfsCreate.sh ++++ b/scripts/create/rootfsCreate.sh +@@ -46,6 +46,7 @@ function install_misc() { + local VERSION=$1 + local AGENT_PATH=$2 + local PASSWD=$3 ++ local DNS_CONF="${PWD}/resolv.conf" + cp ../files/*mount ../files/os-agent.service "${RPM_ROOT}/usr/lib/systemd/system/" + cp ../files/os-release "${RPM_ROOT}/usr/lib/" + cp "${AGENT_PATH}" "${RPM_ROOT}/usr/bin" +@@ -65,6 +66,9 @@ EOF + cp set_in_chroot.sh "${RPM_ROOT}" + ROOT_PWD="${PASSWD}" chroot "${RPM_ROOT}" bash /set_in_chroot.sh + rm "${RPM_ROOT}/set_in_chroot.sh" ++ if [ -e "${DNS_CONF}" ]; then ++ cp "${DNS_CONF}" "${RPM_ROOT}/etc/resolv.conf" ++ fi + } + + function create_os_tar_from_repo() { +diff --git a/scripts/grub.cfg b/scripts/grub.cfg +index c1a2641..984b161 100644 +--- a/scripts/grub.cfg ++++ b/scripts/grub.cfg +@@ -88,9 +88,9 @@ menuentry 'A' --class KubeOS --class gnu-linux --class gnu --class os --unrestri + load_video + set gfxpayload=keep + insmod gzio +- insmod part_msdos ++ insmod part_gpt + insmod ext2 +- set root='hd0,msdos2' ++ set root='hd0,gpt2' + linux /boot/vmlinuz root=/dev/sda2 ro rootfstype=ext4 nomodeset quiet oops=panic softlockup_panic=1 nmi_watchdog=1 rd.shell=0 selinux=0 crashkernel=256M panic=3 + initrd /boot/initramfs.img + } +@@ -99,9 +99,9 @@ menuentry 'B' --class KubeOS --class gnu-linux --class gnu --class os --unrestri + load_video + set gfxpayload=keep + insmod gzio +- insmod part_msdos ++ insmod part_gpt + insmod ext2 +- set root='hd0,msdos3' ++ set root='hd0,gpt3' + linux /boot/vmlinuz root=/dev/sda3 ro rootfstype=ext4 nomodeset quiet oops=panic softlockup_panic=1 nmi_watchdog=1 rd.shell=0 selinux=0 crashkernel=256M panic=3 + initrd /boot/initramfs.img + } +-- +2.33.0.windows.2 + diff --git a/KubeOS.spec b/KubeOS.spec index db61b0487a46f51fc7b16a2b2f3a34857a605243..706a4e1e5bf6ed6de4641247a259e8b0784e429f 100644 --- a/KubeOS.spec +++ b/KubeOS.spec @@ -1,14 +1,16 @@ # Copyright (c) Huawei Technologies Co., Ltd. 2021. All rights reserved. Name: KubeOS -Version: 1.0.1 -Release: 5 +Version: 1.0.2 +Release: 6 Summary: O&M platform used to update the whole OS as an entirety License: Mulan PSL v2 Source0: https://gitee.com/openeuler/KubeOS/repository/archive/v%{version}.tar.gz -Patch1: 0001-KubeOS-modify-checks-in-generate.sh-and-change-modul.patch -Patch2: 0002-change-generate-argument-from-isopath-to-repopath.patch -Patch3: 0003-KubeOS-add-arm-architecture-support-to-the-OS-image.patch +Patch1: 0001-Write-a-tool-to-support-KubeOS-deployment-on-physica.patch +Patch2: 0002-KubeOS-fix-the-kbimg.sh-exception-and-pxe-installati.patch +Patch3: 0003-KubeOS-fixed-the-issue-of-VMs-images-and-add-check-o.patch +Patch4: 0004-KubeOS-add-the-clearing-of-space-before-the-upgrade-.patch +Patch5: 0005-KubeOS-add-the-configuration-of-etc-resolv.conf-and-.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build BuildRequires: make BuildRequires: golang >= 1.13 @@ -17,7 +19,7 @@ This is an O&M platform used to update the whole OS as an entirety, it should be running in kubernetes environment. %prep -%autosetup -n %{name} -p1 +%autosetup -n %{name}-v%{version} -p1 %package scripts Summary: Scripts to build the os image and binaries of os-proxy and os-operator @@ -44,13 +46,28 @@ install -p -m 0500 ./bin/operator %{buildroot}/opt/kubeOS/bin #install artifacts install -d -m 0740 %{buildroot}/opt/kubeOS/scripts install -p -m 0600 ./scripts/rpmlist %{buildroot}/opt/kubeOS/scripts -install -p -m 0500 ./scripts/generate.sh %{buildroot}/opt/kubeOS/scripts +install -p -m 0500 ./scripts/kbimg.sh %{buildroot}/opt/kubeOS/scripts install -p -m 0500 ./scripts/set_in_chroot.sh %{buildroot}/opt/kubeOS/scripts install -p -m 0600 ./scripts/grub.cfg %{buildroot}/opt/kubeOS/scripts install -p -m 0500 ./scripts/bootloader.sh %{buildroot}/opt/kubeOS/scripts +install -p -m 0500 ./scripts/Dockerfile %{buildroot}/opt/kubeOS/scripts + +install -d -m 0740 %{buildroot}/opt/kubeOS/scripts/common +install -p -m 0500 ./scripts/common/globalVariables.sh %{buildroot}/opt/kubeOS/scripts/common +install -p -m 0500 ./scripts/common/log.sh %{buildroot}/opt/kubeOS/scripts/common +install -p -m 0500 ./scripts/common/utils.sh %{buildroot}/opt/kubeOS/scripts/common + +install -d -m 0740 %{buildroot}/opt/kubeOS/scripts/create +install -p -m 0500 ./scripts/create/imageCreate.sh %{buildroot}/opt/kubeOS/scripts/create +install -p -m 0500 ./scripts/create/rootfsCreate.sh %{buildroot}/opt/kubeOS/scripts/create + +install -d -m 0740 %{buildroot}/opt/kubeOS/scripts/00bootup +install -p -m 0600 ./scripts/00bootup/Global.cfg %{buildroot}/opt/kubeOS/scripts/00bootup +install -p -m 0500 ./scripts/00bootup/module-setup.sh %{buildroot}/opt/kubeOS/scripts/00bootup +install -p -m 0500 ./scripts/00bootup/mount.sh %{buildroot}/opt/kubeOS/scripts/00bootup install -d -m 0740 %{buildroot}/opt/kubeOS/files -install -p -m 0600 ./files/boot.mount %{buildroot}/opt/kubeOS/files +install -p -m 0600 ./files/boot-efi.mount %{buildroot}/opt/kubeOS/files install -p -m 0600 ./files/etc.mount %{buildroot}/opt/kubeOS/files install -p -m 0600 ./files/persist.mount %{buildroot}/opt/kubeOS/files install -p -m 0600 ./files/var.mount %{buildroot}/opt/kubeOS/files @@ -60,7 +77,7 @@ install -p -m 0600 ./files/os-release %{buildroot}/opt/kubeOS/files %files %attr(0500,root,root) /opt/kubeOS/bin/os-agent %defattr(-,root,root,0500) -%attr(0600,root,root) /opt/kubeOS/files/boot.mount +%attr(0600,root,root) /opt/kubeOS/files/boot-efi.mount %attr(0600,root,root) /opt/kubeOS/files/etc.mount %attr(0600,root,root) /opt/kubeOS/files/persist.mount %attr(0600,root,root) /opt/kubeOS/files/var.mount @@ -72,15 +89,64 @@ install -p -m 0600 ./files/os-release %{buildroot}/opt/kubeOS/files %attr(0500,root,root) /opt/kubeOS/bin/operator %defattr(-,root,root,0500) %attr(0600,root,root) /opt/kubeOS/scripts/rpmlist -%attr(0500,root,root) /opt/kubeOS/scripts/generate.sh +%attr(0500,root,root) /opt/kubeOS/scripts/kbimg.sh %attr(0500,root,root) /opt/kubeOS/scripts/set_in_chroot.sh %attr(0600,root,root) /opt/kubeOS/scripts/grub.cfg %attr(0500,root,root) /opt/kubeOS/scripts/bootloader.sh +%attr(0500,root,root) /opt/kubeOS/scripts/Dockerfile + +%attr(0500,root,root) /opt/kubeOS/scripts/common/globalVariables.sh +%attr(0500,root,root) /opt/kubeOS/scripts/common/log.sh +%attr(0500,root,root) /opt/kubeOS/scripts/common/utils.sh + +%attr(0500,root,root) /opt/kubeOS/scripts/create/imageCreate.sh +%attr(0500,root,root) /opt/kubeOS/scripts/create/rootfsCreate.sh + +%attr(0600,root,root) /opt/kubeOS/scripts/00bootup/Global.cfg +%attr(0500,root,root) /opt/kubeOS/scripts/00bootup/module-setup.sh +%attr(0500,root,root) /opt/kubeOS/scripts/00bootup/mount.sh + %clean rm -rfv %{buildroot} %changelog +* Sat Sep 03 2022 liyuanrong - 1.0.2-6 +- Type:requirement +- CVE:NA +- SUG:restart +- DESC:add the configuration of /etc/resolv.conf and change the VM disk to gpt. + +* Wed Aug 31 2022 liyuanrong - 1.0.2-5 +- Type:requirement +- CVE:NA +- SUG:restart +- DESC:add the clearing of space before the upgrade and rectifying the rollback failure. + +* Mon Aug 29 2022 liyuanrong - 1.0.2-4 +- Type:requirement +- CVE:NA +- SUG:restart +- DESC:fixed the issue of VMs images and add check of Global.cfg. + +* Tue Aug 23 2022 liyuanrong - 1.0.2-3 +- Type:requirement +- CVE:NA +- SUG:restart +- DESC:fix the kbimg.sh exception and pxe installation + +* Fri Aug 05 2022 liyuanrong - 1.0.2-2 +- Type:requirement +- CVE:NA +- SUG:restart +- DESC:update to 1.0.2-2 + +* Tue Aug 02 2022 liyuanrong - 1.0.1-8 +- Type:requirement +- CVE:NA +- SUG:restart +- DESC:update to 1.0.1-8 + * Fri Dec 17 2021 liyuanrong - 1.0.1-5 - Type:requirement - CVE:NA diff --git a/v1.0.1.tar.gz b/v1.0.2.tar.gz similarity index 45% rename from v1.0.1.tar.gz rename to v1.0.2.tar.gz index 5d7622fcac64a21d8a908421952161d8f85935a8..941b5670b3d71931ec3b151323432bdefed68684 100644 Binary files a/v1.0.1.tar.gz and b/v1.0.2.tar.gz differ