Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add debian and devuan images #12

Merged
merged 2 commits into from
Oct 5, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
77 changes: 76 additions & 1 deletion .github/workflows/build.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ jobs:
release_name: Release ${{ steps.build_tag.outputs.tag }}
draft: false
prerelease: false

ubuntu:
needs: prepare
strategy:
Expand All @@ -50,7 +51,7 @@ jobs:
tag=release:$$
docker build --tag $tag --build-arg UBUNTU_RELEASE=${{ matrix.RELEASE }} .
container=$(docker create $tag)
docker cp $container:. - > $tar
docker cp $container:. - > $tar
docker rm $container
docker rmi $tag
xz $tar
Expand All @@ -65,6 +66,80 @@ jobs:
asset_name: lx-ubuntu-${{ matrix.RELEASE }}-${{ needs.prepare.outputs.tag }}.tar.xz
asset_content_type: application/x-xz

debian:
needs: prepare
strategy:
matrix:
RELEASE:
- buster

name: Build Debian ${{ matrix.RELEASE }}
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2

- name: Build Image
id: build_image
run: |
set -xe
cd debian
tar=lx-debian-${{ matrix.RELEASE }}.tar
tag=release:$$
docker build --tag $tag --build-arg DEBIAN_RELEASE=${{ matrix.RELEASE }} .
container=$(docker create $tag)
docker cp $container:. - > $tar
docker rm $container
docker rmi $tag
xz $tar
- name: Upload Release Asset
id: upload_release_asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ needs.prepare.outputs.upload_url }}
asset_path: ./debian/lx-debian-${{ matrix.RELEASE }}.tar.xz
asset_name: lx-debian-${{ matrix.RELEASE }}-${{ needs.prepare.outputs.tag }}.tar.xz
asset_content_type: application/x-xz

devuan:
needs: prepare
strategy:
matrix:
RELEASE:
- beowulf

name: Build Devuan ${{ matrix.RELEASE }}
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2

- name: Build Image
id: build_image
run: |
set -xe
cd devuan
tar=lx-devuan-${{ matrix.RELEASE }}.tar
tag=release:$$
docker build --tag $tag --build-arg DEVUAN_RELEASE=${{ matrix.RELEASE }} .
container=$(docker create $tag)
docker cp $container:. - > $tar
docker rm $container
docker rmi $tag
xz $tar
- name: Upload Release Asset
id: upload_release_asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ needs.prepare.outputs.upload_url }}
asset_path: ./devuan/lx-devuan-${{ matrix.RELEASE }}.tar.xz
asset_name: lx-devuan-${{ matrix.RELEASE }}-${{ needs.prepare.outputs.tag }}.tar.xz
asset_content_type: application/x-xz

void:
needs: prepare

Expand Down
6 changes: 6 additions & 0 deletions debian/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
ARG DEBIAN_RELEASE
FROM debian:${DEBIAN_RELEASE}
ARG DEBIAN_RELEASE
ENV DEBIAN_RELEASE ${DEBIAN_RELEASE}
COPY helpers /helpers
RUN cd /helpers; sh build.sh; cd /; rm -rf helpers
63 changes: 63 additions & 0 deletions debian/helpers/build.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
#!/bin/sh
set -ex
echo Installing Debian $DEBIAN_RELEASE
export DEBIAN_FRONTEND=noninteractive

apt-get update
apt-get install -yq apt-utils
apt-get install -yq \
systemd-sysv \
vim \
binutils \
dialog \
openssh-server \
sudo \
iproute2 \
curl \
lsb-release \
less \
joe \
man-db \
net-tools \
iputils-ping
apt-get -qq clean
apt-get -qq autoremove

# disable services we do not need
systemctl disable \
systemd-resolved fstrim.timer fstrim \
e2scrub_reap e2scrub_all e2scrub_all.timer

# disable systemd features not present in lx (e.g. cgroup support)
for S in \
systemd-hostnamed systemd-localed systemd-timedated \
systemd-logind systemd-initctl systemd-journald
do
O=/etc/systemd/system/${S}.service.d
mkdir -p $O
cp override.conf ${O}/override.conf
done

