Man kann postmarketOS auch von Grund auf selber bauen. Man kann hiermit auch eine verschlüsselte Installation erzeugen
pmbootstrap Installation
root@frank-MS-7C37:~# git clone https://gitlab.com/postmarketOS/pmbootstrap.git
Klone nach 'pmbootstrap' ...
remote: Enumerating objects: 1761, done.
remote: Counting objects: 100% (1761/1761), done.
remote: Compressing objects: 100% (409/409), done.
remote: Total 19331 (delta 1445), reused 1568 (delta 1341), pack-reused 17570
Empfange Objekte: 100% (19331/19331), 7.05 MiB | 11.67 MiB/s, Fertig.
Löse Unterschiede auf: 100% (12317/12317), Fertig.
1.Versuch
root@frank-MS-7C37:~# cd pmbootstrap && python3 setup.py install
Traceback (most recent call last):
File "setup.py", line 7, in <module>
from setuptools import setup, find_packages
ModuleNotFoundError: No module named 'setuptools'
Ok, etwas suchen.....
root@frank-MS-7C37:~/pmbootstrap# apt install python3-setuptools
Das hat gefehlt!
root@frank-MS-7C37:~/pmbootstrap# python3 setup.py install
running install
running bdist_egg
running egg_info
creating pmbootstrap.egg-info
writing pmbootstrap.egg-info/PKG-INFO
writing dependency_links to pmbootstrap.egg-info/dependency_links.txt
writing entry points to pmbootstrap.egg-info/entry_points.txt
writing requirements to pmbootstrap.egg-info/requires.txt
writing top-level names to pmbootstrap.egg-info/top_level.txt
writing manifest file 'pmbootstrap.egg-info/SOURCES.txt'
reading manifest file 'pmbootstrap.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
writing manifest file 'pmbootstrap.egg-info/SOURCES.txt'
installing library code to build/bdist.linux-x86_64/egg
running install_lib
running build_py
creating build
[..gekürzt..]
zip_safe flag not set; analyzing archive contents...
pmb.config.__pycache__.__init__.cpython-38: module references __file__
creating dist
creating 'dist/pmbootstrap-1.20.0-py3.8.egg' and adding 'build/bdist.linux-x86_64/egg' to it
removing 'build/bdist.linux-x86_64/egg' (and everything under it)
Processing pmbootstrap-1.20.0-py3.8.egg
creating /usr/local/lib/python3.8/dist-packages/pmbootstrap-1.20.0-py3.8.egg
Extracting pmbootstrap-1.20.0-py3.8.egg to /usr/local/lib/python3.8/dist-packages
Adding pmbootstrap 1.20.0 to easy-install.pth file
Installing pmbootstrap script to /usr/local/bin
Installed /usr/local/lib/python3.8/dist-packages/pmbootstrap-1.20.0-py3.8.egg
Processing dependencies for pmbootstrap==1.20.0
Finished processing dependencies for pmbootstrap==1.20.0
Init pmbootstrap
root@frank-MS-7C37:~# pmbootstrap init
[20:01:22] ERROR: Do not run pmbootstrap as root!
Ok, dann nicht als Root
frank@frank-MS-7C37:~$ pmbootstrap init
[20:02:06] Location of the 'work' path. Multiple chroots (native, device arch, device rootfs) will be created in there.
[20:02:06] Work path [/home/frank/.local/var/pmbootstrap]:
[20:02:15] pmbootstrap does everything in Alpine Linux chroots, so your host system does not get modified. In order to work with these chroots, pmbootstrap calls 'sudo' internally. To see the commands it runs, you can run 'pmbootstrap log' in a second terminal.
[20:02:15] Setting up the native chroot and cloning the package build recipes (pmaports)...
[20:02:15] Clone git repository: https://gitlab.com/postmarketOS/pmaports.git
Klone nach '/home/frank/.local/var/pmbootstrap/cache_git/pmaports' ...
[20:02:17] NOTE: pmaports path: /home/frank/.local/var/pmbootstrap/cache_git/pmaports
[20:02:17] Choose the postmarketOS release channel.
[20:02:17] Available (2):
[20:02:17] * edge: Rolling release channel
[20:02:17] * stable: Stable release channel (first beta v20.05, does not have many devices yet)
[20:02:17] Channel [edge]: edge
[20:02:32] Choose your target device vendor (either an existing one, or a new one for porting).
[20:02:32] Available vendors (50): alcatel, amazon, arrow, asus, bq, chuwi, fairphone, finepower, fly, fujitsu, google, gp, hisense, htc, huawei, infocus, jolla, leeco, lenovo, lg, medion, meizu, motorola, nextbit, nobby, nokia, oneplus, oppo, ouya, pine64, planet, purism, qemu, raspberry, samsung, semc, sharp, sony, surftab, t2m, tablet, teclast, tokio, wiko, wileyfox, wingtech, xiaomi, yu, zte, zuk
[20:02:32] Vendor [qemu]: pine64
[20:03:10] Available codenames (6): a64lts, dontbeevil, pinebookpro, pinephone, pinetab, rockpro64
[20:03:10] Device codename: pinephone
[20:03:20] This device has proprietary components, which trade some of your freedom with making more peripherals work.
[20:03:20] We would like to offer full functionality without hurting your freedom, but this is currently not possible for your device.
[20:03:20] device-pine64-pinephone-nonfree-firmware: Wifi and Bluetooth firmware
[20:03:20] Enable this package? (y/n) [y]: y
[20:03:28] Username [user]: frank
[20:03:33] Available user interfaces (13):
[20:03:33] * none: No graphical environment
[20:03:33] * fbkeyboard: Plain framebuffer console with touchscreen keyboard support
[20:03:33] * gnome: (Wayland) Gnome Shell
[20:03:33] * i3wm: (X11) Tiling WM (keyboard required)
[20:03:33] * kodi: (Wayland) 10-foot UI useful on TV's
[20:03:33] * mate: (X11) MATE Desktop Environment, fork of GNOME2 (stylus recommended)
[20:03:33] * phosh: (Wayland) Mobile UI developed for the Librem 5 (works only with numeric passwords!)
[20:03:33] * plasma-desktop: (X11/Wayland) KDE Desktop Environment (works well with tablets)
[20:03:33] * plasma-mobile: (Wayland) Mobile variant of KDE Plasma (does not run without hardware acceleration, allows only numeric passwords!)
[20:03:33] * plasma-mobile-extras: Plasma Mobile with more apps pre-installed (video and music players, pdf reader, etc.)
[20:03:33] * shelli: Plain console with touchscreen gesture support
[20:03:33] * sway: (Wayland) Tiling WM, drop-in replacement for i3wm (DOES NOT RUN WITHOUT HW ACCELERATION!)
[20:03:33] * weston: (Wayland) Reference compositor (demo, not a phone interface)
[20:03:33] * xfce4: (X11) Lightweight desktop (stylus recommended)
[20:03:33] User interface [weston]: phosh
[20:10:01] Additional options: boot partition size: 128 MB, parallel jobs: 17, ccache per arch: 5G
[20:10:01] Change them? (y/n) [n]:
[20:10:12] Additional packages that will be installed to rootfs. Specify them in a comma separated list (e.g.: vim,file) or "none"
[20:10:12] Extra packages [none]:
[20:10:19] Your host timezone: Europe/Berlin
[20:10:19] Use this timezone instead of GMT? (y/n) [y]:
[20:10:23] Device hostname (short form, e.g. 'foo') [pine64-pinephone]:
[20:10:27] Would you like to copy your SSH public keys to the device? (y/n) [n]: n
[20:10:32] WARNING: The chroots and git repositories in the work dir do not get updated automatically.
[20:10:32] Run 'pmbootstrap status' once a day before working with pmbootstrap to make sure that everything is up-to-date.
[20:10:32] Done!
Fertig!
Install auf SD-Karte
1. Versuch
frank@frank-MS-7C37:~$ pmbootstrap install --sdcard /dev/sde
[20:12:49] *** (1/5) PREPARE NATIVE CHROOT ***
[sudo] Passwort für frank:
[20:12:58] Update package index for x86_64 (4 file(s))
[20:13:01] Download http://dl-cdn.alpinelinux.org/alpine/edge/main/x86_64/apk-tools-static-2.10.5-r1.apk
[20:13:02] (native) install alpine-base
[20:13:04] (native) install cryptsetup util-linux e2fsprogs parted dosfstools
[20:13:05] *** (2/5) CREATE DEVICE ROOTFS ("pine64-pinephone") ***
[20:13:05] Update package index for aarch64 (4 file(s))
[20:13:08] (native) install qemu-aarch64
[20:13:08] Register qemu binfmt (aarch64)
[20:13:09] (rootfs_pine64-pinephone) install alpine-base
[20:13:11] (native) install abuild build-base ccache git
[20:13:23] (native) generate abuild keys
[20:13:23] (native) install bash bc bison devicepkg-dev elfutils-dev flex gmp-dev installkernel linux-headers openssl-dev perl rsync sed xz
[20:13:31] (native) install ccache-cross-symlinks gcc-aarch64 g++-aarch64
[20:13:55] (native) build aarch64/linux-postmarketos-allwinner-5.6.0_git20200528-r0.apk
[20:17:51] WARNING: device-pine64-pinephone depends on rebuilt package(s) linux-postmarketos-allwinner (use 'pmbootstrap build device-pine64-pinephone --force' if necessary!)
[20:17:51] (rootfs_pine64-pinephone) install postmarketos-base device-pine64-pinephone device-pine64-pinephone-nonfree-firmware postmarketos-ui-phosh
[20:19:20] (rootfs_pine64-pinephone) write /etc/os-release
[20:19:20] (rootfs_pine64-pinephone) install
[20:19:22] (rootfs_pine64-pinephone) install
[20:19:24] (rootfs_pine64-pinephone) mkinitfs postmarketos-allwinner
[20:19:48] *** SET LOGIN PASSWORD FOR: 'frank' ***
New password:
Retype new password:
passwd: password updated successfully
[20:20:18] NOTE: No valid keymap specified for device
[20:20:19] *** (3/5) PREPARE INSTALL BLOCKDEVICE ***
[20:20:20] ERROR: /dev/sde2 is mounted! Will not attempt to format this!
[20:20:20] See also: <https://postmarketos.org/troubleshooting>
Run 'pmbootstrap log' for details.
Ok, ich habe eine SD-Karte, irgendein Image drauf, was natürlich gemountet wird. Machen wir alles platt.
root@frank-MS-7C37:~# fdisk /dev/sde
Willkommen bei fdisk (util-linux 2.34).
Änderungen werden vorerst nur im Speicher vorgenommen, bis Sie sich
entscheiden, sie zu schreiben.
Seien Sie vorsichtig, bevor Sie den Schreibbefehl anwenden.
Befehl (m für Hilfe): p
Festplatte /dev/sde: 59,49 GiB, 63864569856 Bytes, 124735488 Sektoren
Festplattenmodell: MassStorageClass
Einheiten: Sektoren von 1 * 512 = 512 Bytes
Sektorgröße (logisch/physikalisch): 512 Bytes / 512 Bytes
E/A-Größe (minimal/optimal): 512 Bytes / 512 Bytes
Festplattenbezeichnungstyp: dos
Festplattenbezeichner: 0xa48ebcdc
Gerät Boot Anfang Ende Sektoren Größe Kn Typ
/dev/sde1 * 10240 380927 370688 181M 83 Linux
/dev/sde2 380928 124735454 124354527 59,3G 83 Linux
Befehl (m für Hilfe): d
Partitionsnummer (1,2, Vorgabe 2):
Partition 2 wurde gelöscht.
Befehl (m für Hilfe): d
Partition 1 ausgewählt
Partition 1 wurde gelöscht.
Befehl (m für Hilfe): d
Noch keine Partition festgelegt!
Befehl (m für Hilfe): p
Festplatte /dev/sde: 59,49 GiB, 63864569856 Bytes, 124735488 Sektoren
Festplattenmodell: MassStorageClass
Einheiten: Sektoren von 1 * 512 = 512 Bytes
Sektorgröße (logisch/physikalisch): 512 Bytes / 512 Bytes
E/A-Größe (minimal/optimal): 512 Bytes / 512 Bytes
Festplattenbezeichnungstyp: dos
Festplattenbezeichner: 0xa48ebcdc
Befehl (m für Hilfe): w
Die Partitionstabelle wurde verändert.
Fehler beim Entfernen der Partition 1 vom System: Das Gerät oder die Ressource ist belegt
Fehler beim Entfernen der Partition 2 vom System: Das Gerät oder die Ressource ist belegt
Der Kernel benutzt noch die alte Tabelle. Die neue Tabelle wird beim nächsten Neustart verwendet.
Festplatten werden synchronisiert.
2. Versuch
frank@frank-MS-7C37:~$ pmbootstrap install --sdcard /dev/sde
[20:25:57] *** (1/5) PREPARE NATIVE CHROOT ***
[20:25:58] *** (2/5) CREATE DEVICE ROOTFS ("pine64-pinephone") ***
[20:25:59] WARNING: aarch64 package 'polkit' installed version 0.116-r2 is newer, than the version in the repositories: 0.116-r1 See also: <https://postmarketos.org/warning-repo>
[20:25:59] (rootfs_pine64-pinephone) install
[20:26:01] WARNING: aarch64 package 'polkit' installed version 0.116-r2 is newer, than the version in the repositories: 0.116-r1 See also: <https://postmarketos.org/warning-repo>
[20:26:01] (rootfs_pine64-pinephone) install
[20:26:03] (rootfs_pine64-pinephone) write /etc/os-release
[20:26:04] (rootfs_pine64-pinephone) install
[20:26:06] (rootfs_pine64-pinephone) install
[20:26:08] (rootfs_pine64-pinephone) mkinitfs postmarketos-allwinner
[20:26:32] *** SET LOGIN PASSWORD FOR: 'frank' ***
New password:
Retype new password:
passwd: password updated successfully
[20:26:49] NOTE: No valid keymap specified for device
[20:26:50] *** (3/5) PREPARE INSTALL BLOCKDEVICE ***
[20:26:50] (native) mount /dev/install (host: /dev/sde)
[20:26:50] EVERYTHING ON /dev/sde WILL BE ERASED! CONTINUE? (y/n) [n]: y
[20:26:55] (native) partition /dev/install (boot: 128M, reserved: 0M, root: the rest)
[20:26:56] (native) format /dev/installp2
[20:27:15] (native) mount /dev/installp2 to /mnt/install
[20:27:15] (native) format /dev/installp1 (boot, ext2), mount to /mnt/install/boot
[20:27:15] *** (4/5) FILL INSTALL BLOCKDEVICE ***
[20:27:15] (native) copy rootfs_pine64-pinephone to /mnt/install/
[20:27:16] Embed firmware u-boot/pine64-pinephone/u-boot-sunxi-with-spl.bin in the SD card image at offset 8 with step size 1024
[20:27:34] *** (5/5) FLASHING TO DEVICE ***
[20:27:34] Run the following to flash your installation to the target device:
[20:27:34] * If the above steps do not work, you can also create symlinks to the generated files with 'pmbootstrap export' and flash outside of pmbootstrap.
[20:27:34] NOTE: chroot is still active (use 'pmbootstrap shutdown' as necessary)
[20:27:34] Done
frank@frank-MS-7C37:~$ pmbootstrap shutdown
[20:28:13] Unregister qemu binfmt (aarch64)
[20:28:13] Done
Danach konnte ich erfolgreich ein postmarketOS starten.
Als Basis dient mir folgendes System