啊哈
在Devices - postmarketOS中可以看到起码经过两人成功测试的设备,其中我看到了ipad和ipone
初始化
要求Linux操作系统!!!不支持虚拟机哈
安装pmbootstrap
更多详情参见Installing pmbootstrap
软件依赖要求
python >=3.6
openssl or alternative(like libressl)
Depending on the installation method:
pip3 (possibly shipped with Python)
git
自查一下
$ openssl
OpenSSL> ^C
$ python3 -V
Python 3.7.3
$ pip3 -V
pip 18.1 from /usr/lib/python3/dist-packages/pip (python 3.7)
$ git --version
git version 2.20.1
开始安装
$ pip3 install --user pmbootstrap
$ pip3 install --user --upgrade pmbootstrap
$ pmbootstrap --version
1.29.2
辅助功能
命令按tab按键自动补全
$ pip3 install --user argcomplete
。。。Successfully installed argcomplete-1.12.2
然后在 ~/.bashrc
中添加eval "$(register-python-argcomplete pmbootstrap)"
:
$ nano ~/.bashrc
然后重启终端或者用这个命令source ~/.bashrc
$ pmbootstrap pull
WARNING: Can't create log file in '/home/kearney/.local/var/pmbootstrap', path does not exist!
[20:34:21] ERROR: Please specify a config file, or run 'pmbootstrap init' to generate one.
[20:34:21] See also: <https://postmarketos.org/troubleshooting>
Run 'pmbootstrap log' for details. Alternatively you can use '--details-to-stdout' to get more output, e.g. 'pmbootstrap --details-to-stdout init'.
????无法创建文件??那我就创建呗
$ nano /home/kearney/.local/var/pmbootstrap
$ pmbootstrap pull
INFO:root:ERROR: [Errno 20] Not a directory: '/home/kearney/.local/var/pmbootstrap/log.txt'
INFO:root:See also: <https://postmarketos.org/troubleshooting>
DEBUG:root:Traceback (most recent call last):
File "/home/kearney/.local/lib/python3.7/site-packages/pmb/__init__.py", line 23, in main
args = parse.arguments()
File "/home/kearney/.local/lib/python3.7/site-packages/pmb/parse/arguments.py", line 788, in arguments
pmb.helpers.args.init(args)
File "/home/kearney/.local/lib/python3.7/site-packages/pmb/helpers/args.py", line 159, in init
pmb.helpers.logging.init(args)
File "/home/kearney/.local/lib/python3.7/site-packages/pmb/helpers/logging.py", line 70, in init
setattr(args, "logfd", open(args.log, "a+"))
NotADirectoryError: [Errno 20] Not a directory: '/home/kearney/.local/var/pmbootstrap/log.txt'
Run 'pmbootstrap log' for details. Alternatively you can use '--details-to-stdout' to get more output, e.g. 'pmbootstrap --details-to-stdout init'.
不是目录???我擦,刚才不说建立文件吗。。。删除后重建目录呗
$ mkdir /home/kearney/.local/var/pmbootstrap -p
$ pmbootstrap pull
[22:18:36] ERROR: Please specify a config file, or run 'pmbootstrap init' to generate one.
[22:18:36] See also: <https://postmarketos.org/troubleshooting>
Run 'pmbootstrap log' for details.
朕不管了,官方就是这么跑的
$ pmbootstrap init
[22:19:57] Location of the 'work' path. Multiple chroots (native, device arch, device rootfs) will be created in there.
[22:19:57] Work path [/home/kearney/.local/var/pmbootstrap]: /home/kearney/Documents/code/postmarketOS
[22:24:04] Setting up the native chroot and cloning the package build recipes (pmaports)...
[22:24:04] Clone git repository: https://gitlab.com/postmarketOS/pmaports.git
正克隆到 '/home/kearney/Documents/code/postmarketOS/cache_git/pmaports'...
fatal: unable to access 'https://gitlab.com/postmarketOS/pmaports.git/': gnutls_handshake() failed: The TLS connection was non-properly terminated.
[22:24:22] NOTE: The failed command's output is above the ^^^ line in the log file: /home/kearney/Documents/code/postmarketOS/log.txt
[22:24:22] ERROR: Command failed: % git clone https://gitlab.com/postmarketOS/pmaports.git /home/kearney/Documents/code/postmarketOS/cache_git/pmaports
[22:24:22] See also: <https://postmarketos.org/troubleshooting>
Run 'pmbootstrap log' for details.
$ git clone git@gitlab.com:postmarketOS/pmaports.git /home/kearney/Documents/code/postmarketOS/cache_git/pmaports
正克隆到 '/home/kearney/Documents/code/postmarketOS/cache_git/pmaports'...
The authenticity of host 'gitlab.com (2606:4700:90:0:f22e:fbec:5bed:a9b9)' can't be established.
ECDSA key fingerprint is SHA256:HbW3g8zUjNSksFbqTiUWPWg2Bq1x8xdGUrliXFzSnUw.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'gitlab.com,2606:4700:90:0:f22e:fbec:5bed:a9b9' (ECDSA) to the list of known hosts.
git@gitlab.com: Permission denied (publickey,keyboard-interactive).
fatal: 无法读取远程仓库。
请确认您有正确的访问权限并且仓库存在。
emmm直接去下载压缩包。。清华镜像上虽然同步了但看了看都是apk和img。。下载好慢。。从gitee倒腾吧
$ git clone git@gitee.com:chen_jiaqi0812/pmaports.git /home/kearney/Documents/code/postmarketOS/cache_git/pmaports
正克隆到 '/home/kearney/Documents/code/postmarketOS/cache_git/pmaports'...
remote: Enumerating objects: 46232, done.
remote: Counting objects: 100% (46232/46232), done.
remote: Compressing objects: 100% (13212/13212), done.
remote: Total 46232 (delta 28677), reused 46232 (delta 28677), pack-reused 0
接收对象中: 100% (46232/46232), 21.12 MiB | 2.35 MiB/s, 完成.
处理 delta 中: 100% (28677/28677), 完成.
$ pmbootstrap init
[22:53:27] Location of the 'work' path. Multiple chroots (native, device arch, device rootfs) will be created in there.
[22:53:27] Work path [/home/kearney/Documents/code/postmarketOS]: /home/kearney/Documents/code/postmarketOS
[22:53:48] NOTE: pmaports path: /home/kearney/.local/lib/python3.7/site-packages/aports
[22:53:48] ERROR: pmaports: could not find remote name for URL 'https://gitlab.com/postmarketOS/pmaports.git' in git repository: /home/kearney/Documents/code/postmarketOS/cache_git/pmaports
[22:53:48] See also: <https://postmarketos.org/troubleshooting>
Run 'pmbootstrap log' for details.
哈???曲线都能被你发现,修改下git信息总可以吧
$ cd /home/kearney/Documents/code/postmarketOS/cache_git/pmaports
$ git remote -v
origin git@gitee.com:chen_jiaqi0812/pmaports.git (fetch)
origin git@gitee.com:chen_jiaqi0812/pmaports.git (push)
$ git remote remove origin
$ git remote -v
$ git remote add origin https://gitlab.com/postmarketOS/pmaports.git
$ pmbootstrap init
[22:58:49] Location of the 'work' path. Multiple chroots (native, device arch, device rootfs) will be created in there.
[22:58:49] Work path [/home/kearney/Documents/code/postmarketOS]: /home/kearney/Documents/code/postmarketOS
[22:58:56] NOTE: pmaports path: /home/kearney/Documents/code/postmarketOS/cache_git/pmaports
[22:58:56] NOTE: fix this by fetching your pmaports.git, e.g. with 'pmbootstrap pull'
[22:58:56] ERROR: Failed to read channels.cfg from 'origin/master' branch of your local pmaports clone
[22:58:56] See also: <https://postmarketos.org/troubleshooting>
Run 'pmbootstrap log' for details.
我传统美德
$ pmbootstrap pull
[22:59:48] NOTE: fix this by fetching your pmaports.git, e.g. with 'pmbootstrap pull'
[22:59:48] ERROR: Failed to read channels.cfg from 'origin/master' branch of your local pmaports clone
[22:59:48] See also: <https://postmarketos.org/troubleshooting>
Run 'pmbootstrap log' for details.
$ pmbootstrap init
[23:03:48] Location of the 'work' path. Multiple chroots (native, device arch, device rootfs) will be created in there.
[23:03:48] Work path [/home/kearney/Documents/code/postmarketOS]:
[23:03:49] NOTE: pmaports path: /home/kearney/Documents/code/postmarketOS/cache_git/pmaports
[23:03:49] NOTE: fix this by fetching your pmaports.git, e.g. with 'pmbootstrap pull'
[23:03:49] ERROR: Failed to read channels.cfg from 'origin/master' branch of your local pmaports clone
[23:03:49] See also: <https://postmarketos.org/troubleshooting>
Run 'pmbootstrap log' for details.
$ git pull
remote: Enumerating objects: 1690, done.
remote: Counting objects: 100% (1690/1690), done.
remote: Compressing objects: 100% (382/382), done.
remote: Total 3613 (delta 1426), reused 1500 (delta 1285), pack-reused 1923
接收对象中: 100% (3613/3613), 1.69 MiB | 32.00 KiB/s, 完成.
处理 delta 中: 100% (1904/1904), 完成 336 个本地对象.
来自 https://gitlab.com/postmarketOS/pmaports
* [新分支] allwinner_netfilter -> origin/allwinner_netfilter
* [新分支] amazfish -> origin/amazfish
* [新分支] apk_discover -> origin/apk_discover
* [新分支] device/htc-flounder-mainline -> origin/device/htc-flounder-mainline
* [新分支] device/iphone-sandcastle -> origin/device/iphone-sandcastle
* [新分支] device/steamlink -> origin/device/steamlink
* [新分支] enhancement/rpi4-hardware-acceleration -> origin/enhancement/rpi4-hardware-acceleration
* [新分支] feature/android-rild -> origin/feature/android-rild
* [新分支] feature/kernel-panic-hook -> origin/feature/kernel-panic-hook
* [新分支] feature/multi-dtb -> origin/feature/multi-dtb
* [新分支] feature/openarena -> origin/feature/openarena
* [新分支] feature/sailfish -> origin/feature/sailfish
* [新分支] feature/unity8-meta -> origin/feature/unity8-meta
* [新分支] feature/unity8_arches -> origin/feature/unity8_arches
* [新分支] fix-dtimg -> origin/fix-dtimg
* [新分支] fix/allwinner-source-symlinks -> origin/fix/allwinner-source-symlinks
* [新分支] fix/imagemagick-corruption -> origin/fix/imagemagick-corruption
* [新分支] geary_purism_fork -> origin/geary_purism_fork
* [新分支] gnome-contacts-importing -> origin/gnome-contacts-importing
* [新分支] gpsd_pds -> origin/gpsd_pds
* [新分支] hammerhead-improvements -> origin/hammerhead-improvements
* [新分支] hammerhead-venus -> origin/hammerhead-venus
* [新分支] kirigami-lowpower -> origin/kirigami-lowpower
* [新分支] lib-firmware-postmarketos -> origin/lib-firmware-postmarketos
* [新分支] main_postmarketos-upgrade-gtk3 -> origin/main_postmarketos-upgrade-gtk3
* [新分支] master -> origin/master
* [新分支] mms_purple -> origin/mms_purple
* [新分支] mygnuhealth -> origin/mygnuhealth
* [新分支] ondev-0.3.0 -> origin/ondev-0.3.0
* [新分支] openrc-fix -> origin/openrc-fix
* [新分支] openrc-post-install-ci -> origin/openrc-post-install-ci
* [新分支] osk_sdl_0.62 -> origin/osk_sdl_0.62
* [新分支] pine-a64lts-dsi -> origin/pine-a64lts-dsi
* [新分支] plasma-phone-vkbd -> origin/plasma-phone-vkbd
* [新分支] remove-unused-files -> origin/remove-unused-files
* [新分支] sxmo-eg25-manager -> origin/sxmo-eg25-manager
* [新分支] tinydm-elogind -> origin/tinydm-elogind
* [新分支] unmaintained -> origin/unmaintained
* [新分支] upgrade/kde_plasma-videoplayer -> origin/upgrade/kde_plasma-videoplayer
* [新分支] v20.05 -> origin/v20.05
* [新分支] v20.05_l5_uboot_arm -> origin/v20.05_l5_uboot_arm
当前分支没有跟踪信息。
请指定您要合并哪一个分支。
详见 git-pull(1)。
git pull <远程> <分支>
如果您想要为此分支创建跟踪信息,您可以执行:
git branch --set-upstream-to=origin/<分支> master
$ pmbootstrap init
[23:07:31] Location of the 'work' path. Multiple chroots (native, device arch, device rootfs) will be created in there.
[23:07:31] Work path [/home/kearney/Documents/code/postmarketOS]:
[23:07:33] NOTE: pmaports path: /home/kearney/Documents/code/postmarketOS/cache_git/pmaports
[23:07:33] Choose the postmarketOS release channel.
[23:07:33] Available (2):
[23:07:33] * edge: Rolling release channel
[23:07:33] * stable: Stable release channel (first beta v20.05, does not have many devices yet)
[23:07:33] Channel [edge]: 2
[23:08:19] ERROR: Invalid channel specified, please type in one from the list above.
[23:08:19] Channel [edge]: first
[23:08:34] ERROR: Invalid channel specified, please type in one from the list above.
[23:08:34] Channel [edge]: v20.00
[23:08:47] ERROR: Invalid channel specified, please type in one from the list above.
[23:08:47] Channel [edge]: v20
[23:08:53] ERROR: Invalid channel specified, please type in one from the list above.
[23:08:53] Channel [edge]: master
[23:08:56] ERROR: Invalid channel specified, please type in one from the list above.
[23:08:56] Channel [edge]: iphone
[23:09:01] ERROR: Invalid channel specified, please type in one from the list above.
[23:09:01] Channel [edge]:
???你这倒是给我list啊
爬爬爬、一直犹豫不觉。。。后来想了下list above。。在上面列出来。。。赶紧回去看上头
[22:59:48] ERROR: Failed to read channels.cfg from 'origin/master' branch of your local pmaports clone
[23:07:33] Choose the postmarketOS release channel.
[23:07:33] Available (2):
[23:07:33] * edge: Rolling release channel
[23:07:33] * stable: Stable release channel (first beta v20.05, does not have many devices yet)
[23:07:33] Channel [edge]: 2
哦吼,是我傻了,敲个edge就完事
[23:26:45] Channel [edge]: edge
[23:27:50] Choose your target device vendor (either an existing one, or a new one for porting).
[23:27:50] Available vendors (55): acer, alcatel, amazon, arrow, asus, bq, chuwi, cubietech, essential, 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, trekstor, vernee, wexler, wiko, wileyfox, xiaomi, yu, zte, zuk
[23:27:50] Vendor [qemu]:
然后我就去Devices - postmarketOS找ipone4的影子。。发现裂开
iphone位于Testing清单中,而4还在Non-booting devices清单中。。哭泣。。于是我这一晚上完了个寂寞