mirror of
https://git.launchpad.net/livecd-rootfs
synced 2025-02-14 06:38:28 +00:00
* Add ubuntu-server:live for a subiquity-based server image.
* Refactor functions out of ubuntu-cpc and ubuntu-server hooks.
This commit is contained in:
commit
1986240d40
4
debian/changelog
vendored
4
debian/changelog
vendored
@ -3,6 +3,10 @@ livecd-rootfs (2.441) UNRELEASED; urgency=medium
|
||||
[ Balint Reczey ]
|
||||
* Add a basic but configurable autopkgtest.
|
||||
|
||||
[ Mathieu Trudel-Lapierre ]
|
||||
* Add ubuntu-server:live for a subiquity-based server image.
|
||||
* Refactor functions out of ubuntu-cpc and ubuntu-server hooks.
|
||||
|
||||
-- Steve Langasek <steve.langasek@ubuntu.com> Mon, 10 Apr 2017 16:35:03 -0700
|
||||
|
||||
livecd-rootfs (2.440) zesty; urgency=medium
|
||||
|
@ -33,6 +33,9 @@ if [ -z "$MIRROR" ]; then
|
||||
esac
|
||||
fi
|
||||
|
||||
mkdir -p config
|
||||
cp -af /usr/share/livecd-rootfs/live-build/functions config/functions
|
||||
|
||||
mkdir -p config/package-lists
|
||||
|
||||
add_task ()
|
||||
@ -101,10 +104,13 @@ add_binary_hook ()
|
||||
BINARY_HOOKS="${BINARY_HOOKS:+$BINARY_HOOKS }$1"
|
||||
}
|
||||
|
||||
case $PROJECT in
|
||||
ubuntu-cpc)
|
||||
case $PROJECT:$SUBPROJECT in
|
||||
ubuntu-cpc:*)
|
||||
IMAGEFORMAT=ext4
|
||||
;;
|
||||
ubuntu-server:live)
|
||||
IMAGEFORMAT=plain
|
||||
;;
|
||||
esac
|
||||
|
||||
case $IMAGEFORMAT in
|
||||
@ -130,7 +136,13 @@ case $IMAGEFORMAT in
|
||||
|
||||
plain)
|
||||
OPTS="${OPTS:+$OPTS }--initramfs none --chroot-filesystem $IMAGEFORMAT"
|
||||
PREINSTALLED=true
|
||||
case $PROJECT:$SUBPROJECT in
|
||||
ubuntu-server:live)
|
||||
;;
|
||||
*)
|
||||
PREINSTALLED=true
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
|
||||
*)
|
||||
@ -144,7 +156,7 @@ case $IMAGEFORMAT in
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ "$PREINSTALLED" = "true" ] && [ "$SUBPROJECT" != "wubi" ]; then
|
||||
if [ "$PREINSTALLED" = "true" ]; then
|
||||
# This is an oem-config preinstalled image, touch a random file that
|
||||
# we can refer back to during build, cause that's wildly hackish
|
||||
touch config/oem-config-preinstalled
|
||||
@ -363,6 +375,13 @@ case $PROJECT in
|
||||
|
||||
ubuntu-server)
|
||||
add_task install minimal
|
||||
case $SUBPROJECT in
|
||||
live)
|
||||
add_task install standard
|
||||
add_task install server
|
||||
LIVE_TASK='cloud-image'
|
||||
;;
|
||||
esac
|
||||
COMPONENTS='main'
|
||||
PREINSTALL_POOL_SEEDS='server-ship'
|
||||
;;
|
||||
@ -694,16 +713,15 @@ EOF
|
||||
;;
|
||||
esac
|
||||
|
||||
case $PROJECT in
|
||||
ubuntu-server)
|
||||
cat > config/hooks/100-remove-fstab.chroot <<EOF
|
||||
if [ $PROJECT = ubuntu-server ] && [ $SUBPROJECT != live ]; then
|
||||
cat > config/hooks/100-remove-fstab.chroot <<EOF
|
||||
#! /bin/sh
|
||||
rm -f /etc/fstab
|
||||
EOF
|
||||
;;
|
||||
fi
|
||||
|
||||
ubuntukylin)
|
||||
cat > config/hooks/100-ubuntukylin.chroot <<EOF
|
||||
if [ $PROJECT = ubuntukylin ]; then
|
||||
cat > config/hooks/100-ubuntukylin.chroot <<EOF
|
||||
#! /bin/sh
|
||||
set -e
|
||||
HOOK=/usr/share/ubuntukylin-default-settings/hooks/chroot
|
||||
@ -712,8 +730,7 @@ if [ -x \$HOOK ]; then
|
||||
fi
|
||||
exit 0
|
||||
EOF
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
if $BINARY_REMOVE_LINUX; then
|
||||
cat > config/binary_rootfs/excludes << EOF
|
||||
@ -748,7 +765,7 @@ EOF
|
||||
fi
|
||||
;;
|
||||
|
||||
ubuntu-touch:*|ubuntu-touch-custom:*|ubuntu-core:system-image|ubuntu-desktop-next:system-image|ubuntu-cpc:*)
|
||||
ubuntu-touch:*|ubuntu-touch-custom:*|ubuntu-core:system-image|ubuntu-desktop-next:system-image|ubuntu-cpc:*|ubuntu-server:live)
|
||||
cp -af /usr/share/livecd-rootfs/live-build/${PROJECT}/* \
|
||||
config/
|
||||
;;
|
||||
|
@ -1,7 +1,7 @@
|
||||
# vi: ts=4 expandtab syntax=sh
|
||||
|
||||
CLOUD_IMG_STR="# CLOUD_IMG: This file was created/modified by the Cloud Image build process"
|
||||
IMAGE_SIZE=$((2252*1024**2)) # 2.2G (the current size we ship)
|
||||
imagesize=${IMAGE_SIZE:-$((2252*1024**2))} # 2.2G (the current size we ship)
|
||||
fs_label="${FS_LABEL:-rootfs}"
|
||||
|
||||
rootfs_dev_mapper=
|
||||
loop_device=
|
||||
@ -28,13 +28,13 @@ clean_loops() {
|
||||
|
||||
create_empty_disk_image() {
|
||||
# Prepare an empty disk image
|
||||
dd if=/dev/zero of="$1" bs=1 count=0 seek="${IMAGE_SIZE}"
|
||||
dd if=/dev/zero of="$1" bs=1 count=0 seek="${imagesize}"
|
||||
}
|
||||
|
||||
make_ext4_partition() {
|
||||
device="$1"
|
||||
|
||||
mkfs.ext4 -F -b 4096 -i 8192 -m 0 -L cloudimg-rootfs -E resize=536870912 "$device"
|
||||
label=${fs_label:+-L "${fs_label}"}
|
||||
mkfs.ext4 -F -b 4096 -i 8192 -m 0 ${label} -E resize=536870912 "$device"
|
||||
}
|
||||
|
||||
mount_image() {
|
||||
@ -87,6 +87,17 @@ mount_partition() {
|
||||
setup_mountpoint "$mountpoint"
|
||||
}
|
||||
|
||||
mount_overlay() {
|
||||
lower="$1"
|
||||
upper="$2"
|
||||
work="$2/../work"
|
||||
path="$3"
|
||||
|
||||
mkdir -p "$work"
|
||||
mount -t overlay overlay \
|
||||
-olowerdir="$lower",upperdir="$upper",workdir="$work" \
|
||||
"$path"
|
||||
}
|
||||
|
||||
mount_disk_image() {
|
||||
local disk_image=${1}
|
||||
@ -103,7 +114,7 @@ mount_disk_image() {
|
||||
# such as updating grub and installing software
|
||||
cat > $mountpoint/usr/sbin/policy-rc.d << EOF
|
||||
#!/bin/sh
|
||||
# ${CLOUD_IMG_STR}
|
||||
# ${IMAGE_STR}
|
||||
echo "All runlevel operations denied by policy" >&2
|
||||
exit 101
|
||||
EOF
|
||||
@ -157,9 +168,7 @@ umount_disk_image() {
|
||||
|
||||
modify_vmdk_header() {
|
||||
# Modify the VMDK headers so that both VirtualBox _and_ VMware can
|
||||
# read the vmdk and import them. The vodoo here is _not_ documented
|
||||
# anywhere....so this will have to do. This is undocumented vodoo
|
||||
# that has been learned by the Cloud Image team.
|
||||
# read the vmdk and import them.
|
||||
|
||||
vmdk_name="${1}"
|
||||
descriptor=$(mktemp)
|
||||
@ -251,9 +260,9 @@ convert_to_qcow2() {
|
||||
|
||||
replace_grub_root_with_label() {
|
||||
# When update-grub is run, it will detect the disks in the build system.
|
||||
# Instead, we want grub to use the cloudimg-rootfs labelled disk
|
||||
# Instead, we want grub to use the right labelled disk
|
||||
CHROOT_ROOT="$1"
|
||||
|
||||
sed -i -e "s,root=[^ ]\+,root=LABEL=cloudimg-rootfs," \
|
||||
sed -i -e "s,root=[^ ]\+,root=LABEL=${fs_label}," \
|
||||
"$CHROOT_ROOT/boot/grub/grub.cfg"
|
||||
}
|
@ -1,5 +1,8 @@
|
||||
#!/bin/bash -ex
|
||||
|
||||
IMAGE_STR="# CLOUD_IMG: This file was created/modified by the Cloud Image build process"
|
||||
FS_LABEL="cloudimg-rootfs"
|
||||
|
||||
. config/functions
|
||||
|
||||
BOOTPART_START=
|
||||
|
@ -9,6 +9,9 @@ case $ARCH in
|
||||
;;
|
||||
esac
|
||||
|
||||
IMAGE_STR="# CLOUD_IMG: This file was created/modified by the Cloud Image build process"
|
||||
FS_LABEL="cloudimg-rootfs"
|
||||
|
||||
. config/functions
|
||||
|
||||
apt-get -qqy install dosfstools gdisk
|
||||
@ -75,7 +78,7 @@ install_grub() {
|
||||
esac
|
||||
|
||||
cat << EOF >> mountpoint/etc/default/grub.d/50-cloudimg-settings.cfg
|
||||
${CLOUD_IMG_STR}
|
||||
${IMAGE_STR}
|
||||
# For Cloud Image compatability
|
||||
GRUB_PRELOAD_MODULES="${grub_modules}"
|
||||
EOF
|
||||
@ -90,7 +93,7 @@ EOF
|
||||
|
||||
if [ -f mountpoint/boot/efi/EFI/BOOT/grub.cfg ]; then
|
||||
sed -i "s| root| root hd0,gpt1|" mountpoint/boot/efi/EFI/BOOT/grub.cfg
|
||||
sed -i "1i${CLOUD_IMG_STR}" mountpoint/boot/efi/EFI/BOOT/grub.cfg
|
||||
sed -i "1i${IMAGE_STR}" mountpoint/boot/efi/EFI/BOOT/grub.cfg
|
||||
# For some reason the grub disk is looking for /boot/grub/grub.cfg on
|
||||
# part 15....
|
||||
chroot mountpoint mkdir -p /boot/efi/boot/grub
|
||||
|
@ -7,6 +7,9 @@ case $ARCH in
|
||||
;;
|
||||
esac
|
||||
|
||||
IMAGE_STR="# CLOUD_IMG: This file was created/modified by the Cloud Image build process"
|
||||
FS_LABEL="cloudimg-rootfs"
|
||||
|
||||
. config/functions
|
||||
|
||||
create_partitions() {
|
||||
@ -33,7 +36,7 @@ install_grub() {
|
||||
# set the kernel commandline to use hvc0
|
||||
mkdir -p mountpoint/etc/default/grub.d
|
||||
cat << EOF > mountpoint/etc/default/grub.d/50-cloudimg-settings.cfg
|
||||
${CLOUD_IMG_STR}
|
||||
${IMAGE_STR}
|
||||
|
||||
# Set the recordfail timeout
|
||||
GRUB_RECORDFAIL_TIMEOUT=0
|
||||
|
@ -8,8 +8,9 @@ if [ ! -d ${my_dir}/extra ]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Export the common functions to the extras
|
||||
. config/functions
|
||||
export IMAGE_STR="# CLOUD_IMG: This file was created/modified by the Cloud Image build process"
|
||||
export CLOUD_IMG_STR="$IMAGE_STR"
|
||||
export FS_LABEL="cloudimg-rootfs"
|
||||
|
||||
# Cleaner execution
|
||||
/bin/run-parts --regex ".*\.binary" "${extra_d}"
|
||||
|
5
live-build/ubuntu-server/hooks/01-setup_modules.chroot
Executable file
5
live-build/ubuntu-server/hooks/01-setup_modules.chroot
Executable file
@ -0,0 +1,5 @@
|
||||
#!/bin/sh -x
|
||||
|
||||
set -e
|
||||
|
||||
mkdir -p /lib/modules
|
37
live-build/ubuntu-server/hooks/030-root-squashfs.binary
Executable file
37
live-build/ubuntu-server/hooks/030-root-squashfs.binary
Executable file
@ -0,0 +1,37 @@
|
||||
#!/bin/bash -ex
|
||||
# vi: ts=4 noexpandtab
|
||||
#
|
||||
# Generate a squashfs root and manifest
|
||||
|
||||
set -x
|
||||
echo "030-root-squashfs.binary"
|
||||
|
||||
case $IMAGE_TARGETS in
|
||||
""|*squashfs*)
|
||||
;;
|
||||
*)
|
||||
echo "Skipping squashfs build"
|
||||
exit 0
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ -n "$SUBARCH" ]; then
|
||||
echo "Skipping rootfs build for subarch flavor build"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
. config/functions
|
||||
|
||||
mkdir binary/boot/squashfs.dir
|
||||
cp -a chroot/* binary/boot/squashfs.dir
|
||||
|
||||
apt-get -qqy install squashfs-tools
|
||||
|
||||
squashfs_f="${PWD}/livecd.${PROJECT}.squashfs"
|
||||
squashfs_f_manifest="${squashfs_f}.manifest"
|
||||
|
||||
dpkg-query --admindir=binary/boot/squashfs.dir/var/lib/dpkg -W > ${squashfs_f_manifest}
|
||||
|
||||
(cd "binary/boot/squashfs.dir/" &&
|
||||
mksquashfs . ${squashfs_f} \
|
||||
-no-progress -xattrs -comp xz )
|
168
live-build/ubuntu-server/hooks/032-installer-squashfs.binary
Executable file
168
live-build/ubuntu-server/hooks/032-installer-squashfs.binary
Executable file
@ -0,0 +1,168 @@
|
||||
#!/bin/bash -ex
|
||||
# vi: ts=4 noexpandtab
|
||||
#
|
||||
# Generate a squashfs root and manifest
|
||||
|
||||
set -x
|
||||
|
||||
echo "032-installer-squashfs.binary"
|
||||
|
||||
case $IMAGE_TARGETS in
|
||||
""|*squashfs*)
|
||||
;;
|
||||
*)
|
||||
echo "Skipping squashfs build"
|
||||
exit 0
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ -n "$SUBARCH" ]; then
|
||||
echo "Skipping rootfs build for subarch flavor build"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
. config/functions
|
||||
|
||||
SQUASH_ROOT=binary/boot/squashfs.dir
|
||||
OVERLAY_ROOT=binary/boot/overlay.dir
|
||||
|
||||
mkdir -p "$OVERLAY_ROOT"
|
||||
|
||||
setup_mountpoint binary/boot/squashfs.dir
|
||||
|
||||
# Create an installer squashfs layer
|
||||
mount_overlay "$SQUASH_ROOT/" "$OVERLAY_ROOT/" "$SQUASH_ROOT/"
|
||||
|
||||
# Prepare installer layer.
|
||||
|
||||
# Install any requirements for the installer, for things we don't want
|
||||
# to see on the installed system
|
||||
chroot $SQUASH_ROOT apt-get update
|
||||
chroot $SQUASH_ROOT apt-get -y install user-setup
|
||||
chroot $SQUASH_ROOT apt-get -y install curtin
|
||||
|
||||
# Don't let cloud-init run in the live session.
|
||||
touch $SQUASH_ROOT/etc/cloud/cloud-init.disabled
|
||||
|
||||
# Do the snap seeding dance.
|
||||
chroot $SQUASH_ROOT mkdir -p /var/lib/snapd/seed/snaps /var/lib/snapd/seed/assertions
|
||||
chroot $SQUASH_ROOT sh -c '
|
||||
set -x;
|
||||
cd /var/lib/snapd/seed;
|
||||
sudo SNAPPY_STORE_NO_CDN=1 snap download core;
|
||||
sudo SNAPPY_STORE_NO_CDN=1 snap download --channel=edge subiquity;
|
||||
|
||||
CORE_SNAP=$(ls -1 core*.snap);
|
||||
SUBIQUITY_SNAP=$(ls -1 subiquity*.snap);
|
||||
|
||||
mv *.assert /var/lib/snapd/seed/assertions/;
|
||||
mv *.snap /var/lib/snapd/seed/snaps/;
|
||||
|
||||
cat <<EOF > /var/lib/snapd/seed/seed.yaml
|
||||
snaps:
|
||||
- name: core
|
||||
channel: stable
|
||||
file: ${CORE_SNAP}
|
||||
- name: subiquity
|
||||
channel: edge
|
||||
classic: true
|
||||
file: ${SUBIQUITY_SNAP}
|
||||
EOF
|
||||
'
|
||||
|
||||
cat <<EOF > $SQUASH_ROOT/var/lib/snapd/seed/assertions/cyphermox.account
|
||||
type: account
|
||||
authority-id: canonical
|
||||
account-id: H0szZPjHTU4x04XeYjLyv8tJqYXq7cYk
|
||||
display-name: Mathieu Trudel
|
||||
timestamp: 2016-09-12T20:11:03.478544Z
|
||||
username: cyphermox
|
||||
validation: unproven
|
||||
sign-key-sha3-384: BWDEoaqyr25nF5SNCvEv2v7QnM9QsfCc0PBMYD_i2NGSQ32EF2d4D0hqUel3m8ul
|
||||
|
||||
AcLBUgQAAQoABgUCV9cL1wAAbQIQAEa8X5Bf2achG/9gC2d9YHWE+Uk9/FXK58bZ4Ym5VDTPW2Es
|
||||
BZOTMA6ROcCrii8/HM88+5bKGGoYLVNjfYUosYfR31kkFT1z1payhs4zfhANTBHXQpeNlGASm9ua
|
||||
O1UkBNFJwYu+tRh9gsY5wuryjfxXndS2pzUm2fXlFB4I/FgQEZnKJP99C3H0cUkGHzEwadRc7vqu
|
||||
/B+mmlwX/pgzlUwt3EXkCpx0hvN4ZgSzyKAtLn+ij2XSe4MxptT/uGCY2tnqsSa+H6J+O0RYENYD
|
||||
Xa7MJLXSGS9iqOwBkTO5X1eHSNPUs0LqzAqz4zTL5Kd9c/ohFwPzZpO8ltLA2nhKEfHzofMsMjEi
|
||||
qwhCDQ5LZD93dQ/VWzmmrCi9cmy+mci7K+hEYLtopzbkMl7cFBVVc2pQlTArspsFy9aMurCs4m8K
|
||||
GfGJOmvYP4Rnn8YYVLtAIPbGADAzG4mxBDxc8r+NRCprDIJmVHed/aQo6gNNip6VHi7xORnAJYRI
|
||||
0XQThASCRYzZxEBv3iND0GzAlRdlOLA+x+jRt2CDg0qLQ5DmuXGePEkEyJEMQb+OBsFHrPcvX1UI
|
||||
eHoKL9ZyvcrhsuPmG92P2UYiGp7qeKYmPQFsWNNh/R18tgingyJbm75pAE8MrpyZ1TTyDEYhwzbm
|
||||
F5zdm4dy0k1EGMhTTDz/hzlE0Ugw
|
||||
EOF
|
||||
|
||||
cat <<EOF > $SQUASH_ROOT/var/lib/snapd/seed/assertions/cyphermox-sn-test.account-key
|
||||
type: account-key
|
||||
authority-id: canonical
|
||||
public-key-sha3-384: vihTQiNMkgsi2g39sggy3k4EVGrkFyWMof_nIrCbhxSOO7U00PRD_TDeWrpqGNor
|
||||
account-id: H0szZPjHTU4x04XeYjLyv8tJqYXq7cYk
|
||||
name: cyphermox-sn-test
|
||||
since: 2017-03-14T21:24:50Z
|
||||
body-length: 717
|
||||
sign-key-sha3-384: BWDEoaqyr25nF5SNCvEv2v7QnM9QsfCc0PBMYD_i2NGSQ32EF2d4D0hqUel3m8ul
|
||||
|
||||
AcbBTQRWhcGAARAAqJ9Xdy+csx9nQkipmldiKNsBKqwRh3HjwlnSrBm/YpI7Jbgs6zubD8Zj/hwr
|
||||
bQiu4E2d6aobJcn3cgNdTlCEXES1M3sC6vSmkuz2fXdHRsYD6V3l5rlPjlyWPGNajcKvn1lEyOxC
|
||||
j6efASJysX5lCDPfGy8Joe4OdeZxmPAwCJpuxpltlSMBlPjCHBgHMzv+C1zh9wkBuFh3wDIFP8ih
|
||||
hnzGN/UevSHMfZCGh3y20TzDHeaeI35hiHkaibQuifqVNMTjnxReYKHV2eAP8/2XpEhfMAU6AD/Y
|
||||
020ayr9REE/c6KTYq7Po7REzvUrWlG0KknBtHM7wCn9puo5HrM767K0H+ts6fsrvx5kRC5ZheVOf
|
||||
Jh3EoXYQYCL1EGw0bzU03Lxx0RQ6teEc0WTDzky54vFr6UHjCAwethpzZ7MtZRdfwW4r/jUcxwXR
|
||||
JXXKh03WK/ivhtr9KAROVkdUeMb/txp/8DvLW5zs7ohTaaC0qH5J+MMp0lm6ux0S8WyPmMOcb0SP
|
||||
0IwOTvQc1ALDG3SiUgtJRP9Kt5jeuWIltH0cYE+QGPzey+fJ+iJx0QmeVnF2+O2JH2RihR5uJIBE
|
||||
HzQlNMVZB/iyjgdCLamMUeqa6DAOpzR2haIRgaXKtK0G9Ho1ArEsXZsRiFYorhtxzrwGmkq7kGCw
|
||||
tsY2pTeILZO1QPMAEQEAAQ==
|
||||
|
||||
AcLBUgQAAQoABgUCWMhfrAAAXn4QALo795LKWhSNlzI7KIz3hq6rFK1YVDbj3KXW8xoF1FEwyE51
|
||||
4s1hZXc5N5h7DO49pj7JcXtE+Vi2gV+X294BqRevglBZgMwUtXdHX29IgPAx0jR9ARybS9A0QQYV
|
||||
OaoKmnq+44p76D2gZz0blax18uROJCKfL6GCRw29/C/GJWpRnEEJlXC2DVD45vJeptSqLDcBL6z+
|
||||
AypoV9NhJlmGm2jxPg5Jm+BdkyCZSbfNMw2sBcjJbs63KHgE9XsaP6Frb9gBexwXCx8/U6Y2jFTL
|
||||
wmyHpXXjBY0et8ze2bcqcEsDeW30eFALki/+FfPzjTtxY/Xo/r2j78YMHVFOkWJYj3MZJ+LJ0UWC
|
||||
eM4xzJm2ROwxFhFpIqlIRtR6WUPIxAx3Fb1j3uDTSBXDYv/hjxhSLZpw3/AN7Rj7pLWnwfD3076i
|
||||
3R900ad3/tRQp8hlrn4H9zRxBwaCKhZ9h1kfmyHcVpf0Nk03Fe5tHTai0pdHpC6bPi798Iw6qt0r
|
||||
D7VoKv29fa55zlGRTAG9mW0cbgkKUq1SBtLnBSy+peluVGjJWgZ3j1K9waTEoQPiNn6/JJvg2GjK
|
||||
awZPm8R1ngBYQs/vGPhcfz8DGF3uwFzbSh/bLAKky22qrRypTtczDXw4H1LWPlUvB4cQfTY6Ad+w
|
||||
KaHPaPmuIpn1DVEfPhNeByz57PDu
|
||||
EOF
|
||||
|
||||
cat <<EOF > $SQUASH_ROOT/var/lib/snapd/seed/assertions/cyphermox-classic.model
|
||||
type: model
|
||||
authority-id: H0szZPjHTU4x04XeYjLyv8tJqYXq7cYk
|
||||
series: 16
|
||||
brand-id: H0szZPjHTU4x04XeYjLyv8tJqYXq7cYk
|
||||
model: cyphermox-test-classic
|
||||
classic: true
|
||||
timestamp: 2017-03-15T14:32:45+00:00
|
||||
sign-key-sha3-384: vihTQiNMkgsi2g39sggy3k4EVGrkFyWMof_nIrCbhxSOO7U00PRD_TDeWrpqGNor
|
||||
|
||||
AcLBXAQAAQoABgUCWMm5vAAKCRBdai1JSycAlUiAD/41bWorQOI343Ub/JVGFXN8aHXwZWh2iVzY
|
||||
m42QbHZSuyyLBLiEqauiQLvuFa3Dtb3i6GC6hdtOlf/sPwZISriWrNuO5qPXik5SqP5zZop/qy4y
|
||||
msWpG1S6M/aNqGVfUPIx0v7l9iTb4ZG9hyyxPwdE5lFj4nIqWlu6rIGPCGC+dfAS62PPkUGdXqzV
|
||||
VOA6/D2FgthhxywaZZwSLwzP/Ee+JAgeO17iX605Lb0dzy/5HmopM7G8wUgzidPUY9AIZ63gr+GP
|
||||
KyBrvwHzE6PbH9QjQy1Z7DhkThKeViocx67ewnBocBr75F09LfcVR+cAxMujSs7NBbYl444aQeth
|
||||
HUuLwvuH189KsnQdqF2Tfta5lkCn9Uqeshq2c2jGyYXBTpvxyQny4X+yQZF1uEalH3PRR+AxIT9Y
|
||||
2siMLMuRyS/iMhIkLToutzuhZS+7ujuGs7H4l9C0hUon9c+62XEIkNH4rjutR7lCuFbE3CMqVl9H
|
||||
lgGQ6HXl0uoJHEzK4T1+ipstSiujn9KD+8LCtkz0YWFmdWQ97VHB2Wmjp4c2bze+BojbqJyfJ2bo
|
||||
AAHP0AEiHQ7zN0yLl7+fkYIMy64xQJqamH1Z2BFN0GWMPwTjpXpszOC+ev7Bpbg0xoldQ1tBHHxH
|
||||
J4Weia71DnXOnt8cj1VhebVMlyv7B/TGAbGwgprgmQ==
|
||||
EOF
|
||||
|
||||
mv resolv.conf.tmp "binary/boot/squashfs.dir/etc/resolv.conf"
|
||||
|
||||
# Unmount the overlay first, where it is mounted:
|
||||
umount "$SQUASH_ROOT"
|
||||
|
||||
# Then we can start unmounting the "real" root:
|
||||
umount "binary/boot/squashfs.dir/proc"
|
||||
umount "binary/boot/squashfs.dir/sys"
|
||||
umount "binary/boot/squashfs.dir/dev/pts"
|
||||
umount "binary/boot/squashfs.dir/dev"
|
||||
umount "binary/boot/squashfs.dir/tmp"
|
||||
|
||||
apt-get -qqy install squashfs-tools
|
||||
|
||||
squashfs_f="${PWD}/livecd.${PROJECT}.installer.squashfs"
|
||||
|
||||
(cd "$OVERLAY_ROOT/" &&
|
||||
mksquashfs . ${squashfs_f} \
|
||||
-no-progress -xattrs -comp xz )
|
3
live-build/ubuntu-server/hooks/99-fix-resolvconf.chroot
Normal file
3
live-build/ubuntu-server/hooks/99-fix-resolvconf.chroot
Normal file
@ -0,0 +1,3 @@
|
||||
#!/bin/sh
|
||||
|
||||
ln -snf ../run/resolvconf/resolv.conf /etc/resolv.conf
|
@ -0,0 +1,3 @@
|
||||
[Service]
|
||||
ExecStart=
|
||||
ExecStart=-/sbin/agetty --noclear -n --autologin ubuntu %I $TERM
|
@ -0,0 +1 @@
|
||||
../subiquity.service
|
@ -0,0 +1,30 @@
|
||||
[Unit]
|
||||
Description=Subiquity debug shell %I
|
||||
After=systemd-user-sessions.service plymouth-quit-wait.service
|
||||
After=rc-local.service
|
||||
IgnoreOnIsolate=yes
|
||||
ConditionPathExists=/dev/tty0
|
||||
ConditionPathExists=!/run/subiquity/complete
|
||||
|
||||
[Service]
|
||||
Environment=PYTHONPATH=/usr/share/subiquity
|
||||
ExecStartPre=/bin/systemctl stop getty@%I
|
||||
ExecStart=/sbin/agetty -n --noclear -l /usr/share/subiquity/subiquity-debug %I $TERM
|
||||
ExecStopPost=/bin/systemctl start getty@%I
|
||||
Type=idle
|
||||
Restart=always
|
||||
RestartSec=0
|
||||
UtmpIdentifier=%I
|
||||
TTYPath=/dev/%I
|
||||
TTYReset=yes
|
||||
TTYVHangup=yes
|
||||
TTYVTDisallocate=yes
|
||||
KillMode=process
|
||||
IgnoreSIGPIPE=no
|
||||
SendSIGHUP=yes
|
||||
|
||||
#KillMode=process
|
||||
#Restart=always
|
||||
#StandardInput=tty-force
|
||||
#StandardOutput=tty
|
||||
#StandardError=tty
|
@ -0,0 +1,31 @@
|
||||
[Unit]
|
||||
Description=Subiquity, the installer for Ubuntu Server
|
||||
After=systemd-user-sessions.service plymouth-quit-wait.service
|
||||
After=rc-local.service
|
||||
Requires=snapd.service
|
||||
IgnoreOnIsolate=yes
|
||||
ConditionPathExists=/dev/tty0
|
||||
ConditionPathExists=!/run/subiquity/complete
|
||||
|
||||
[Service]
|
||||
Environment=PYTHONPATH=/usr/share/subiquity
|
||||
ExecStartPre=/bin/systemctl stop getty@tty1
|
||||
ExecStart=/sbin/agetty -n --noclear -l /snap/bin/subiquity tty1 $TERM
|
||||
ExecStopPost=/bin/systemctl start getty@tty1
|
||||
Type=idle
|
||||
Restart=always
|
||||
RestartSec=0
|
||||
UtmpIdentifier=tty1
|
||||
TTYPath=/dev/tty1
|
||||
TTYReset=yes
|
||||
TTYVHangup=yes
|
||||
TTYVTDisallocate=yes
|
||||
KillMode=process
|
||||
IgnoreSIGPIPE=no
|
||||
SendSIGHUP=yes
|
||||
|
||||
#KillMode=process
|
||||
#Restart=always
|
||||
#StandardInput=tty-force
|
||||
#StandardOutput=tty
|
||||
#StandardError=tty
|
9
live-build/ubuntu-server/includes.chroot/etc/hosts
Normal file
9
live-build/ubuntu-server/includes.chroot/etc/hosts
Normal file
@ -0,0 +1,9 @@
|
||||
127.0.0.1 localhost.localdomain localhost
|
||||
::1 localhost6.localdomain6 localhost6
|
||||
|
||||
# The following lines are desirable for IPv6 capable hosts
|
||||
::1 localhost ip6-localhost ip6-loopback
|
||||
fe00::0 ip6-localnet
|
||||
ff02::1 ip6-allnodes
|
||||
ff02::2 ip6-allrouters
|
||||
ff02::3 ip6-allhosts
|
Loading…
x
Reference in New Issue
Block a user