3c8a93fa7b
This PR makes the workflow faster and pmbootstrap will produce less traffic. Details: * Check if it's possible to create and read from a device node directly when initializing a chroot (closes #472) * Copy the Qemu binary into the forign-arch chroots before initializing them, so the post-install script directly work during the chroot setup and we don't need to call apk fix afterwards * Use pmb.helpers.repo.update(), which only updates the APKINDEX files if they are older than 4 hours, instead of using apk's repo update function which always downloads the APKINDEX files * Chroot initialization * Getting the initial APKINDEX to download apk-tools-static * Updating the APKINDEX at the start of pmbootstrap install * Fixed a bug in from_chroot_suffix: the buildroot_x86_64 has architecture x86_64, not x86. |
||
---|---|---|
aports | ||
keys | ||
pmb | ||
test | ||
.gitignore | ||
.travis.yml | ||
CONTRIBUTING.md | ||
LICENSE | ||
MANIFEST.in | ||
README.md | ||
pmbootstrap.py | ||
setup.cfg | ||
setup.py |
README.md
pmbootstrap
Introduction | Security Warning | Supported Devices | |
Sophisticated chroot/build/flash tool to develop and install postmarketOS.
For in-depth information please refer to the postmarketOS wiki.
Requirements
- 2 GB of RAM recommended for compiling
- Linux distribution (
x86_64
oraarch64
)- Windows subsystem for Linux (WSL) does not work! Please use VirtualBox instead.
- Kernels based on the grsec patchset do not work (Alpine: use linux-vanilla instead of linux-hardened, Arch: linux-hardened is not based on grsec)
- On Alpine Linux only:
apk add coreutils
- Python 3.4+
- OpenSSL
Usage
Assuming you have a supported device, you can build and flash a postmarketOS image by running through the following steps. For new devices check the porting guide.
First, clone the git repository and initialize your pmbootstrap environment:
$ git clone https://github.com/postmarketOS/pmbootstrap
$ cd pmbootstrap
$ ./pmbootstrap.py init
While running any pmbootstrap command, it's always useful to have a log open in a separate window where further details can be seen:
$ ./pmbootstrap.py log
It's now time to run a full build which will create the boot and system images:
$ ./pmbootstrap.py install
Once your device is connected and is ready to be flashed (e.g. via fastboot), you can run a flash of the kernel (boot) and system partitions:
$ ./pmbootstrap.py flasher flash_kernel
$ ./pmbootstrap.py flasher flash_system
After a reboot, the device will prompt for the full-disk encryption password, which you typed in the install step (unless you have disabled full-disk encryption with --no-fde
). Once the partition has been unlocked it is possible to connect via SSH:
$ dhclient -v enp0s20f0u1
$ ssh user@172.16.42.1
Development
Testing
Install pytest
(via your package manager or pip) and run it inside the pmbootstrap folder.