# Prevents apt-get upgrade issue when upgrading in a container environment.
cp makedev /etc/apt/preferences.d/makedev
cp locale.conf /etc/locale.conf
cp locale /etc/default/locale
cp hosts /etc/hosts.lx

# make sure we get fresh ssh keys on first boot
/bin/rm -f -v /etc/ssh/ssh_host_*_key*
cp regenerate_ssh_host_keys.service /etc/systemd/system
systemctl enable regenerate_ssh_host_keys

# hostfile fix
cp create_hosts_file.service /etc/systemd/system
systemctl enable create_hosts_file.service

# add dtrace tools
curl -sSLO https://mirrors.omnios.org/lx/dtracetools-lx_1.0_amd64.deb
dpkg -i dtracetools-lx_1.0_amd64.deb
rm dtracetools-lx_1.0_amd64.deb

# some smf helper folders
mkdir -p /var/svc /var/db

13 changes: 13 additions & 0 deletions debian/helpers/create_hosts_file.service
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
[Unit]
Description=Create a Hostfile
After=network.target auditd.service

[Service]
Type=oneshot
ExecStart=/bin/mv /etc/hosts.lx /etc/hosts
ExecStart=/bin/sed -i s/HOSTNAME/%H/g /etc/hosts
ExecStartPost=/bin/systemctl disable create_hosts_file.service

[Install]
WantedBy=multi-user.target
# last line
8 changes: 8 additions & 0 deletions debian/helpers/hosts
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# host file
127.0.0.1 localhost
127.0.1.1 HOSTNAME
# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
# end
1 change: 1 addition & 0 deletions debian/helpers/locale
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
LANG=C
1 change: 1 addition & 0 deletions debian/helpers/locale.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
LANG=en_US.UTF8
3 changes: 3 additions & 0 deletions debian/helpers/makedev
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
Package: makedev
Pin: release *
Pin-Priority: -1
7 changes: 7 additions & 0 deletions debian/helpers/override.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
[Service]
PrivateTmp=no
PrivateDevices=no
PrivateNetwork=no
ProtectSystem=no
NoNewPrivileges=no
ProtectHome=no
12 changes: 12 additions & 0 deletions debian/helpers/regenerate_ssh_host_keys.service
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
[Unit]
Description=Regenerate SSH host keys
Before=ssh.service

[Service]
Type=oneshot
ExecStart=/usr/bin/ssh-keygen -A -v
ExecStartPost=/bin/systemctl disable regenerate_ssh_host_keys

[Install]
WantedBy=multi-user.target
# last line
6 changes: 6 additions & 0 deletions devuan/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
ARG DEVUAN_RELEASE
FROM lpenz/devuan-${DEVUAN_RELEASE}-amd64:latest
ARG DEVUAN_RELEASE
ENV DEVUAN_RELEASE ${DEVUAN_RELEASE}
COPY helpers /helpers
RUN cd /helpers; sh build.sh; cd /; rm -rf helpers
54 changes: 54 additions & 0 deletions devuan/helpers/build.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
#!/bin/sh
set -ex
echo Installing Devuan $DEVUAN_RELEASE
export DEBIAN_FRONTEND=noninteractive

apt-get update
apt-get install -yq apt-utils
apt-get install -yq \
vim \
binutils \
openssh-server \
sudo \
iproute2 \
curl \
lsb-release \
less \
joe \
man-db \
net-tools \
iputils-ping
# Remove the elogind session manager - this will cause the alternative
# consolekit to be installed automatically
apt-get remove -yq elogind
apt-get -qq clean
apt-get -qq autoremove

# disable services we do not need
for s in checkroot-bootclean.sh; do
update-rc.d $s defaults-disabled
done

# Prevents apt-get upgrade issue when upgrading in a container environment.
cp makedev /etc/apt/preferences.d/makedev
cp locale.conf /etc/locale.conf
cp locale /etc/default/locale
#cp hosts /etc/hosts.lx

