Skip to content

PostmarketOS

Software
  • Pinephone-final.jpeg
    Bildquelle: https://postmarketos.org/

    Dieses Betriebssystem wird auch das kommende PinePhone unterstützen. Im Wiki kann man sich schon mal anschauen, was schon eingebaut wurde.

    Und viele interessante Infos im Wiki über das PinePhone.

  • Und wenn ihr zur Fosdem'20 fahrt, dort gibt es eine Vortrag zu dem Thema.

    https://fosdem.org/2020/schedule/event/smartphones/

  • Schöne Anleitung, mal parken

  • Images findet man hier

  • 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

    89c94b59-b77d-41b5-8d79-9bbc8cba410e-grafik.png

  • Gerade den Download Link für fertige Images gesucht....