2017-05-26 20:09:50 +00:00
# pmbootstrap
2017-08-16 20:45:31 +00:00
2017-10-24 19:34:08 +00:00
[**Introduction** ](https://postmarketos.org/blog/2017/05/26/intro/ ) | [**Security Warning** ](https://ollieparanoid.github.io/post/security-warning/ ) | [**Supported Devices** ](https://wiki.postmarketos.org/wiki/Supported_devices ) | [![travis badge ](https://api.travis-ci.org/postmarketOS/pmbootstrap.png?branch=master )](https://travis-ci.org/postmarketOS/pmbootstrap) | [![Coverage status ](https://coveralls.io/repos/github/postmarketOS/pmbootstrap/badge.svg )](https://coveralls.io/github/postmarketOS)
2017-08-16 20:45:31 +00:00
2017-06-04 02:50:06 +00:00
Sophisticated chroot/build/flash tool to develop and install postmarketOS.
2017-05-26 20:09:50 +00:00
2017-09-03 08:50:40 +00:00
For in-depth information please refer to the [postmarketOS wiki ](https://wiki.postmarketos.org ).
2017-05-28 01:01:27 +00:00
2017-05-26 20:09:50 +00:00
## Requirements
2017-08-24 17:33:22 +00:00
* 2 GB of RAM recommended for compiling
2018-02-22 21:50:39 +00:00
* Linux distribution (`x86`, `x86_64` , or `aarch64` )
2017-10-04 18:17:22 +00:00
* [Windows subsystem for Linux (WSL) ](https://en.wikipedia.org/wiki/Windows_Subsystem_for_Linux ) does **not** work! Please use [VirtualBox ](https://www.virtualbox.org/ ) instead.
* Kernels based on the grsec patchset [do **not** work ](https://github.com/postmarketOS/pmbootstrap/issues/107 ) *(Alpine: use linux-vanilla instead of linux-hardened, Arch: linux-hardened [is not based on grsec](https://www.reddit.com/r/archlinux/comments/68b2jn/linuxhardened_in_community_repo_a_grsecurity/))*
2017-12-27 19:05:59 +00:00
* On Alpine Linux only: `apk add coreutils`
2017-08-16 20:45:31 +00:00
* Python 3.4+
2017-05-27 23:13:29 +00:00
* OpenSSL
2017-05-26 20:09:50 +00:00
2017-08-16 20:45:31 +00:00
## Usage
2017-06-04 02:50:06 +00:00
2017-09-03 06:46:54 +00:00
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 ](https://wiki.postmarketos.org/wiki/Porting_to_a_new_device ).
2017-05-26 20:09:50 +00:00
2017-08-16 20:45:31 +00:00
First, clone the git repository and initialize your pmbootstrap environment:
```shell
$ 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:
```shell
$ ./pmbootstrap.py log
```
It's now time to run a full build which will create the boot and system images:
2017-05-27 22:57:21 +00:00
2017-08-16 20:45:31 +00:00
```shell
$ ./pmbootstrap.py install
```
2017-05-26 20:09:50 +00:00
2017-08-16 20:45:31 +00:00
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:
2017-05-26 20:09:50 +00:00
2017-08-16 20:45:31 +00:00
```shell
$ ./pmbootstrap.py flasher flash_kernel
$ ./pmbootstrap.py flasher flash_system
```
2017-05-26 20:09:50 +00:00
2017-11-07 22:27:51 +00:00
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:
2017-05-26 20:09:50 +00:00
2017-08-16 20:45:31 +00:00
```shell
$ dhclient -v enp0s20f0u1
$ ssh user@172.16.42.1
```
2017-05-26 20:09:50 +00:00
2017-08-16 20:45:31 +00:00
## Development
2017-05-26 20:09:50 +00:00
2017-08-16 20:45:31 +00:00
### Testing
2017-05-26 20:09:50 +00:00
2017-08-16 20:45:31 +00:00
Install `pytest` (via your package manager or pip) and run it inside the pmbootstrap folder.
2017-05-26 20:09:50 +00:00
2017-08-16 20:45:31 +00:00
## License
2017-05-26 20:09:50 +00:00
2017-08-16 20:45:31 +00:00
[GPLv3 ](LICENSE )