Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Docker Build Images
raspbian-base
Commits
437bad26
Commit
437bad26
authored
Nov 26, 2018
by
Markus Frosch
Browse files
Split to stretch branch
parent
ab63d388
Pipeline
#3004
passed with stage
in 5 minutes and 14 seconds
Changes
7
Pipelines
1
Show whitespace changes
Inline
Side-by-side
Makefile
View file @
437bad26
REPO
:=
raspbian-base
IMAGE_PREFIX
:=
${DOCKER_IMAGE_PREFIX}
ifeq
($(IMAGE_PREFIX),)
IMAGE_PREFIX
:=
icinga/
$(REPO)
/
IMAGE_PREFIX
:=
icinga/
raspbian-base
/
endif
REGISTRY
:=
${DOCKER_REGISTRY}
...
...
@@ -10,18 +8,16 @@ ifneq ($(REGISTRY),)
IMAGE_PREFIX
:=
$(REGISTRY)
/
$(IMAGE_PREFIX)
endif
VERSION
:=
stretch
IMAGE
:=
$(IMAGE_PREFIX)$(VERSION)
IMAGE
:=
$(IMAGE_PREFIX)${CI_COMMIT_REF_NAME}
.PHONY
:
all tarball clean
all
:
build
tarball
:
rootfs.tar.xz
rootfs.tar.xz
:
$(MAKE)
-C
debootstrap build tarball
mv
debootstrap/rootfs.tar.xz ./
TARBALL
=
"
$@
.tmp"
./make-image.sh
mv
"
$@
.tmp"
"
$@
"
build
:
tarball
docker build
--tag
"
$(IMAGE)
"
.
...
...
@@ -30,6 +26,5 @@ push:
docker push
"
$(IMAGE)
"
clean
:
$(MAKE)
-C
debootstrap clean
rm
-f
*
.tar
*
if
(
docker inspect
--type
image
"
$(IMAGE)
"
>
/dev/null 2>&1
)
;
then
docker rmi
"
$(IMAGE)
"
;
fi
debootstrap/Dockerfile
deleted
100644 → 0
View file @
ab63d388
FROM
debian:stretch-slim
RUN
apt-get update
\
&&
apt-get
install
-y
debootstrap xz-utils
tar
\
&&
rm
-rf
/var/lib/apt/lists/
*
COPY
debootstrap.sh /usr/local/sbin/
COPY
script-raspbian /usr/share/debootstrap/scripts/raspbian
COPY
qemu-arm-static /usr/bin/qemu-arm-static
CMD
["debootstrap.sh"]
debootstrap/Makefile
deleted
100644 → 0
View file @
ab63d388
REPO
:=
raspbian-base
IMAGE_PREFIX
:=
${DOCKER_IMAGE_PREFIX}
ifeq
($(IMAGE_PREFIX),)
IMAGE_PREFIX
:=
icinga/
$(REPO)
/
endif
REGISTRY
:=
${DOCKER_REGISTRY}
ifneq
($(REGISTRY),)
IMAGE_PREFIX
:=
$(REGISTRY)
/
$(IMAGE_PREFIX)
endif
FROM
:=
$(
shell
grep
FROM Dockerfile |
cut
-d
" "
-f2
)
VERSION
:=
debootstrap
IMAGE
:=
$(IMAGE_PREFIX)$(VERSION)
.PHONY
:
all clean build tarball
all
:
pull build tarball
pull
:
docker pull
"
$(IMAGE)
"
||
true
docker pull
"
$(FROM)
"
build
:
cp
-av
/usr/bin/qemu-arm-static .
docker build
--cache-from
"
$(IMAGE)
"
--tag
"
$(IMAGE)
"
.
tarball
:
rootfs.tar.xz
rootfs.tar.xz
:
TARBALL
=
"
$@
.tmp"
./make-image.sh
mv
"
$@
.tmp"
"
$@
"
push
:
docker push
"
$(IMAGE)
"
clean
:
rm
-f
*
.tar
*
if
(
docker inspect
--type
image
"
$(IMAGE)
"
>
/dev/null 2>&1
)
;
then
docker rmi
"
$(IMAGE)
"
;
fi
debootstrap/debootstrap.sh
deleted
100755 → 0
View file @
ab63d388
#!/bin/sh
:
"
${
DIST
:
=stretch
}
"
:
"
${
VARIANT
:
=minbase
}
"
:
"
${
ARCH
:
=armhf
}
"
:
"
${
TARGET
:
=/image
}
"
:
"
${
GPGKEY
:
=A0DA38D0D76E8B5D638872819165938D90FDDD2E
}
"
:
"
${
KEYSERVER
:
=keyserver.ubuntu.com
}
"
:
"
${
MIRROR
:
=http
://mirrordirector.raspbian.org/raspbian
}
"
:
"
${
SCRIPT
:
=/usr/share/debootstrap/scripts/raspbian
}
"
:
"
${
TARBALL
:
=rootfs.tar.xz
}
"
set
-exu
gpg
--no-tty
--keyserver
"
$KEYSERVER
"
--recv-key
"
$GPGKEY
"
umount
-R
"
${
TARGET
:?
}
/proc"
||
true
umount
-R
"
${
TARGET
:?
}
/sys"
||
true
umount
-R
"
${
TARGET
:?
}
/dev"
||
true
rm
-rf
"
${
TARGET
:?
}
"
rm
-f
"
${
TARBALL
}
"
if
!
debootstrap
\
--variant
=
"
$VARIANT
"
\
--arch
=
"
$ARCH
"
\
--keyring
=
"
$HOME
"
/.gnupg/pubring.kbx
\
"
$@
"
\
"
$DIST
"
\
"
$TARGET
"
\
"
$MIRROR
"
\
"
$SCRIPT
"
then
tail
-n
100
"
${
TARGET
:?
}
"
/debootstrap/debootstrap.log
exit
1
fi
umount
-R
"
${
TARGET
:?
}
/proc"
||
true
umount
-R
"
${
TARGET
:?
}
/sys"
||
true
umount
-R
"
${
TARGET
:?
}
/dev"
||
true
rm
-rf
"
${
TARGET
:?
}
"
/var/lib/apt/lists/
*
rm
-rf
"
${
TARGET
:?
}
"
/var/cache/apt/archives/
*
tar
-C
"
${
TARGET
:?
}
"
-Jcvf
"
${
TARBALL
}
"
.
debootstrap/script-raspbian
deleted
100644 → 0
View file @
ab63d388
mirror_style release
download_style apt
finddebs_style from-indices
variants - buildd fakechroot minbase
keyring /usr/share/keyrings/debian-archive-keyring.gpg
ignore_packages="udev dmsetup systemd mountall pinentry-curses procps"
if doing_variant fakechroot; then
test "$FAKECHROOT" = "true" || error 1 FAKECHROOTREQ "This variant requires fakechroot environment to be started"
fi
case $ARCH in
alpha|ia64) LIBC="libc6.1" ;;
kfreebsd-*) LIBC="libc0.1" ;;
hurd-*) LIBC="libc0.3" ;;
*) LIBC="libc6" ;;
esac
work_out_debs () {
required="$(get_debs Priority: required)"
# remove some packages for Docker
required="$(without "$required" "$ignore_packages")"
if doing_variant - || doing_variant fakechroot; then
#required="$required $(get_debs Priority: important)"
# ^^ should be getting debconf here somehow maybe
base="$(get_debs Priority: important)"
elif doing_variant buildd; then
base="apt build-essential"
elif doing_variant minbase; then
base="apt"
fi
if doing_variant fakechroot; then
# ldd.fake needs binutils
required="$required binutils"
fi
case $MIRRORS in
https://*)
base="$base apt-transport-https ca-certificates"
;;
esac
}
first_stage_install () {
case "$CODENAME" in
etch|etch-m68k|jessie|jessie-kfreebsd|lenny|squeeze|wheezy) ;;
*)
EXTRACT_DEB_TAR_OPTIONS="$EXTRACT_DEB_TAR_OPTIONS -k"
setup_merged_usr
;;
esac
extract $required
mkdir -p "$TARGET/var/lib/dpkg"
: >"$TARGET/var/lib/dpkg/status"
: >"$TARGET/var/lib/dpkg/available"
setup_etc
if [ ! -e "$TARGET/etc/fstab" ]; then
echo '# UNCONFIGURED FSTAB FOR BASE SYSTEM' > "$TARGET/etc/fstab"
chown 0:0 "$TARGET/etc/fstab"; chmod 644 "$TARGET/etc/fstab"
fi
setup_devices
}
second_stage_install () {
setup_dynamic_devices
if [ -x /usr/bin/qemu-arm-static ]; then
cp -a /usr/bin/qemu-arm-static "$TARGET/usr/bin/qemu-arm-static"
else
echo "No qemu-arm-static found!" >&2
exit 1
fi
x_feign_install () {
local pkg="$1"
local deb="$(debfor $pkg)"
local ver="$(in_target dpkg-deb -f "$deb" Version)"
mkdir -p "$TARGET/var/lib/dpkg/info"
echo \
"Package: $pkg
Version: $ver
Maintainer: unknown
Status: install ok installed" >> "$TARGET/var/lib/dpkg/status"
touch "$TARGET/var/lib/dpkg/info/${pkg}.list"
}
x_feign_install dpkg
x_core_install () {
smallyes '' | in_target dpkg --force-depends --install $(debfor "$@")
}
p () {
baseprog="$(($baseprog + ${1:-1}))"
}
if doing_variant fakechroot; then
setup_proc_fakechroot
else
setup_proc
in_target /sbin/ldconfig
fi
DEBIAN_FRONTEND=noninteractive
DEBCONF_NONINTERACTIVE_SEEN=true
export DEBIAN_FRONTEND DEBCONF_NONINTERACTIVE_SEEN
baseprog=0
bases=7
p; progress $baseprog $bases INSTCORE "Installing core packages" #1
info INSTCORE "Installing core packages..."
p; progress $baseprog $bases INSTCORE "Installing core packages" #2
ln -sf mawk "$TARGET/usr/bin/awk"
x_core_install base-passwd
x_core_install base-files
p; progress $baseprog $bases INSTCORE "Installing core packages" #3
x_core_install dpkg
if [ ! -e "$TARGET/etc/localtime" ]; then
ln -sf /usr/share/zoneinfo/UTC "$TARGET/etc/localtime"
fi
if doing_variant fakechroot; then
install_fakechroot_tools
fi
p; progress $baseprog $bases INSTCORE "Installing core packages" #4
x_core_install $LIBC
p; progress $baseprog $bases INSTCORE "Installing core packages" #5
x_core_install perl-base
p; progress $baseprog $bases INSTCORE "Installing core packages" #6
rm "$TARGET/usr/bin/awk"
x_core_install mawk
p; progress $baseprog $bases INSTCORE "Installing core packages" #7
if doing_variant -; then
x_core_install debconf
fi
baseprog=0
bases=$(set -- $required; echo $#)
info UNPACKREQ "Unpacking required packages..."
exec 7>&1
smallyes '' |
(repeatn 5 in_target_failmsg UNPACK_REQ_FAIL_FIVE "Failure while unpacking required packages. This will be attempted up to five times." "" \
dpkg --status-fd 8 --force-depends --unpack $(debfor $required) 8>&1 1>&7 || echo EXITCODE $?) |
dpkg_progress $baseprog $bases UNPACKREQ "Unpacking required packages" UNPACKING
info CONFREQ "Configuring required packages..."
echo \
"#!/bin/sh
exit 101" > "$TARGET/usr/sbin/policy-rc.d"
chmod 755 "$TARGET/usr/sbin/policy-rc.d"
mv "$TARGET/sbin/start-stop-daemon" "$TARGET/sbin/start-stop-daemon.REAL"
echo \
"#!/bin/sh
echo
echo \"Warning: Fake start-stop-daemon called, doing nothing\"" > "$TARGET/sbin/start-stop-daemon"
chmod 755 "$TARGET/sbin/start-stop-daemon"
setup_dselect_method apt
smallyes '' |
(in_target_failmsg CONF_REQ_FAIL "Failure while configuring required packages." "" \
dpkg --status-fd 8 --configure --pending --force-configure-any --force-depends 8>&1 1>&7 || echo EXITCODE $?) |
dpkg_progress $baseprog $bases CONFREQ "Configuring required packages" CONFIGURING
baseprog=0
bases="$(set -- $base; echo $#)"
info UNPACKBASE "Unpacking the base system..."
setup_available $required $base
done_predeps=
while predep=$(get_next_predep); do
# We have to resolve dependencies of pre-dependencies manually because
# dpkg --predep-package doesn't handle this.
predep=$(without "$(without "$(resolve_deps $predep)" "$required")" "$done_predeps")
# XXX: progress is tricky due to how dpkg_progress works
# -- cjwatson 2009-07-29
p; smallyes '' |
in_target dpkg --force-overwrite --force-confold --skip-same-version --install $(debfor $predep)
base=$(without "$base" "$predep")
done_predeps="$done_predeps $predep"
done
if [ -n "$base" ]; then
smallyes '' |
(repeatn 5 in_target_failmsg INST_BASE_FAIL_FIVE "Failure while installing base packages. This will be re-attempted up to five times." "" \
dpkg --status-fd 8 --force-overwrite --force-confold --skip-same-version --unpack $(debfor $base) 8>&1 1>&7 || echo EXITCODE $?) |
dpkg_progress $baseprog $bases UNPACKBASE "Unpacking base system" UNPACKING
info CONFBASE "Configuring the base system..."
smallyes '' |
(repeatn 5 in_target_failmsg CONF_BASE_FAIL_FIVE "Failure while configuring base packages. This will be re-attempted up to five times." "" \
dpkg --status-fd 8 --force-confold --skip-same-version --configure -a 8>&1 1>&7 || echo EXITCODE $?) |
dpkg_progress $baseprog $bases CONFBASE "Configuring base system" CONFIGURING
fi
mv "$TARGET/sbin/start-stop-daemon.REAL" "$TARGET/sbin/start-stop-daemon"
rm -f "$TARGET/usr/sbin/policy-rc.d"
# cleanup ARM virt
rm -f "$TARGET/usr/bin/qemu-arm-static"
progress $bases $bases CONFBASE "Configuring base system"
info BASESUCCESS "Base system installed successfully."
}
debootstrap/script-sid
deleted
100644 → 0
View file @
ab63d388
mirror_style release
download_style apt
finddebs_style from-indices
variants - buildd fakechroot minbase
keyring /usr/share/keyrings/debian-archive-keyring.gpg
if doing_variant fakechroot; then
test "$FAKECHROOT" = "true" || error 1 FAKECHROOTREQ "This variant requires fakechroot environment to be started"
fi
case $ARCH in
alpha|ia64) LIBC="libc6.1" ;;
kfreebsd-*) LIBC="libc0.1" ;;
hurd-*) LIBC="libc0.3" ;;
*) LIBC="libc6" ;;
esac
work_out_debs () {
required="$(get_debs Priority: required)"
if doing_variant - || doing_variant fakechroot; then
#required="$required $(get_debs Priority: important)"
# ^^ should be getting debconf here somehow maybe
base="$(get_debs Priority: important)"
elif doing_variant buildd; then
base="apt build-essential"
elif doing_variant minbase; then
base="apt"
fi
if doing_variant fakechroot; then
# ldd.fake needs binutils
required="$required binutils"
fi
case $MIRRORS in
https://*)
base="$base apt-transport-https ca-certificates"
;;
esac
}
first_stage_install () {
case "$CODENAME" in
etch|etch-m68k|jessie|jessie-kfreebsd|lenny|squeeze|wheezy) ;;
*)
EXTRACT_DEB_TAR_OPTIONS="$EXTRACT_DEB_TAR_OPTIONS -k"
setup_merged_usr
;;
esac
extract $required
mkdir -p "$TARGET/var/lib/dpkg"
: >"$TARGET/var/lib/dpkg/status"
: >"$TARGET/var/lib/dpkg/available"
setup_etc
if [ ! -e "$TARGET/etc/fstab" ]; then
echo '# UNCONFIGURED FSTAB FOR BASE SYSTEM' > "$TARGET/etc/fstab"
chown 0:0 "$TARGET/etc/fstab"; chmod 644 "$TARGET/etc/fstab"
fi
setup_devices
}
second_stage_install () {
setup_dynamic_devices
x_feign_install () {
local pkg="$1"
local deb="$(debfor $pkg)"
local ver="$(in_target dpkg-deb -f "$deb" Version)"
mkdir -p "$TARGET/var/lib/dpkg/info"
echo \
"Package: $pkg
Version: $ver
Maintainer: unknown
Status: install ok installed" >> "$TARGET/var/lib/dpkg/status"
touch "$TARGET/var/lib/dpkg/info/${pkg}.list"
}
x_feign_install dpkg
x_core_install () {
smallyes '' | in_target dpkg --force-depends --install $(debfor "$@")
}
p () {
baseprog="$(($baseprog + ${1:-1}))"
}
if doing_variant fakechroot; then
setup_proc_fakechroot
else
setup_proc
in_target /sbin/ldconfig
fi
DEBIAN_FRONTEND=noninteractive
DEBCONF_NONINTERACTIVE_SEEN=true
export DEBIAN_FRONTEND DEBCONF_NONINTERACTIVE_SEEN
baseprog=0
bases=7
p; progress $baseprog $bases INSTCORE "Installing core packages" #1
info INSTCORE "Installing core packages..."
p; progress $baseprog $bases INSTCORE "Installing core packages" #2
ln -sf mawk "$TARGET/usr/bin/awk"
x_core_install base-passwd
x_core_install base-files
p; progress $baseprog $bases INSTCORE "Installing core packages" #3
x_core_install dpkg
if [ ! -e "$TARGET/etc/localtime" ]; then
ln -sf /usr/share/zoneinfo/UTC "$TARGET/etc/localtime"
fi
if doing_variant fakechroot; then
install_fakechroot_tools
fi
p; progress $baseprog $bases INSTCORE "Installing core packages" #4
x_core_install $LIBC
p; progress $baseprog $bases INSTCORE "Installing core packages" #5
x_core_install perl-base
p; progress $baseprog $bases INSTCORE "Installing core packages" #6
rm "$TARGET/usr/bin/awk"
x_core_install mawk
p; progress $baseprog $bases INSTCORE "Installing core packages" #7
if doing_variant -; then
x_core_install debconf
fi
baseprog=0
bases=$(set -- $required; echo $#)
info UNPACKREQ "Unpacking required packages..."
exec 7>&1
smallyes '' |
(repeatn 5 in_target_failmsg UNPACK_REQ_FAIL_FIVE "Failure while unpacking required packages. This will be attempted up to five times." "" \
dpkg --status-fd 8 --force-depends --unpack $(debfor $required) 8>&1 1>&7 || echo EXITCODE $?) |
dpkg_progress $baseprog $bases UNPACKREQ "Unpacking required packages" UNPACKING
info CONFREQ "Configuring required packages..."
echo \
"#!/bin/sh
exit 101" > "$TARGET/usr/sbin/policy-rc.d"
chmod 755 "$TARGET/usr/sbin/policy-rc.d"
mv "$TARGET/sbin/start-stop-daemon" "$TARGET/sbin/start-stop-daemon.REAL"
echo \
"#!/bin/sh
echo
echo \"Warning: Fake start-stop-daemon called, doing nothing\"" > "$TARGET/sbin/start-stop-daemon"
chmod 755 "$TARGET/sbin/start-stop-daemon"
setup_dselect_method apt
smallyes '' |
(in_target_failmsg CONF_REQ_FAIL "Failure while configuring required packages." "" \
dpkg --status-fd 8 --configure --pending --force-configure-any --force-depends 8>&1 1>&7 || echo EXITCODE $?) |
dpkg_progress $baseprog $bases CONFREQ "Configuring required packages" CONFIGURING
baseprog=0
bases="$(set -- $base; echo $#)"
info UNPACKBASE "Unpacking the base system..."
setup_available $required $base
done_predeps=
while predep=$(get_next_predep); do
# We have to resolve dependencies of pre-dependencies manually because
# dpkg --predep-package doesn't handle this.
predep=$(without "$(without "$(resolve_deps $predep)" "$required")" "$done_predeps")
# XXX: progress is tricky due to how dpkg_progress works
# -- cjwatson 2009-07-29
p; smallyes '' |
in_target dpkg --force-overwrite --force-confold --skip-same-version --install $(debfor $predep)
base=$(without "$base" "$predep")
done_predeps="$done_predeps $predep"
done
if [ -n "$base" ]; then
smallyes '' |
(repeatn 5 in_target_failmsg INST_BASE_FAIL_FIVE "Failure while installing base packages. This will be re-attempted up to five times." "" \
dpkg --status-fd 8 --force-overwrite --force-confold --skip-same-version --unpack $(debfor $base) 8>&1 1>&7 || echo EXITCODE $?) |
dpkg_progress $baseprog $bases UNPACKBASE "Unpacking base system" UNPACKING
info CONFBASE "Configuring the base system..."
smallyes '' |
(repeatn 5 in_target_failmsg CONF_BASE_FAIL_FIVE "Failure while configuring base packages. This will be re-attempted up to five times." "" \
dpkg --status-fd 8 --force-confold --skip-same-version --configure -a 8>&1 1>&7 || echo EXITCODE $?) |
dpkg_progress $baseprog $bases CONFBASE "Configuring base system" CONFIGURING
fi
mv "$TARGET/sbin/start-stop-daemon.REAL" "$TARGET/sbin/start-stop-daemon"
rm -f "$TARGET/usr/sbin/policy-rc.d"
progress $bases $bases CONFBASE "Configuring base system"
info BASESUCCESS "Base system installed successfully."
}
debootstrap/
make-image.sh
→
make-image.sh
View file @
437bad26
File moved
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment