tolstoyevsky / pieman Goto Github PK
View Code? Open in Web Editor NEWA script for creating custom OS images for single-board computers
License: GNU General Public License v3.0
A script for creating custom OS images for single-board computers
License: GNU General Public License v3.0
Calling the sudo
executable causes sudo: /usr/bin/sudo must be owned by uid 0 and have the setuid bit set
.
When trying to install mc
and htop
apt-get
complains
E: There were unauthenticated packages and -y was used without --allow-unauthenticated
However, the public key has been added.
Add the CREATE_ONLY_CHROOT
parameter to make Pieman restrict itself to creating only a chroot environment. It will help to reduce the time of building images, using the BASE_DIR
parameter.
Add the HOSTNAME
parameter to set up hostname.
I wanted to run the system in a emulated environment but i can't get the correct cpu model and machine type for qemu-system-arm
. Is it possible to provide informations and instructions for such a purpose ? Thanks.
The logic of check_mutually_exclusive_params
should be rewritten in Python, because the current logic written in Bash has a side effect (see the docstring related to the function) and it seems that it's not possible to avoid the side effect in that implementation.
Only HTTP repositories should be enabled by default, because it's necessary to keep the target image as small as possible. However, users should have the possibility to switch to HTTPS repositories. I suggest we add a parameter, say ENABLE_HTTPS_REPOS
, which will initiate the installation of additional packages and allow users to use encrypted repositories.
Hi,
I'm trying to install ubuntu-bionic-arm64. debootstrap is (1.0.106).
But, I go to the following error:
Setting up flash-kernel (3.90ubuntu3) ...
debconf: unable to initialize frontend: Dialog
debconf: (No usable dialog-like program is installed, so the dialog based frontend cannot be used. at /usr/share/perl5/Debconf/FrontEnd/Dialog.pm line 76.)
debconf: falling back to frontend: Readline
Creating config file /etc/default/flash-kernel with new version
Processing triggers for libc-bin (2.27-3ubuntu1) ...
Processing triggers for linux-image-4.15.0-1010-raspi2 (4.15.0-1010.11) ...
/etc/kernel/postinst.d/initramfs-tools:
update-initramfs: Generating /boot/initrd.img-4.15.0-1010-raspi2
Warning: root device does not exist
flash-kernel: deferring update (trigger activated)
/etc/kernel/postinst.d/zz-flash-kernel:
flash-kernel: deferring update (trigger activated)
Processing triggers for initramfs-tools (0.130ubuntu3) ...
update-initramfs: Generating /boot/initrd.img-4.15.0-1010-raspi2
Warning: root device does not exist
Unsupported platform.
run-parts: /etc/initramfs/post-update.d//flash-kernel exited with return code 1
dpkg: error processing package initramfs-tools (--configure):
installed initramfs-tools package post-installation script subprocess returned error exit status 1
Errors were encountered while processing:
initramfs-tools
E: Sub-process /usr/bin/dpkg returned an error code (1)
Info: build/dd1a2346-804f-42f9-b02a-3b00c0933f92/mount_point is not a mount point
Info: unmounting build/dd1a2346-804f-42f9-b02a-3b00c0933f92/chroot/proc
Info: unmounting build/dd1a2346-804f-42f9-b02a-3b00c0933f92/chroot/sys
Info: unmounting build/dd1a2346-804f-42f9-b02a-3b00c0933f92/chroot/dev/pts
Info: unmounting build/dd1a2346-804f-42f9-b02a-3b00c0933f92/chroot/dev
Info: unmounting build/dd1a2346-804f-42f9-b02a-3b00c0933f92/chroot/tmp
+++ rm -f /tmp/firstboot-dd1a2346-804f-42f9-b02a-3b00c0933f92.sh
+++ rm -f /tmp/atomatically-generated-keyring-for-dd1a2346-804f-42f9-b02a-3b00c0933f92.gpg
+++ check_if_variable_is_set LOOP_DEV
+++ var_name=LOOP_DEV
+++ '[' -z '' ']'
+++ false
+++ remove_temporary_dirs
+++ local target=build/dd1a2346-804f-42f9-b02a-3b00c0933f92
+++ rm -rf build/dd1a2346-804f-42f9-b02a-3b00c0933f92
+++ set +x
e735da36-0404-465c-b9aa-948bbee2ccea.log
Hi, I attempted to do a build to test the service and received an email with the attached log, to me looks like a lack of suitable permissions to write files?
We disabled daily builds some time ago. I think we should remove that from README to prevent a possible confusion.
Currently the RPi blobs are fetched during every single build. Moving the blobs to toolset is one of the ways to make the process of building images more reliable since fetching the blobs from GitHub will be done once, i.e. when Pieman is installed.
The BUILD_DIR
parameter should be immutable in the Docker container, otherwise the build won't have a chance to be finished successfully.
The main motivation of this is to improve experience of using the emulator. When the emulator emulates a Raspberry Pi 3 (64bit) it expects to use bcm2837-rpi-3-b.dtb
, but not bcm2710-rpi-3-b.dtb
. The presence of two dtb files may have a bad impact on the experience.
Add -m
option to du.py
to print sizes in megabytes.
Invoking pip install pieman
in the system where there is no pandoc
ends up complaining
Complete output from command python setup.py egg_info:
Maybe try:
sudo apt-get install pandoc
See http://johnmacfarlane.net/pandoc/installing.html
for installation options
---------------------------------------------------------------
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/tmp/pip-install-rr1eyew4/pieman/setup.py", line 5, in <module>
long_description = pypandoc.convert('README.md', 'rst')
File "/home/denis/cusdeb/pieman-env/lib/python3.6/site-packages/pypandoc/__init__.py", line 69, in convert
outputfile=outputfile, filters=filters)
File "/home/denis/cusdeb/pieman-env/lib/python3.6/site-packages/pypandoc/__init__.py", line 260, in _convert_input
_ensure_pandoc_path()
File "/home/denis/cusdeb/pieman-env/lib/python3.6/site-packages/pypandoc/__init__.py", line 544, in _ensure_pandoc_path
raise OSError("No pandoc was found: either install pandoc and add it\n"
OSError: No pandoc was found: either install pandoc and add it
to your PATH or or call pypandoc.download_pandoc(...) or
install pypandoc wheels with included pandoc.
I suggest we will expand the list of the dependencies in README with pandoc
.
Add the ALLOW_UNAUTHENTICATED
parameter to install packages without checking their signatures.
Currently the root password is shown on the screen. Pieman should hide the password.
Add the following parameters related to DNS:
ENABLE_GOOGLE_DNS
ENABLE_BASIC_YANDEX_DNS
ENABLE_FAMILY_YANDEX_DNS
ENABLE_CUSTOM_DNS
ENABLE_GOOGLE_DNS
will allow using the most common DNS server. If one uses the parameter, than the following two lines are added to /etc/resolv.conf
nameserver 8.8.8.8
nameserver 8.8.4.4
ENABLE_BASIC_YANDEX_DNS
will allow using a quick and reliable DNS server provided by Yandex. If one uses the parameter, than the following two lines are added to /etc/resolv.conf
nameserver 77.88.8.8
nameserver 77.88.8.1
ENABLE_FAMILY_YANDEX_DNS
will allow using the DNS server provided by Yandex with protection from "adult" content. If one uses the parameter, than the following two lines are added to /etc/resolv.conf
nameserver 77.88.8.7
nameserver 77.88.8.3
ENABLE_CUSTOM_DNS
will allow users to add any DNS server to /etc/resolv.conf
.
Hi. I trying to build ubuntu-artful-arm64
image using next command
ALLOW_UNAUTHENTICATED=true BUILD_DIR=/build INCLUDES=vim,wireless-tools,wpasupplicant OS=ubuntu-artful-arm64 env ./pieman.sh
and that's what I see:
root@7c616d6efef2:~/pieman# ALLOW_UNAUTHENTICATED=true BUILD_DIR=/build INCLUDES=vim,wireless-tools,wpasupplicant OS=ubuntu-artful-arm64 env ./pieman.sh
+ ALLOW_UNAUTHENTICATED=true
+ BASE_DIR=
+ BUILD_DIR=/build
+ CREATE_ONLY_CHROOT=false
+ DEVICE=rpi-3-b
+ ENABLE_CUSTOM_DNS=
+ ENABLE_BASIC_YANDEX_DNS=false
+ ENABLE_FAMILY_YANDEX_DNS=false
+ ENABLE_GOOGLE_DNS=false
+ ENABLE_NONFREE=false
+ ENABLE_UNIVERSE=false
+ HOST_NAME=pieman_rpi-3-b
+ INCLUDES=vim,wireless-tools,wpasupplicant
+ OS=ubuntu-artful-arm64
+ CUSTOM_FILES=
+ PASSWORD=*****
++ uuidgen
+ PROJECT_NAME=e524728d-07a6-4caf-b2c4-960ede7e869a
+ PIEMAN_BIN=bin
++ which python3
+ PYTHON=/usr/bin/python3
+ TIME_ZONE=Etc/UTC
+ set +x
Info: using env DEBOOTSTRAP_DIR=/root/pieman/debootstrap ./debootstrap/debootstrap
gpg: keybox '/tmp/atomatically-generated-keyring.gpg' created
gpg: key 3B4FE6ACC0B21F32: public key "Ubuntu Archive Automatic Signing Key (2012) <[email protected]>" imported
gpg: Total number processed: 1
gpg: imported: 1
gpg: no ultimately trusted keys found
Info: running bootstrap/10-rootfs-partition.sh from bootstrap
Info: BASE_DIR is not specified or does not exist. Running debootstrap to create chroot environment.
Info: cannot run anything from devices/rpi-3-b/ubuntu-artful-arm64/pre-first-stage since it does not exist.
Info: env DEBOOTSTRAP_DIR=/root/pieman/debootstrap ./debootstrap/debootstrap --arch=arm64 --foreign --variant=minbase --keyring=/tmp/atomatically-generated-keyring.gpg artful /build/e524728d-07a6-4caf-b2c4-960ede7e869a/chroot http://ports.ubuntu.com/ubuntu-ports/
I: Retrieving InRelease
I: Checking Release signature
I: Valid Release signature (key id 790BC7277767219C42C86F933B4FE6ACC0B21F32)
I: Retrieving Packages
I: Validating Packages
I: Resolving dependencies of required packages...
I: Resolving dependencies of base packages...
I: Found additional base dependencies: adduser gpgv libapt-pkg5.0 libffi6 libgmp10 libgnutls30 libhogweed4 libidn11 libnettle6 libp11-kit0 libstdc++6 libtasn1-6 ubuntu-keyring
I: Checking component main on http://ports.ubuntu.com/ubuntu-ports...
I: Retrieving adduser 3.113+nmu3ubuntu5
I: Validating adduser 3.113+nmu3ubuntu5
I: Retrieving apt 1.5
I: Validating apt 1.5
I: Retrieving base-files 9.6ubuntu102
I: Validating base-files 9.6ubuntu102
I: Retrieving base-passwd 3.5.43
I: Validating base-passwd 3.5.43
I: Retrieving bash 4.4-5ubuntu1
I: Validating bash 4.4-5ubuntu1
I: Retrieving bsdutils 1:2.30.1-0ubuntu4
I: Validating bsdutils 1:2.30.1-0ubuntu4
I: Retrieving coreutils 8.26-3ubuntu4
I: Validating coreutils 8.26-3ubuntu4
I: Retrieving dash 0.5.8-2.3ubuntu1
I: Validating dash 0.5.8-2.3ubuntu1
I: Retrieving debconf 1.5.63
I: Validating debconf 1.5.63
I: Retrieving debianutils 4.8.2
I: Validating debianutils 4.8.2
I: Retrieving diffutils 1:3.6-1
I: Validating diffutils 1:3.6-1
I: Retrieving dpkg 1.18.24ubuntu1
I: Validating dpkg 1.18.24ubuntu1
I: Retrieving e2fslibs 1.43.5-1
I: Validating e2fslibs 1.43.5-1
I: Retrieving e2fsprogs 1.43.5-1
I: Validating e2fsprogs 1.43.5-1
I: Retrieving fdisk 2.30.1-0ubuntu4
I: Validating fdisk 2.30.1-0ubuntu4
I: Retrieving findutils 4.6.0+git+20170729-2
I: Validating findutils 4.6.0+git+20170729-2
I: Retrieving gcc-7-base 7.2.0-8ubuntu3
I: Validating gcc-7-base 7.2.0-8ubuntu3
I: Retrieving gpgv 2.1.15-1ubuntu8
I: Validating gpgv 2.1.15-1ubuntu8
I: Retrieving grep 3.1-2
I: Validating grep 3.1-2
I: Retrieving gzip 1.6-5ubuntu1
I: Validating gzip 1.6-5ubuntu1
I: Retrieving hostname 3.18
I: Validating hostname 3.18
I: Retrieving init-system-helpers 1.49ubuntu1
I: Validating init-system-helpers 1.49ubuntu1
I: Retrieving libacl1 2.2.52-3build1
I: Validating libacl1 2.2.52-3build1
I: Retrieving libapt-pkg5.0 1.5
I: Validating libapt-pkg5.0 1.5
I: Retrieving libattr1 1:2.4.47-2build1
I: Validating libattr1 1:2.4.47-2build1
I: Retrieving libaudit-common 1:2.7.7-1ubuntu2
I: Validating libaudit-common 1:2.7.7-1ubuntu2
I: Retrieving libaudit1 1:2.7.7-1ubuntu2
I: Validating libaudit1 1:2.7.7-1ubuntu2
I: Retrieving libblkid1 2.30.1-0ubuntu4
I: Validating libblkid1 2.30.1-0ubuntu4
I: Retrieving libbz2-1.0 1.0.6-8.1
I: Validating libbz2-1.0 1.0.6-8.1
I: Retrieving libc-bin 2.26-0ubuntu2
I: Validating libc-bin 2.26-0ubuntu2
I: Retrieving libc6 2.26-0ubuntu2
I: Validating libc6 2.26-0ubuntu2
I: Retrieving libcap-ng0 0.7.7-3build1
I: Validating libcap-ng0 0.7.7-3build1
I: Retrieving libcomerr2 1.43.5-1
I: Validating libcomerr2 1.43.5-1
I: Retrieving libdb5.3 5.3.28-13.1
I: Validating libdb5.3 5.3.28-13.1
I: Retrieving libdebconfclient0 0.213ubuntu1
I: Validating libdebconfclient0 0.213ubuntu1
I: Retrieving libfdisk1 2.30.1-0ubuntu4
I: Validating libfdisk1 2.30.1-0ubuntu4
I: Retrieving libffi6 3.2.1-6
I: Validating libffi6 3.2.1-6
I: Retrieving libgcc1 1:7.2.0-8ubuntu3
I: Validating libgcc1 1:7.2.0-8ubuntu3
I: Retrieving libgcrypt20 1.7.8-2ubuntu1
I: Validating libgcrypt20 1.7.8-2ubuntu1
I: Retrieving libgmp10 2:6.1.2+dfsg-1
I: Validating libgmp10 2:6.1.2+dfsg-1
I: Retrieving libgnutls30 3.5.8-6ubuntu3
I: Validating libgnutls30 3.5.8-6ubuntu3
I: Retrieving libgpg-error0 1.27-3
I: Validating libgpg-error0 1.27-3
I: Retrieving libhogweed4 3.3-2
I: Validating libhogweed4 3.3-2
I: Retrieving libidn11 1.33-2
I: Validating libidn11 1.33-2
I: Retrieving liblz4-1 0.0~r131-2ubuntu2
I: Validating liblz4-1 0.0~r131-2ubuntu2
I: Retrieving liblzma5 5.2.2-1.3
I: Validating liblzma5 5.2.2-1.3
I: Retrieving libmount1 2.30.1-0ubuntu4
I: Validating libmount1 2.30.1-0ubuntu4
I: Retrieving libncurses5 6.0+20160625-1ubuntu1
I: Validating libncurses5 6.0+20160625-1ubuntu1
I: Retrieving libncursesw5 6.0+20160625-1ubuntu1
I: Validating libncursesw5 6.0+20160625-1ubuntu1
I: Retrieving libnettle6 3.3-2
I: Validating libnettle6 3.3-2
I: Retrieving libp11-kit0 0.23.7-3
I: Validating libp11-kit0 0.23.7-3
I: Retrieving libpam-modules 1.1.8-3.2ubuntu3
I: Validating libpam-modules 1.1.8-3.2ubuntu3
I: Retrieving libpam-modules-bin 1.1.8-3.2ubuntu3
I: Validating libpam-modules-bin 1.1.8-3.2ubuntu3
I: Retrieving libpam-runtime 1.1.8-3.2ubuntu3
I: Validating libpam-runtime 1.1.8-3.2ubuntu3
I: Retrieving libpam0g 1.1.8-3.2ubuntu3
I: Validating libpam0g 1.1.8-3.2ubuntu3
I: Retrieving libpcre3 2:8.39-5ubuntu3
I: Validating libpcre3 2:8.39-5ubuntu3
I: Retrieving libprocps6 2:3.3.12-1ubuntu2
I: Validating libprocps6 2:3.3.12-1ubuntu2
I: Retrieving libselinux1 2.7-1
I: Validating libselinux1 2.7-1
I: Retrieving libsemanage-common 2.7-2
I: Validating libsemanage-common 2.7-2
I: Retrieving libsemanage1 2.7-2
I: Validating libsemanage1 2.7-2
I: Retrieving libsepol1 2.7-1
I: Validating libsepol1 2.7-1
I: Retrieving libsmartcols1 2.30.1-0ubuntu4
I: Validating libsmartcols1 2.30.1-0ubuntu4
I: Retrieving libss2 1.43.5-1
I: Validating libss2 1.43.5-1
I: Retrieving libstdc++6 7.2.0-8ubuntu3
I: Validating libstdc++6 7.2.0-8ubuntu3
I: Retrieving libsystemd0 234-2ubuntu12
I: Validating libsystemd0 234-2ubuntu12
I: Retrieving libtasn1-6 4.12-2.1
I: Validating libtasn1-6 4.12-2.1
I: Retrieving libtinfo5 6.0+20160625-1ubuntu1
I: Validating libtinfo5 6.0+20160625-1ubuntu1
I: Retrieving libudev1 234-2ubuntu12
I: Validating libudev1 234-2ubuntu12
I: Retrieving libuuid1 2.30.1-0ubuntu4
I: Validating libuuid1 2.30.1-0ubuntu4
I: Retrieving login 1:4.2-3.2ubuntu4
I: Validating login 1:4.2-3.2ubuntu4
I: Retrieving lsb-base 9.20160110ubuntu5
I: Validating lsb-base 9.20160110ubuntu5
I: Retrieving mawk 1.3.3-17ubuntu2
I: Validating mawk 1.3.3-17ubuntu2
I: Retrieving mount 2.30.1-0ubuntu4
I: Validating mount 2.30.1-0ubuntu4
I: Retrieving ncurses-base 6.0+20160625-1ubuntu1
I: Validating ncurses-base 6.0+20160625-1ubuntu1
I: Retrieving ncurses-bin 6.0+20160625-1ubuntu1
I: Validating ncurses-bin 6.0+20160625-1ubuntu1
I: Retrieving passwd 1:4.2-3.2ubuntu4
I: Validating passwd 1:4.2-3.2ubuntu4
I: Retrieving perl-base 5.26.0-8ubuntu1
I: Validating perl-base 5.26.0-8ubuntu1
I: Retrieving procps 2:3.3.12-1ubuntu2
I: Validating procps 2:3.3.12-1ubuntu2
I: Retrieving sed 4.4-1
I: Validating sed 4.4-1
I: Retrieving sensible-utils 0.0.10
I: Validating sensible-utils 0.0.10
I: Retrieving sysvinit-utils 2.88dsf-59.8git1
I: Validating sysvinit-utils 2.88dsf-59.8git1
I: Retrieving tar 1.29b-2
I: Validating tar 1.29b-2
I: Retrieving ubuntu-keyring 2016.10.27
I: Validating ubuntu-keyring 2016.10.27
I: Retrieving util-linux 2.30.1-0ubuntu4
I: Validating util-linux 2.30.1-0ubuntu4
I: Retrieving zlib1g 1:1.2.11.dfsg-0ubuntu2
I: Validating zlib1g 1:1.2.11.dfsg-0ubuntu2
I: Chosen extractor for .deb packages: dpkg-deb
I: Extracting base-files...
I: Extracting base-passwd...
I: Extracting bash...
I: Extracting bsdutils...
I: Extracting coreutils...
I: Extracting dash...
I: Extracting debconf...
I: Extracting debianutils...
I: Extracting diffutils...
I: Extracting dpkg...
I: Extracting e2fslibs...
I: Extracting e2fsprogs...
I: Extracting fdisk...
I: Extracting findutils...
I: Extracting gcc-7-base...
I: Extracting grep...
I: Extracting gzip...
I: Extracting hostname...
I: Extracting init-system-helpers...
I: Extracting libacl1...
I: Extracting libattr1...
I: Extracting libaudit-common...
I: Extracting libaudit1...
I: Extracting libblkid1...
I: Extracting libbz2-1.0...
I: Extracting libc-bin...
I: Extracting libc6...
I: Extracting libcap-ng0...
I: Extracting libcomerr2...
I: Extracting libdb5.3...
I: Extracting libdebconfclient0...
I: Extracting libfdisk1...
I: Extracting libgcc1...
I: Extracting libgcrypt20...
I: Extracting libgpg-error0...
I: Extracting liblz4-1...
I: Extracting liblzma5...
I: Extracting libmount1...
I: Extracting libncurses5...
I: Extracting libncursesw5...
I: Extracting libpam-modules...
I: Extracting libpam-modules-bin...
I: Extracting libpam-runtime...
I: Extracting libpam0g...
I: Extracting libpcre3...
I: Extracting libprocps6...
I: Extracting libselinux1...
I: Extracting libsemanage-common...
I: Extracting libsemanage1...
I: Extracting libsepol1...
I: Extracting libsmartcols1...
I: Extracting libss2...
I: Extracting libsystemd0...
I: Extracting libtinfo5...
I: Extracting libudev1...
I: Extracting libuuid1...
I: Extracting login...
I: Extracting lsb-base...
I: Extracting mawk...
I: Extracting mount...
I: Extracting ncurses-base...
I: Extracting ncurses-bin...
I: Extracting passwd...
I: Extracting perl-base...
I: Extracting procps...
I: Extracting sed...
I: Extracting sensible-utils...
I: Extracting sysvinit-utils...
I: Extracting tar...
I: Extracting util-linux...
I: Extracting zlib1g...
Info: /build/e524728d-07a6-4caf-b2c4-960ede7e869a/chroot/usr/bin
Info: /usr/bin/qemu-aarch64-static
Info: cannot run anything from devices/rpi-3-b/ubuntu-artful-arm64/post-first-stage since it does not exist.
Info: running devices/rpi-3-b/ubuntu-artful-arm64/pre-second-stage/10-remove-bash-from-required.sh from devices/rpi-3-b/ubuntu-artful-arm64/pre-second-stage
Info: Run second stage
Assertion failed: start < end (/home/buildozer/aports/main/qemu/src/qemu-2.8.1/translate-all.c: page_set_flags: 2098)
./functions.sh: line 341: 7349 Segmentation fault chroot ${R} $* 1>&2
+ rm -f /tmp/atomatically-generated-keyring.gpg
+ umount /build/e524728d-07a6-4caf-b2c4-960ede7e869a/mount_point
+ /bin/true
+ umount_required_filesystems
+ umount -l /build/e524728d-07a6-4caf-b2c4-960ede7e869a/chroot/proc
+ /bin/true
+ umount -l /build/e524728d-07a6-4caf-b2c4-960ede7e869a/chroot/sys
+ /bin/true
+ umount /build/e524728d-07a6-4caf-b2c4-960ede7e869a/chroot/dev/pts
+ /bin/true
+ umount /build/e524728d-07a6-4caf-b2c4-960ede7e869a/chroot/tmp
+ /bin/true
+ check_if_variable_is_set LOOP_DEV
+ var_name=LOOP_DEV
+ '[' -z '' ']'
+ false
+ set +x
It's happens only with --arch arm64
. I tested it only in docker environment.
root@7c616d6efef2:~/pieman# chroot /build/e524728d-07a6-4caf-b2c4-960ede7e869a/chroot id
Assertion failed: start < end (/home/buildozer/aports/main/qemu/src/qemu-2.8.1/translate-all.c: page_set_flags: 2098)
Segmentation fault
root@7c616d6efef2:~/pieman#
Any ideas?
When toolset is being built there are two following git clone
's:
Add the --depth=1
option when invoking git
.
The cleanup
function from helpers/base.sh
is invoked twice if a build is interrupted by Ctrl-C. It doesn't lead to bad things, however the second call of the function is redundant.
Replace the 'Info: exiting since PREPARE_ONLY_TOOLSET is set to true' message with 'Success: toolset is ready.' after running
sudo env PREPARE_ONLY_TOOLSET=true ./pieman.sh
These files shouldn't be part of toolset
https://docs.mender.io/1.6/client-configuration/inventory
Do not include 20-expandroot.sh to rc.firstboot when building Mender compatible image or artifact
Do not add parted and ifupdown packages to includes when building Mender compatible image or artifact
Right now Pieman cannot create an image with static rootfs partition size. Let's add the IMAGE_ROOTFS_SIZE
parameter to change that. Let's use '0' as default value. If IMAGE_ROOTFS_SIZE
is '0' everything should work exactly like now (rootfs size depends on the installed files size + ~10%)
But it the total size of all installed packages will be more than IMAGE_ROOTFS_SIZE
Pieman should stop with an error message: Current rootfs size X is larger than Y, specified IMAGE_ROOTFS_SIZE
. Please adjust IMAGE_ROOTFS_SIZE
and try one more time.
I suggest the following description for README:
Specifies the rootfs partition size in megabytes. Beware! If rootfs doesn't fit onto that size - build will fail.
It seems these lines https://github.com/tolstoyevsky/pieman/blob/master/devices/rpi-b/raspbian-stretch-armhf/config.txt#L58 were added to rpi-b/raspbian-stretch-armhf/config.txt accidentally during debugging.
Let's sync our rpi-b/raspbian-stretch-armhf/config.txt with the https://github.com/RPi-Distro/pi-gen/blob/master/stage1/00-boot-files/files/config.txt
Lets think how to avoid this behaviour
See https://github.com/tolstoyevsky/pieman/pull/94/files#r236041776
Get the qemu-arm-static
and qemu-aarch64-static
binaries, for example, from Ubuntu Bionic and put them into toolset.
Add a note to README on how to run tests
Add the ENABLE_UNATTENDED_INSTALLATION
parameter to install packages on a system without prompting the user to answer any questions.
Add the ENABLE_DOCKER
parameter to install the latest Docker CE to the target system.
It seems you have a bug in file size calculating for files bigger than block_size
elif os.path.isfile(dir_entry.path):
file_size = os.path.getsize(dir_entry.path)
if file_size > block_size:
total_size += file_size
I think the total_size
should be increased by size multiple of block_size
.
Something like this:
total_size += math.ceil(file_size / block_size) * block_size
The main motivation is adding the Mender support. The point is that Pieman is going to have a feature of building so called artifacts (.mender
files) in addition to ordinary images (.img
files). So, .mender
files will be governed by the same rules as .img
files and compressed by default. It's not desired, since the users will be forced to uncompress the file before uploading it to hosted.mender.io.
I suggest we will name it EXPAND_LAST_PARTITION
. Depending on the image type, the last partition may vary. In one case it can be the rootfs partition, in another case it can be the data partition.
Add Debian- and Ubuntu-specifc parameter APT_PROXY
which will allow users to make APT use proxy to, for example, cache downloaded packages.
Currently Pieman checks the toolset dependencies even if toolset is installed. For example,
Info: checking Mender dependencies
checking /usr/include/sys/types.h... yes
checking bc... yes
checking cc... yes
checking dtc... yes
checking go... yes
checking make... yes
It can be confusing.
At least we need these:
MENDER_UPDATE_POLL_INTERVAL_SECONDS ?= "1800"
MENDER_INVENTORY_POLL_INTERVAL_SECONDS ?= "1800"
MENDER_RETRY_POLL_INTERVAL_SECONDS ?= "300"
See https://github.com/tolstoyevsky/pieman/pull/94/files#r234751735
Create def_bool_var
which will define variables and check that the assigning values are either true
or false
. Pieman has a bunch of parameters which are boolean, but now users may use any type of values they want, making the Pieman behaviour unpredictable.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.