Skip to content

Commit 4999a74

Browse files
committed
build opensuse with pre-generated images
1 parent a7862e2 commit 4999a74

File tree

1 file changed

+55
-3
lines changed

1 file changed

+55
-3
lines changed

oscfg/opensuse.sh

Lines changed: 55 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,12 +39,17 @@ opensuse_distro() {
3939
esac
4040
run zypper -n --root /new-root ar -f $DLURL$REPO repo-oss
4141
run zypper -n --root /new-root ar -f $DLURL$UPDATEREPO repo-oss-update
42-
mkdir "$WORK/new-root/dev"
42+
mkdir "$WORK/new-root/dev" "$WORK/new-root/proc"
4343
mknod -m 600 "$WORK/new-root/dev/console" c 5 1
4444
mknod -m 666 "$WORK/new-root/dev/null" c 1 3
4545
mknod -m 666 "$WORK/new-root/dev/zero" c 1 5
46-
run zypper -n --root /new-root --gpg-auto-import-keys refresh
47-
run zypper -n --root /new-root install rpm zypper wget
46+
# following 2 lines needed for tumbleweed ca-certificates
47+
ln -s /proc/self/fd "$WORK/new-root/dev/fd"
48+
mount -t proc proc "$WORK/new-root/proc"
49+
run zypper -n --root /new-root --gpg-auto-import-keys ref
50+
run zypper -n --root /new-root install --download in-advance -t pattern base basesystem enhanced_base
51+
run zypper -n --root /new-root install --download in-advance ca-certificates ca-certificates-mozilla
52+
umount "$WORK/new-root/proc"
4853

4954
echo "Generating opensuse-$DISTRO-dockerbase.tar.xz"
5055
tar cJf "opensuse-$DISTRO-dockerbase-$DATE.tar.xz" -C "$WORK/new-root" .
@@ -79,6 +84,27 @@ opensuse_distro() {
7984
# make sudo available without password (default for key auth)
8085
echo "%shellsuser ALL=(ALL) NOPASSWD: ALL" > "$WORK/etc/sudoers.d/01-shells" && chmod 440 "$WORK/etc/sudoers.d/01-shells"
8186
;;
87+
*-desktop)
88+
# for example: opensuse-leap-gnome-desktop
89+
opensuse_prepare "$DISTRO"
90+
91+
# install what we need
92+
run zypper -n install --download in-advance --auto-agree-with-licenses -t pattern fonts x11 imaging multimedia sw_management $PATTERN
93+
run zypper -n install --download in-advance NetworkManager spice-vdagent
94+
95+
# we get a cloud-firstboot
96+
run systemctl mask systemd-firstboot
97+
98+
# ensure networkmanager is enabled and not systemd-networkd
99+
run systemctl disable wicked
100+
run systemctl enable NetworkManager NetworkManager-wait-online
101+
run systemctl enable sshd
102+
103+
# make sudo available without password (default for key auth)
104+
echo "%shellsuser ALL=(ALL) NOPASSWD: ALL" > "$WORK/etc/sudoers.d/01-shells" && chmod 440 "$WORK/etc/sudoers.d/01-shells"
105+
106+
opensuse_cfg "$DISTRO" "$PATTERN"
107+
;;
82108
*)
83109
# start from base
84110
if [ ! -f "opensuse-$DISTRO-base.qcow2" ]; then
@@ -95,6 +121,32 @@ opensuse_distro() {
95121
esac
96122
}
97123

124+
opensuse_prepare() {
125+
# download opensuse image, either tumbleweed or leap
126+
case "$1" in
127+
tumbleweed)
128+
getfile opensuse-tumbleweed-dockerbase-20210403.tar.xz e06f5971b490b50e70ffbdef94ce7dc4a3e4c0076fbd9b098900a9b30caa3cef
129+
prepare opensuse-tumbleweed-dockerbase-20210403.tar.xz
130+
;;
131+
leap)
132+
getfile opensuse-leap-dockerbase-20210403.tar.xz 3660e147c0b786247e60395596f1460574c08b2ed410a8a01b93cbea7c5767df
133+
prepare opensuse-leap-dockerbase-20210403.tar.xz
134+
;;
135+
*)
136+
echo "Unsupported openSUSE distro ($DISTRO). Supported are tumbleweed and leap!"
137+
exit 1
138+
;;
139+
esac
140+
141+
# configure resolver
142+
echo 'nameserver 8.8.8.8' >"$WORK/run/netconfig/resolv.conf"
143+
echo 'nameserver 8.8.4.4' >>"$WORK/run/netconfig/resolv.conf"
144+
145+
# refresh/update
146+
run zypper -n ref
147+
run zypper -n dup
148+
}
149+
98150
opensuse_cfg() {
99151
local DISTRO=$1
100152
local DESKTOP=$2

0 commit comments

Comments
 (0)