Man kann postmarketOS auch von Grund auf selber bauen. Man kann hiermit auch eine verschlüsselte Installation erzeugen https://wiki.postmarketos.org/wiki/Installation_guide 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