Use the tool to create a new centos-7 initramfs image with one command.
and we also can customize the pre-installed software by configuring
./bin/install-list.
---
container/osimage/centos-7/README.md | 13 +++++++
container/osimage/centos-7/bin/create-image | 38 +++++++++++++++++++++
container/osimage/centos-7/bin/delete-list | 8 +++++
container/osimage/centos-7/bin/install-list | 2 ++
container/osimage/centos-7/bin/lib | 30 ++++++++++++++++
container/osimage/centos-7/build | 29 ++++++++++++++++
6 files changed, 120 insertions(+)
create mode 100644 container/osimage/centos-7/README.md
create mode 100755 container/osimage/centos-7/bin/create-image
create mode 100644 container/osimage/centos-7/bin/delete-list
create mode 100644 container/osimage/centos-7/bin/install-list
create mode 100755 container/osimage/centos-7/bin/lib
create mode 100755 container/osimage/centos-7/build
diff --git a/container/osimage/centos-7/README.md b/container/osimage/centos-7/README.md
new file mode 100644
index 0000000..2c2f956
--- /dev/null
+++ b/container/osimage/centos-7/README.md
@@ -0,0 +1,13 @@
+# Use the tool to create a new centos-7 initramfs image.
+
+Usage:
+ cd ${CCI_SRC/rootfs/initramfs/centos/aarch64/7}
+ ./build
+
+Some configuration items:
+./bin/install-list
+ If you want to pre-install the software, you can write the package names in ./bin/install-list.
+
+./bin/delete-list
+ If you want remove some unnecessary files, you can write the names in ./bin/delete-list
+
diff --git a/container/osimage/centos-7/bin/create-image b/container/osimage/centos-7/bin/create-image
new file mode 100755
index 0000000..ad51986
--- /dev/null
+++ b/container/osimage/centos-7/bin/create-image
@@ -0,0 +1,38 @@
+#!/bin/bash
+# SPDX-License-Identifier: MulanPSL-2.0+
+# Copyright (c) 2020 Huawei Technologies Co., Ltd. All rights reserved.
+
+# Configure rootfs
+make_rootfs()
+{
+ yum repolist
+ yum -y install --skip-broken $(</root/bin/install-list)
+ yum clean all
+ rm -rf $(</root/bin/delete-list)
+ ln -fs /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
+ cd /root/modules
+ zcat modules-5.8.0.1.cgz | cpio -idm
+}
+
+# Config password
+pre_config_rootfs() {
+ [ -n "$ROOT_NEW_PASSWD" ] && {
+ echo "Changing root password"
+ passwd_md5=$(openssl passwd -1 "$ROOT_NEW_PASSWD")
+ sed -i -r "s/^root:[^:]*:(.*)/root:${passwd_md5//\//\\/}:\1/" "$ROOTFS_DIR/etc/shadow" # Change the password in shadow
+ sed -i 's/[# ]PermitRootLogin.*/PermitRootLogin yes/' "$ROOTFS_DIR/etc/ssh/sshd_config" # Configure ssh service
+ }
+}
+
+# Pack cgz package
+pack_cgz()
+{
+ echo "Packing package. Please wait."
+ cd /
+ find ./ ! -path "./${image_name}" ! -path "./root/modules/modules-5.8.0.1.cgz" | cpio -o -Hnewc | gzip -9 > /${image_name}
+ chmod 644 /${image_name}
+}
+
+make_rootfs
+pre_config_rootfs
+pack_cgz
diff --git a/container/osimage/centos-7/bin/delete-list b/container/osimage/centos-7/bin/delete-list
new file mode 100644
index 0000000..ce079b9
--- /dev/null
+++ b/container/osimage/centos-7/bin/delete-list
@@ -0,0 +1,8 @@
+/.dockerenv
+/lib/modules
+/usr/share/doc
+/usr/share/man
+/usr/share/info
+/usr/share/i18n
+/usr/share/locale
+/usr/share/terminfo
diff --git a/container/osimage/centos-7/bin/install-list b/container/osimage/centos-7/bin/install-list
new file mode 100644
index 0000000..5d31c40
--- /dev/null
+++ b/container/osimage/centos-7/bin/install-list
@@ -0,0 +1,2 @@
+openssh-server
+openssl
diff --git a/container/osimage/centos-7/bin/lib b/container/osimage/centos-7/bin/lib
new file mode 100755
index 0000000..c3c470f
--- /dev/null
+++ b/container/osimage/centos-7/bin/lib
@@ -0,0 +1,30 @@
+#!/bin/bash
+# SPDX-License-Identifier: MulanPSL-2.0+
+# Copyright (c) 2020 Huawei Technologies Co., Ltd. All rights reserved.
+
+DIR="$(basename $(dirname $(realpath $0)))"
+name="$(echo $DIR |awk -F "-" '{print $1}')"
+version="$(echo $DIR |awk -F "-" '{print $2}')"
+image="${name}:${version}"
+image_name="${name}-${version}-$(date +"%Y%m%d").cgz"
+
+# Check password file
+check_passwd_file() {
+ root_pwd_file="$HOME/.config/compass-ci/rootfs.passwd"
+ export ROOT_NEW_PASSWD=
+ [ -f "$root_pwd_file" ] || {
+ echo "[INFO] Please set the password file."
+ echo "$HOME/.config/compass-ci/rootfs.passwd"
+ exit 1
+ }
+
+ export ROOT_NEW_PASSWD=$(cat "$root_pwd_file")
+}
+
+# Pull docker image
+pull_docker()
+{
+ docker pull $image || return
+ echo "finish downloading image"
+}
+
diff --git a/container/osimage/centos-7/build b/container/osimage/centos-7/build
new file mode 100755
index 0000000..5e46306
--- /dev/null
+++ b/container/osimage/centos-7/build
@@ -0,0 +1,29 @@
+#!/bin/bash
+# SPDX-License-Identifier: MulanPSL-2.0+
+# Copyright (c) 2020 Huawei Technologies Co., Ltd. All rights reserved.
+
+. ${CCI_SRC}/container/osimage/centos-7/bin/lib
+. ${CCI_SRC}/container/defconfig.sh
+
+check_passwd_file "$root_pwd_file"
+
+DIR=$(dirname $(realpath $0))
+cmd=(
+ docker run
+ --name init_docker
+ -v $DIR/bin/:/root/bin
+ -v /srv/initrd/modules/:/root/modules:ro
+ -e ROOT_NEW_PASSWD=$ROOT_NEW_PASSWD
+ -e image_name=$image_name
+ $image
+ /root/bin/create-image
+)
+
+pull_docker
+
+docker_rm init_docker
+${cmd[@]}
+
+docker cp -a init_docker:/${image_name} ./
+echo "build finished!!!"
+
--
2.23.0