# make sure we get fresh ssh keys on first boot
rm -fv /etc/ssh/ssh_host_*_key*
cp rc.keys.ssh /etc/init.d/keys.ssh
chmod +x /etc/init.d/keys.ssh
update-rc.d keys.ssh defaults

#
#mv /usr/share/dbus-1/system-services/org.freedesktop.login1.service{,~}

# add dtrace tools
curl -sSLO https://mirrors.omnios.org/lx/dtracetools-lx_1.0_amd64.deb
dpkg -i dtracetools-lx_1.0_amd64.deb
rm dtracetools-lx_1.0_amd64.deb

# some smf helper folders
mkdir -p /var/svc /var/db

8 changes: 8 additions & 0 deletions devuan/helpers/hosts
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# host file
127.0.0.1 localhost
127.0.1.1 HOSTNAME
# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
# end
1 change: 1 addition & 0 deletions devuan/helpers/locale
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
LANG=C
1 change: 1 addition & 0 deletions devuan/helpers/locale.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
LANG=en_US.UTF8
3 changes: 3 additions & 0 deletions devuan/helpers/makedev
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
Package: makedev
Pin: release *
Pin-Priority: -1
21 changes: 21 additions & 0 deletions devuan/helpers/rc.keys.ssh
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
#! /bin/sh
### BEGIN INIT INFO
# Provides: keys.ssh
# Required-Start: $local_fs $time
# Required-Stop: $local_fs
# Default-Start: 2 3 4 5
# Default-Stop:
# Short-Description: Generate ssh host keys if they are missing
### END INIT INFO

. /lib/init/vars.sh
. /lib/lsb/init-functions

case "$1" in
start|"")
[ "$VERBOSE" = no ] || log_action_begin_msg "Generating SSH keys"
/usr/bin/ssh-keygen -A -v
;;
esac

:
1 change: 0 additions & 1 deletion ubuntu/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
ARG UBUNTU_RELEASE
FROM ubuntu:${UBUNTU_RELEASE}
ARG UBUNTU_RELEASE
citrus-it marked this conversation as resolved.
Show resolved Hide resolved
ENV UBUNTU_RELEASE ${UBUNTU_RELEASE}
COPY helpers /helpers
RUN cd /helpers; sh build.sh; cd /; rm -rf helpers
18 changes: 11 additions & 7 deletions ubuntu/helpers/build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -34,14 +34,18 @@ if [ ${UBUNTU_RELEASE} = "20.04" ]; then
# lx :) ...
touch /etc/systemd/null
mkdir -p /etc/systemd/system/user@.service.d
echo "[Service]\nStandardInput=file:/etc/systemd/null\n" > /etc/systemd/system/user@.service.d/override.conf
echo "[Service]\nStandardInput=file:/etc/systemd/null\n" \
> /etc/systemd/system/user@.service.d/override.conf
fi

# disable systemd faeatures not present in lx (namely cgroup support)
for S in systemd-hostnamed systemd-localed systemd-timedated systemd-logind systemd-initctl systemd-journald; do
O=/etc/systemd/system/${S}.service.d
mkdir -p $O
cp override.conf ${O}/override.conf
# disable systemd features not present in lx (e.g. cgroup support)
for S in \
systemd-hostnamed systemd-localed systemd-timedated systemd-logind \
systemd-initctl systemd-journald
do
O=/etc/systemd/system/${S}.service.d
mkdir -p $O
cp override.conf ${O}/override.conf
done

# Prevents apt-get upgrade issue when upgrading in a container environment.
Expand All @@ -65,7 +69,7 @@ rm -f /sbin/initctl
dpkg-divert --local --rename --remove /sbin/initctl

# add dtrace tools
curl -sSLO https://us-east.manta.joyent.com/joyentsoln/public/images/lx-brand/devel/packages/dtracetools-lx_1.0_amd64.deb
curl -sSLO https://mirrors.omnios.org/lx/dtracetools-lx_1.0_amd64.deb
dpkg -i dtracetools-lx_1.0_amd64.deb
rm dtracetools-lx_1.0_amd64.deb

Expand Down