map220v / postmarket_xiaomi_nabu Goto Github PK
View Code? Open in Web Editor NEWPostmarketOS for Xiaomi Pad 5
PostmarketOS for Xiaomi Pad 5
Hi,
I Just try to build your repo. i have an error on 'pmbootstrap install' command. what am i missing?
`
ERROR: linux-postmarketos-qcom-sm8150-nabu: build failed
(285702) [09:46:02] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
(285702) [09:46:02] NOTE: The failed command's output is above the ^^^ line in the log file: /home/emretoprak/.local/var/pmbootstrap/log.txt
(285702) [09:46:02] ERROR: Command failed (exit code 1): (native) % cd /home/pmos/build; busybox su pmos -c CARCH=aarch64 SUDO_APK='abuild-apk --no-progress' CROSS_COMPILE=aarch64-alpine-linux-musl- CC=aarch64-alpine-linux-musl-gcc HOME=/home/pmos abuild -D postmarketOS -d
RuntimeError: Command failed (exit code 1): (native) % cd /home/pmos/build; busybox su pmos -c CARCH=aarch64 SUDO_APK='abuild-apk --no-progress' CROSS_COMPILE=aarch64-alpine-linux-musl- CC=aarch64-alpine-linux-musl-gcc HOME=/home/pmos abuild -D postmarketOS -d
`
Hi,
im trying to install PMOS on my Xiaomi Nabu, but i have encountered a few problems.
After downloading PKGBUILDs from this repository i tried to create rootfs with pmbootstrap install yet it quietly stuck on kernel building, i fixed that by updating commit in PKGBUILD to the latest available in kernel repository and fixing checksums (to one with sound nodes) and updating kernel config accordingly, building kernel now goes further yet it crashes on compiling DTB's without any reasonable output in pmbootstrap log, only that it crashed on kernel's Makefile: 1199 without any additional error output.
Can you update PKGBUILD and Kconfig of kernel package to latest local changes you've made in kernel repository, or provide any tips on how to compile these packages, maybe i am doing something wrong with Kconfig and it crashes....
Thank You for any moment spent on the issue
With pmbootstrap-2.0.0 I have got the following errors:
pmbootstrap build device-xiaomi-nabu
-> Error: "/etc/deviceinfo" not found
pmbootstrap install
-> ERROR: device-postmarketos-qcom-sm8150-nabu: deviceinfo is missing in checksums
My apologies to reach you on such a trivial issue, but is it possible for you to give a few more info on how to use this repo?
Hi. Ln8000 charger is not working on pmos currently on this device.
I have found driver in https://github.com/MiCode/Xiaomi_Kernel_OpenSource/tree/nabu-r-oss/drivers/power/supply/ti
Should i try to port this to mainline kernel or you are already working on this?
Hi,
Sorry to bother you, but i think i'm stuck with flashing the device.
pmbootstrap install
fails with 'no space left on device' errorcp: can't create directory '/mnt/install/proc': No space left on device
cp: can't create directory '/mnt/install/root': No space left on device
cp: can't create directory '/mnt/install/sys': No space left on device
cp: can't create directory '/mnt/install/mnt': No space left on device
cp: can't create directory '/mnt/install/tmp': No space left on device
cp: can't create directory '/mnt/install/media': No space left on device
cp: can't create directory '/mnt/install/srv': No space left on device
cp: can't create directory '/mnt/install/opt': No space left on device
(551213) [21:17:20] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
(551213) [21:17:20] NOTE: The failed command's output is above the ^^^ line in the log file: /home/lexa/.local/var/pmbootstrap/log.txt
(551213) [21:17:20] ERROR: Command failed (exit code 1): (native) % cd /mnt/rootfs_xiaomi-nabu; cp -a sbin lib usr bin a run etc var dev proc root sys mnt tmp boot media srv opt /mnt/install/
pmbootstrap export
$ ls /tmp/postmarketOS-export/
boot.img initramfs initramfs-extra vmlinuz xiaomi-nabu.img
pmbootstrap flasher boot
fails withBooting FAILED (remote: 'Failed to load/authenticate boot image: Load Error')
fastboot boot /tmp/postmarketOS-export/boot.img
reboots device to a black screen, but i can still see it in fastboot devices
list, so i assume something is still wrong with itpmbootstrap flasher flash_kernel
workspmbootstrap flashed flash_rootfs
fails$pmbootstrap flasher flash_rootfs
[21:28:31] (native) flash rootfs image
[21:28:35] (native) install android-tools
Sending 'system' (545792 KB) OKAY [ 23.043s]
Writing 'system' FAILED (remote: '(system_a) No such partition')
fastboot: error: Command failed
Looks like i'm doing something wrong. Can you give a hint?
Thanks for this repo, I could bring your files in pmbootstrap
and generate the necessary binaries(boot.img, firmware, etc).
However, while booting the kernel it takes a while and gets stuck at boot partition not found
.
Could you please help me understand how you partition the UFS and what additional steps I need to make everything work?
Cheers.
20:50:26.663656 Generating for kernel version: 6.4.0-sm8150
20:50:26.666431 Output directory: /boot
20:50:26.666643 Unknown or no compression format set, using gzip
20:50:26.666720 == Generating initramfs ==
20:50:26.666842 - Using compression format gzip with level "default"
20:50:26.667504 - Searching for directories specified in /usr/share/mkinitfs/dirs
20:50:26.668234 -- Creating directories from: /usr/share/mkinitfs/dirs/00-initramfs-base.dirs
20:50:26.669576 - Searching for directories specified in /etc/mkinitfs/dirs
20:50:26.670009 - Searching for file lists from /usr/share/mkinitfs/files
20:50:26.670485 -- Including files from: /usr/share/mkinitfs/files/00-initramfs-base.files
20:50:26.677912 -- Including files from: /usr/share/mkinitfs/files/10-setup-dynamic-partitions.files
20:50:26.679093 -- Including files from: /usr/share/mkinitfs/files/30-gpu-firmware.files
20:50:26.679612 -- Including files from: /usr/share/mkinitfs/files/30-postmarketos-bootsplash.files
20:50:26.680341 - Searching for file lists from /etc/mkinitfs/files
20:50:26.680449 - Searching for hook scripts from /usr/share/mkinitfs/hooks
20:50:26.680567 - Searching for hook scripts from /etc/mkinitfs/hooks
20:50:26.681193 - Searching for kernel modules from /usr/share/mkinitfs/modules
20:50:26.681414 -- Including modules from: /usr/share/mkinitfs/modules/00-default.modules
20:50:26.752259 - Searching for kernel modules from /etc/mkinitfs/modules
20:50:27.381828 initramfs completed in: 0.71s
20:50:27.382790 Unknown or no compression format set, using gzip
20:50:27.382831 == Generating initramfs-extra ==
20:50:27.382892 - Using compression format gzip with level "default"
20:50:27.383247 - Searching for file lists from /usr/share/mkinitfs/files-extra
20:50:27.383407 -- Including files from: /usr/share/mkinitfs/files-extra/00-initramfs-extra-base.files
20:50:27.391876 - Searching for file lists from /etc/mkinitfs/files-extra
20:50:27.392008 - Searching for hook scripts from /usr/share/mkinitfs/hooks-extra
20:50:27.392076 - Searching for hook scripts from /etc/mkinitfs/hooks-extra
20:50:27.392339 - Searching for kernel modules from /usr/share/mkinitfs/modules-extra
20:50:27.392693 - Searching for kernel modules from /etc/mkinitfs/modules-extra
20:50:28.039398 initramfs-extra completed in: 0.66s
20:50:28.039576 == Using boot-deploy to finalize/install files ==
==> kernel: device-tree blob operations
==> kernel: appending device-tree qcom/sm8150-xiaomi-nabu
==> initramfs: creating boot.img
==> Checking free space at /boot
... OK!
==> Installing: /boot/initramfs
==> Installing: /boot/initramfs-extra
==> Installing: /boot/vmlinuz-sm8150-dtb
==> Installing: /boot/boot.img
20:50:32.569807 boot-deploy completed in: 4.53s
20:50:32.580613 mkinitfs completed in: 5.92s
(1146275) [20:50:32] % sudo umount /home/srikant/.local/var/pmbootstrap/chroot_rootfs_postmarketos-qcom-sm8150-nabu/var/cache/distfiles
(1146275) [20:50:32] % sudo umount /home/srikant/.local/var/pmbootstrap/chroot_rootfs_postmarketos-qcom-sm8150-nabu/var/cache/apk
(1146275) [20:50:32] % sudo umount /home/srikant/.local/var/pmbootstrap/chroot_rootfs_postmarketos-qcom-sm8150-nabu/usr/bin/qemu-aarch64-static
(1146275) [20:50:32] % sudo umount /home/srikant/.local/var/pmbootstrap/chroot_rootfs_postmarketos-qcom-sm8150-nabu/proc
(1146275) [20:50:32] % sudo umount /home/srikant/.local/var/pmbootstrap/chroot_rootfs_postmarketos-qcom-sm8150-nabu/mnt/pmbootstrap/sccache
(1146275) [20:50:32] % sudo umount /home/srikant/.local/var/pmbootstrap/chroot_rootfs_postmarketos-qcom-sm8150-nabu/mnt/pmbootstrap/rust
(1146275) [20:50:32] % sudo umount /home/srikant/.local/var/pmbootstrap/chroot_rootfs_postmarketos-qcom-sm8150-nabu/mnt/pmbootstrap/packages
(1146275) [20:50:32] % sudo umount /home/srikant/.local/var/pmbootstrap/chroot_rootfs_postmarketos-qcom-sm8150-nabu/mnt/pmbootstrap/netboot
(1146275) [20:50:32] % sudo umount /home/srikant/.local/var/pmbootstrap/chroot_rootfs_postmarketos-qcom-sm8150-nabu/mnt/pmbootstrap/go
(1146275) [20:50:32] % sudo umount /home/srikant/.local/var/pmbootstrap/chroot_rootfs_postmarketos-qcom-sm8150-nabu/mnt/pmbootstrap/git
(1146275) [20:50:32] % sudo umount /home/srikant/.local/var/pmbootstrap/chroot_rootfs_postmarketos-qcom-sm8150-nabu/mnt/pmbootstrap/ccache
(1146275) [20:50:32] % sudo umount /home/srikant/.local/var/pmbootstrap/chroot_rootfs_postmarketos-qcom-sm8150-nabu/mnt/pmbootstrap/abuild-config
(1146275) [20:50:32] % sudo umount /home/srikant/.local/var/pmbootstrap/chroot_rootfs_postmarketos-qcom-sm8150-nabu/mnt/appstream-data
(1146275) [20:50:32] % sudo umount /home/srikant/.local/var/pmbootstrap/chroot_rootfs_postmarketos-qcom-sm8150-nabu/etc/apk/keys
(1146275) [20:50:32] % sudo umount /home/srikant/.local/var/pmbootstrap/chroot_rootfs_postmarketos-qcom-sm8150-nabu/dev/shm
(1146275) [20:50:32] % sudo umount /home/srikant/.local/var/pmbootstrap/chroot_rootfs_postmarketos-qcom-sm8150-nabu/dev
(1146275) [20:50:32] % sudo rm /home/srikant/.local/var/pmbootstrap/chroot_rootfs_postmarketos-qcom-sm8150-nabu/in-pmbootstrap
(1146275) [20:50:32] % sudo rmdir /home/srikant/.local/var/pmbootstrap/chroot_rootfs_postmarketos-qcom-sm8150-nabu/mnt/pmbootstrap/packages
(1146275) [20:50:32] % sudo rmdir /home/srikant/.local/var/pmbootstrap/chroot_rootfs_postmarketos-qcom-sm8150-nabu/mnt/pmbootstrap/netboot
(1146275) [20:50:32] % sudo rmdir /home/srikant/.local/var/pmbootstrap/chroot_rootfs_postmarketos-qcom-sm8150-nabu/mnt/pmbootstrap/rust
(1146275) [20:50:32] % sudo rmdir /home/srikant/.local/var/pmbootstrap/chroot_rootfs_postmarketos-qcom-sm8150-nabu/mnt/pmbootstrap/go
(1146275) [20:50:32] % sudo rmdir /home/srikant/.local/var/pmbootstrap/chroot_rootfs_postmarketos-qcom-sm8150-nabu/mnt/pmbootstrap/ccache
(1146275) [20:50:32] % sudo rmdir /home/srikant/.local/var/pmbootstrap/chroot_rootfs_postmarketos-qcom-sm8150-nabu/mnt/pmbootstrap/git
(1146275) [20:50:32] % sudo rmdir /home/srikant/.local/var/pmbootstrap/chroot_rootfs_postmarketos-qcom-sm8150-nabu/mnt/pmbootstrap/abuild-config
(1146275) [20:50:32] % sudo rmdir /home/srikant/.local/var/pmbootstrap/chroot_rootfs_postmarketos-qcom-sm8150-nabu/mnt/pmbootstrap/sccache
(1146275) [20:50:32] % sudo rmdir /home/srikant/.local/var/pmbootstrap/chroot_rootfs_postmarketos-qcom-sm8150-nabu/mnt/pmbootstrap
(1146275) [20:50:32] *** (4/4) FILL INSTALL BLOCKDEVICE ***
(1146275) [20:50:32] (native) copy rootfs_postmarketos-qcom-sm8150-nabu to /mnt/install/
(1146275) [20:50:32] % sudo mount --bind /home/srikant/.local/var/pmbootstrap/chroot_rootfs_postmarketos-qcom-sm8150-nabu /home/srikant/.local/var/pmbootstrap/chroot_native/mnt/rootfs_postmarketos-qcom-sm8150-nabu
(1146275) [20:50:32] % sudo rm /home/srikant/.local/var/pmbootstrap/chroot_native/mnt/rootfs_postmarketos-qcom-sm8150-nabu/usr/bin/qemu-aarch64-static
(1146275) [20:50:32] % sudo rm /home/srikant/.local/var/pmbootstrap/chroot_rootfs_postmarketos-qcom-sm8150-nabu/tmp/apk_progress_fifo
(1146275) [20:50:32] (native) % cd /mnt/rootfs_postmarketos-qcom-sm8150-nabu; cp -a boot dev root media tmp var etc opt sbin run bin srv mnt proc lib sys usr /mnt/install/
(1146275) [20:50:35] % sudo mkdir /home/srikant/.local/var/pmbootstrap/chroot_native/mnt/install/home
(1146275) [20:50:35] % sudo cp -a /home/srikant/.local/var/pmbootstrap/chroot_native/mnt/install/etc/skel /home/srikant/.local/var/pmbootstrap/chroot_native/mnt/install/home/user
(1146275) [20:50:35] % sudo chown -R 10000 /home/srikant/.local/var/pmbootstrap/chroot_native/mnt/install/home/user
(1146275) [20:50:35] % sudo cp /home/srikant/.local/var/pmbootstrap/config_apk_keys/[email protected] /home/srikant/.local/var/pmbootstrap/chroot_native/mnt/install/etc/apk/keys/
(1146275) [20:50:35] % sudo cp /home/srikant/.local/var/pmbootstrap/config_apk_keys/[email protected] /home/srikant/.local/var/pmbootstrap/chroot_native/mnt/install/etc/apk/keys/
(1146275) [20:50:35] % sudo cp /home/srikant/.local/var/pmbootstrap/config_apk_keys/[email protected] /home/srikant/.local/var/pmbootstrap/chroot_native/mnt/install/etc/apk/keys/
(1146275) [20:50:35] % sudo cp /home/srikant/.local/var/pmbootstrap/config_apk_keys/[email protected] /home/srikant/.local/var/pmbootstrap/chroot_native/mnt/install/etc/apk/keys/
(1146275) [20:50:35] % sudo cp /home/srikant/.local/var/pmbootstrap/config_apk_keys/[email protected] /home/srikant/.local/var/pmbootstrap/chroot_native/mnt/install/etc/apk/keys/
(1146275) [20:50:35] % sudo cp /home/srikant/.local/var/pmbootstrap/config_apk_keys/[email protected] /home/srikant/.local/var/pmbootstrap/chroot_native/mnt/install/etc/apk/keys/
(1146275) [20:50:35] % sudo cp /home/srikant/.local/var/pmbootstrap/config_apk_keys/[email protected] /home/srikant/.local/var/pmbootstrap/chroot_native/mnt/install/etc/apk/keys/
(1146275) [20:50:35] % sudo cp /home/srikant/.local/var/pmbootstrap/config_apk_keys/[email protected] /home/srikant/.local/var/pmbootstrap/chroot_native/mnt/install/etc/apk/keys/
(1146275) [20:50:35] % sudo cp /home/srikant/.local/var/pmbootstrap/config_apk_keys/[email protected] /home/srikant/.local/var/pmbootstrap/chroot_native/mnt/install/etc/apk/keys/
(1146275) [20:50:35] % sudo cp /home/srikant/.local/var/pmbootstrap/config_apk_keys/[email protected] /home/srikant/.local/var/pmbootstrap/chroot_native/mnt/install/etc/apk/keys/
(1146275) [20:50:35] % sudo cp /home/srikant/.local/var/pmbootstrap/config_apk_keys/[email protected] /home/srikant/.local/var/pmbootstrap/chroot_native/mnt/install/etc/apk/keys/
(1146275) [20:50:35] % sudo cp /home/srikant/.local/var/pmbootstrap/config_apk_keys/[email protected] /home/srikant/.local/var/pmbootstrap/chroot_native/mnt/install/etc/apk/keys/
(1146275) [20:50:35] % sudo cp /home/srikant/.local/var/pmbootstrap/config_apk_keys/[email protected] /home/srikant/.local/var/pmbootstrap/chroot_native/mnt/install/etc/apk/keys/
(1146275) [20:50:35] % sudo cp /home/srikant/.local/var/pmbootstrap/config_apk_keys/[email protected] /home/srikant/.local/var/pmbootstrap/chroot_native/mnt/install/etc/apk/keys/
(1146275) [20:50:35] % sudo cp /home/srikant/.local/var/pmbootstrap/config_apk_keys/[email protected] /home/srikant/.local/var/pmbootstrap/chroot_native/mnt/install/etc/apk/keys/
(1146275) [20:50:35] % sudo cp /home/srikant/.local/var/pmbootstrap/config_apk_keys/[email protected] /home/srikant/.local/var/pmbootstrap/chroot_native/mnt/install/etc/apk/keys/
(1146275) [20:50:35] % sudo cp /home/srikant/.local/var/pmbootstrap/config_apk_keys/build.postmarketos.org.rsa.pub /home/srikant/.local/var/pmbootstrap/chroot_native/mnt/install/etc/apk/keys/
(1146275) [20:50:35] % sudo cp /home/srikant/.local/var/pmbootstrap/config_apk_keys/[email protected] /home/srikant/.local/var/pmbootstrap/chroot_native/mnt/install/etc/apk/keys/
(1146275) [20:50:35] % sudo cp /home/srikant/.local/var/pmbootstrap/config_apk_keys/[email protected] /home/srikant/.local/var/pmbootstrap/chroot_native/mnt/install/etc/apk/keys/
(1146275) [20:50:35] % sudo cp /home/srikant/.local/var/pmbootstrap/cache_apk_aarch64/APKINDEX.bdd0d494.tar.gz /home/srikant/.local/var/pmbootstrap/chroot_native/mnt/install/var/cache/apk/
(1146275) [20:50:35] % sudo cp /home/srikant/.local/var/pmbootstrap/cache_apk_aarch64/APKINDEX.066df28d.tar.gz /home/srikant/.local/var/pmbootstrap/chroot_native/mnt/install/var/cache/apk/
(1146275) [20:50:35] % sudo cp /home/srikant/.local/var/pmbootstrap/cache_apk_aarch64/APKINDEX.b53994b4.tar.gz /home/srikant/.local/var/pmbootstrap/chroot_native/mnt/install/var/cache/apk/
(1146275) [20:50:35] % sudo cp /home/srikant/.local/var/pmbootstrap/cache_apk_aarch64/APKINDEX.30e6f5af.tar.gz /home/srikant/.local/var/pmbootstrap/chroot_native/mnt/install/var/cache/apk/
(1146275) [20:50:35] % sudo sed -i //mnt/pmbootstrap/packages/d /home/srikant/.local/var/pmbootstrap/chroot_native/mnt/install/etc/apk/repositories
(1146275) [20:50:35] % cat /home/srikant/.local/var/pmbootstrap/chroot_native/mnt/install/etc/apk/repositories
http://mirror.postmarketos.org/postmarketos/master
http://dl-cdn.alpinelinux.org/alpine/edge/main
http://dl-cdn.alpinelinux.org/alpine/edge/community
http://dl-cdn.alpinelinux.org/alpine/edge/testing
(1146275) [20:50:35] % sudo umount /home/srikant/.local/var/pmbootstrap/chroot_native/mnt/install/boot
(1146275) [20:50:36] % sudo umount /home/srikant/.local/var/pmbootstrap/chroot_native/mnt/install
(1146275) [20:50:36] (native) umount /dev/loop20
(1146275) [20:50:36] (native) % losetup -d /dev/loop20
(1146275) [20:50:36] % sudo rm /home/srikant/.local/var/pmbootstrap/chroot_native/in-pmbootstrap
(1146275) [20:50:36] (native) make sparse rootfs
(1146275) [20:50:36] % sudo touch /home/srikant/.local/var/pmbootstrap/chroot_native/in-pmbootstrap
(1146275) [20:50:36] (native) calculate depends of android-tools (pmbootstrap -v for details)
(1146275) [20:50:36] (native) install android-tools
(1146275) [20:50:36] % sudo rm -f /home/srikant/.local/var/pmbootstrap/chroot_native/tmp/apk_progress_fifo
(1146275) [20:50:36] % sudo mkfifo /home/srikant/.local/var/pmbootstrap/chroot_native/tmp/apk_progress_fifo
(1146275) [20:50:36] (native) % cat /tmp/apk_progress_fifo
(1146275) [20:50:36] (native) % sh -c exec 3>/tmp/apk_progress_fifo; apk --no-progress --progress-fd 3 add android-tools
(1146275) [20:50:36] New background process: pid=1151499, output=background
WARNING: opening /mnt/pmbootstrap/packages: No such file or directory
OK: 549 MiB in 195 packages
(1146275) [20:50:37] (native) % cd /home/pmos/rootfs/; busybox su pmos -c HOME=/home/pmos img2simg postmarketos-qcom-sm8150-nabu.img postmarketos-qcom-sm8150-nabu-sparse.img
(1146275) [20:50:38] (native) % cd /home/pmos/rootfs/; busybox su pmos -c HOME=/home/pmos mv -f postmarketos-qcom-sm8150-nabu-sparse.img postmarketos-qcom-sm8150-nabu.img
(1146275) [20:50:41]
(1146275) [20:50:41] *** FLASHING INFORMATION ***
(1146275) [20:50:41] Run the following to flash your installation to the target device:
(1146275) [20:50:41] * pmbootstrap flasher flash_rootfs
(1146275) [20:50:41] Flashes the generated rootfs image to your device:
(1146275) [20:50:41] /home/srikant/.local/var/pmbootstrap/chroot_native/home/pmos/rootfs/postmarketos-qcom-sm8150-nabu.img
(1146275) [20:50:41] (NOTE: This file has a partition table, which contains /boot and / subpartitions. That way we don't need to change the partition layout on your device.)
(1146275) [20:50:41] * pmbootstrap flasher flash_kernel
(1146275) [20:50:41] Flashes the kernel + initramfs to your device:
(1146275) [20:50:41] /home/srikant/.local/var/pmbootstrap/chroot_rootfs_postmarketos-qcom-sm8150-nabu/boot
(1146275) [20:50:41] (NOTE: fastboot also supports booting the kernel/initramfs directly without flashing. Use 'pmbootstrap flasher boot' to do that.)
(1146275) [20:50:41] * If the above steps do not work, you can also create symlinks to the generated files with 'pmbootstrap export' and flash outside of pmbootstrap.
(1146275) [20:50:41]
(1146275) [20:50:41] *** SSH DAEMON INFORMATION ***
(1146275) [20:50:41] SSH daemon is enabled (disable with --no-sshd).
(1146275) [20:50:41] Login as 'user' with the password given during installation.
(1146275) [20:50:41]
(1146275) [20:50:41] *** FIREWALL INFORMATION ***
(1146275) [20:50:41] Firewall is enabled, but may not work (couldn't determine if kernel supports nftables).
(1146275) [20:50:41] For more information: https://postmarketos.org/firewall
(1146275) [20:50:41]
(1146275) [20:50:41] NOTE: chroot is still active (use 'pmbootstrap shutdown' as necessary)
(1146275) [20:50:41] DONE!
(1151574) [20:56:04] % cd /home/srikant/.local/var/pmbootstrap/cache_git/pmaports; git remote -v
origin https://gitlab.com/postmarketOS/pmaports.git (fetch)
origin https://gitlab.com/postmarketOS/pmaports.git (push)
(1151574) [20:56:04] % cd /home/srikant/.local/var/pmbootstrap/cache_git/pmaports; git show origin/master:channels.cfg
Reference: https://postmarketos.org/channels.cfg
...
...
(1146275) [20:50:36] % sudo rm /home/srikant/.local/var/pmbootstrap/chroot_native/in-pmbootstrap
(1146275) [20:50:36] (native) make sparse rootfs
(1146275) [20:50:36] % sudo touch /home/srikant/.local/var/pmbootstrap/chroot_native/in-pmbootstrap
(1146275) [20:50:36] (native) calculate depends of android-tools (pmbootstrap -v for details)
(1146275) [20:50:36] (native) install android-tools
(1146275) [20:50:36] % sudo rm -f /home/srikant/.local/var/pmbootstrap/chroot_native/tmp/apk_progress_fifo
(1146275) [20:50:36] % sudo mkfifo /home/srikant/.local/var/pmbootstrap/chroot_native/tmp/apk_progress_fifo
(1146275) [20:50:36] (native) % cat /tmp/apk_progress_fifo
(1146275) [20:50:36] (native) % sh -c exec 3>/tmp/apk_progress_fifo; apk --no-progress --progress-fd 3 add android-tools
(1146275) [20:50:36] New background process: pid=1151499, output=background
WARNING: opening /mnt/pmbootstrap/packages: No such file or directory
OK: 549 MiB in 195 packages
(1146275) [20:50:37] (native) % cd /home/pmos/rootfs/; busybox su pmos -c HOME=/home/pmos img2simg postmarketos-qcom-sm8150-nabu.img postmarketos-qcom-sm8150-nabu-sparse.img
(1146275) [20:50:38] (native) % cd /home/pmos/rootfs/; busybox su pmos -c HOME=/home/pmos mv -f postmarketos-qcom-sm8150-nabu-sparse.img postmarketos-qcom-sm8150-nabu.img
(1146275) [20:50:41]
(1146275) [20:50:41] *** FLASHING INFORMATION ***
(1146275) [20:50:41] Run the following to flash your installation to the target device:
(1146275) [20:50:41] * pmbootstrap flasher flash_rootfs
(1146275) [20:50:41] Flashes the generated rootfs image to your device:
(1146275) [20:50:41] /home/srikant/.local/var/pmbootstrap/chroot_native/home/pmos/rootfs/postmarketos-qcom-sm8150-nabu.img
(1146275) [20:50:41] (NOTE: This file has a partition table, which contains /boot and / subpartitions. That way we don't need to change the partition layout on your device.)
(1146275) [20:50:41] * pmbootstrap flasher flash_kernel
(1146275) [20:50:41] Flashes the kernel + initramfs to your device:
(1146275) [20:50:41] /home/srikant/.local/var/pmbootstrap/chroot_rootfs_postmarketos-qcom-sm8150-nabu/boot
(1146275) [20:50:41] (NOTE: fastboot also supports booting the kernel/initramfs directly without flashing. Use 'pmbootstrap flasher boot' to do that.)
(1146275) [20:50:41] * If the above steps do not work, you can also create symlinks to the generated files with 'pmbootstrap export' and flash outside of pmbootstrap.
(1146275) [20:50:41]
(1146275) [20:50:41] *** SSH DAEMON INFORMATION ***
(1146275) [20:50:41] SSH daemon is enabled (disable with --no-sshd).
(1146275) [20:50:41] Login as 'user' with the password given during installation.
(1146275) [20:50:41]
(1146275) [20:50:41] *** FIREWALL INFORMATION ***
(1146275) [20:50:41] Firewall is enabled, but may not work (couldn't determine if kernel supports nftables).
(1146275) [20:50:41] For more information: https://postmarketos.org/firewall
(1146275) [20:50:41]
(1146275) [20:50:41] NOTE: chroot is still active (use 'pmbootstrap shutdown' as necessary)
(1146275) [20:50:41] DONE!
(1151574) [20:56:04] % cd /home/srikant/.local/var/pmbootstrap/cache_git/pmaports; git remote -v
origin https://gitlab.com/postmarketOS/pmaports.git (fetch)
origin https://gitlab.com/postmarketOS/pmaports.git (push)
(1151574) [20:56:04] % cd /home/srikant/.local/var/pmbootstrap/cache_git/pmaports; git show origin/master:channels.cfg
Reference: https://postmarketos.org/channels.cfg
[channels.cfg]
recommended=edge
....
(1151574) [20:56:04] % sudo mkdir -p /home/srikant/.local/var/pmbootstrap/chroot_rootfs_postmarketos-qcom-sm8150-nabu/dev
(1151574) [20:56:04] % sudo mount -t tmpfs -o size=1M,noexec,dev tmpfs /home/srikant/.local/var/pmbootstrap/chroot_rootfs_postmarketos-qcom-sm8150-nabu/dev
(1151574) [20:56:04] % sudo mkdir -p /home/srikant/.local/var/pmbootstrap/chroot_rootfs_postmarketos-qcom-sm8150-nabu/dev/pts /home/srikant/.local/var/pmbootstrap/chroot_rootfs_postmarketos-qcom-sm8150-nabu/dev/shm
(1151574) [20:56:04] % sudo mount -t tmpfs -o nodev,nosuid,noexec tmpfs /home/srikant/.local/var/pmbootstrap/chroot_rootfs_postmarketos-qcom-sm8150-nabu/dev/shm
(1151574) [20:56:04] % sudo mknod -m 666 /home/srikant/.local/var/pmbootstrap/chroot_rootfs_postmarketos-qcom-sm8150-nabu/dev/null c 1 3
(1151574) [20:56:04] % sudo mknod -m 666 /home/srikant/.local/var/pmbootstrap/chroot_rootfs_postmarketos-qcom-sm8150-nabu/dev/zero c 1 5
(1151574) [20:56:04] % sudo mknod -m 666 /home/srikant/.local/var/pmbootstrap/chroot_rootfs_postmarketos-qcom-sm8150-nabu/dev/full c 1 7
(1151574) [20:56:04] % sudo mknod -m 644 /home/srikant/.local/var/pmbootstrap/chroot_rootfs_postmarketos-qcom-sm8150-nabu/dev/random c 1 8
(1151574) [20:56:04] % sudo mknod -m 644 /home/srikant/.local/var/pmbootstrap/chroot_rootfs_postmarketos-qcom-sm8150-nabu/dev/urandom c 1 9
(1151574) [20:56:04] % sudo ln -sf /proc/self/fd /home/srikant/.local/var/pmbootstrap/chroot_rootfs_postmarketos-qcom-sm8150-nabu/dev/
(1151574) [20:56:04] % sudo mount --bind /proc /home/srikant/.local/var/pmbootstrap/chroot_rootfs_postmarketos-qcom-sm8150-nabu/proc
(1151574) [20:56:04] % sudo mount --bind /home/srikant/.local/var/pmbootstrap/cache_apk_aarch64 /home/srikant/.local/var/pmbootstrap/chroot_rootfs_postmarketos-qcom-sm8150-nabu/var/cache/apk
(1151574) [20:56:04] % sudo mount --bind /home/srikant/.local/var/pmbootstrap/cache_appstream/aarch64/edge /home/srikant/.local/var/pmbootstrap/chroot_rootfs_postmarketos-qcom-sm8150-nabu/mnt/appstream-data
(1151574) [20:56:04] % sudo mkdir -p /home/srikant/.local/var/pmbootstrap/chroot_rootfs_postmarketos-qcom-sm8150-nabu/mnt/pmbootstrap/ccache
(1151574) [20:56:04] % sudo mount --bind /home/srikant/.local/var/pmbootstrap/cache_ccache_aarch64 /home/srikant/.local/var/pmbootstrap/chroot_rootfs_postmarketos-qcom-sm8150-nabu/mnt/pmbootstrap/ccache
(1151574) [20:56:04] % sudo mount --bind /home/srikant/.local/var/pmbootstrap/cache_distfiles /home/srikant/.local/var/pmbootstrap/chroot_rootfs_postmarketos-qcom-sm8150-nabu/var/cache/distfiles
(1151574) [20:56:04] % sudo mkdir -p /home/srikant/.local/var/pmbootstrap/chroot_rootfs_postmarketos-qcom-sm8150-nabu/mnt/pmbootstrap/git
(1151574) [20:56:04] % sudo mount --bind /home/srikant/.local/var/pmbootstrap/cache_git /home/srikant/.local/var/pmbootstrap/chroot_rootfs_postmarketos-qcom-sm8150-nabu/mnt/pmbootstrap/git
(1151574) [20:56:04] % sudo mkdir -p /home/srikant/.local/var/pmbootstrap/chroot_rootfs_postmarketos-qcom-sm8150-nabu/mnt/pmbootstrap/go
(1151574) [20:56:04] % sudo mount --bind /home/srikant/.local/var/pmbootstrap/cache_go /home/srikant/.local/var/pmbootstrap/chroot_rootfs_postmarketos-qcom-sm8150-nabu/mnt/pmbootstrap/go
(1151574) [20:56:04] % sudo mkdir -p /home/srikant/.local/var/pmbootstrap/chroot_rootfs_postmarketos-qcom-sm8150-nabu/mnt/pmbootstrap/rust
(1151574) [20:56:04] % sudo mount --bind /home/srikant/.local/var/pmbootstrap/cache_rust /home/srikant/.local/var/pmbootstrap/chroot_rootfs_postmarketos-qcom-sm8150-nabu/mnt/pmbootstrap/rust
(1151574) [20:56:04] % sudo mkdir -p /home/srikant/.local/var/pmbootstrap/chroot_rootfs_postmarketos-qcom-sm8150-nabu/mnt/pmbootstrap/abuild-config
(1151574) [20:56:04] % sudo mount --bind /home/srikant/.local/var/pmbootstrap/config_abuild /home/srikant/.local/var/pmbootstrap/chroot_rootfs_postmarketos-qcom-sm8150-nabu/mnt/pmbootstrap/abuild-config
(1151574) [20:56:04] % sudo mount --bind /home/srikant/.local/var/pmbootstrap/config_apk_keys /home/srikant/.local/var/pmbootstrap/chroot_rootfs_postmarketos-qcom-sm8150-nabu/etc/apk/keys
(1151574) [20:56:04] % sudo mkdir -p /home/srikant/.local/var/pmbootstrap/chroot_rootfs_postmarketos-qcom-sm8150-nabu/mnt/pmbootstrap/sccache
(1151574) [20:56:04] % sudo mount --bind /home/srikant/.local/var/pmbootstrap/cache_sccache /home/srikant/.local/var/pmbootstrap/chroot_rootfs_postmarketos-qcom-sm8150-nabu/mnt/pmbootstrap/sccache
(1151574) [20:56:04] % sudo mkdir -p /home/srikant/.local/var/pmbootstrap/chroot_rootfs_postmarketos-qcom-sm8150-nabu/mnt/pmbootstrap/netboot
(1151574) [20:56:04] % sudo mount --bind /home/srikant/.local/var/pmbootstrap/images_netboot /home/srikant/.local/var/pmbootstrap/chroot_rootfs_postmarketos-qcom-sm8150-nabu/mnt/pmbootstrap/netboot
(1151574) [20:56:04] % sudo mkdir -p /home/srikant/.local/var/pmbootstrap/chroot_rootfs_postmarketos-qcom-sm8150-nabu/mnt/pmbootstrap/packages
(1151574) [20:56:04] % sudo mount --bind /home/srikant/.local/var/pmbootstrap/packages/edge /home/srikant/.local/var/pmbootstrap/chroot_rootfs_postmarketos-qcom-sm8150-nabu/mnt/pmbootstrap/packages
(1151574) [20:56:04] % sudo touch /home/srikant/.local/var/pmbootstrap/chroot_rootfs_postmarketos-qcom-sm8150-nabu/usr/bin/qemu-aarch64-static
(1151574) [20:56:04] % sudo mount --bind /home/srikant/.local/var/pmbootstrap/chroot_native/usr/bin/qemu-aarch64 /home/srikant/.local/var/pmbootstrap/chroot_rootfs_postmarketos-qcom-sm8150-nabu/usr/bin/qemu-aarch64-static
(1151574) [20:56:04] % sudo touch /home/srikant/.local/var/pmbootstrap/chroot_rootfs_postmarketos-qcom-sm8150-nabu/in-pmbootstrap
(1151574) [20:56:04] (rootfs_postmarketos-qcom-sm8150-nabu) calculate depends of device-postmarketos-qcom-sm8150-nabu (pmbootstrap -v for details)
(1151574) [20:56:05] (rootfs_postmarketos-qcom-sm8150-nabu) install device-postmarketos-qcom-sm8150-nabu
(1151574) [20:56:05] % sudo mkfifo /home/srikant/.local/var/pmbootstrap/chroot_rootfs_postmarketos-qcom-sm8150-nabu/tmp/apk_progress_fifo
(1151574) [20:56:05] (rootfs_postmarketos-qcom-sm8150-nabu) % cat /tmp/apk_progress_fifo
(1151574) [20:56:05] (rootfs_postmarketos-qcom-sm8150-nabu) % sh -c exec 3>/tmp/apk_progress_fifo; apk --no-progress --progress-fd 3 add device-postmarketos-qcom-sm8150-nabu
(1151574) [20:56:05] New background process: pid=1151689, output=background
OK: 2324 MiB in 797 packages
(1151574) [20:56:07] (rootfs_postmarketos-qcom-sm8150-nabu) % apk --no-progress add -u --virtual .pmbootstrap /mnt/pmbootstrap/packages/aarch64/device-postmarketos-qcom-sm8150-nabu-0.4-r0.apk
(1/1) Installing .pmbootstrap (20230907.152608)
OK: 2324 MiB in 798 packages
(1151574) [20:56:08] (rootfs_postmarketos-qcom-sm8150-nabu) % apk --no-progress del .pmbootstrap
(1/1) Purging .pmbootstrap (20230907.152608)
OK: 2324 MiB in 797 packages
(1151574) [20:56:10] (rootfs_postmarketos-qcom-sm8150-nabu) % apk --no-progress del openssh-client-krb5 vlan
OK: 2324 MiB in 797 packages
(1151574) [20:56:11] (rootfs_postmarketos-qcom-sm8150-nabu) calculate depends of postmarketos-mkinitfs (pmbootstrap -v for details)
(1151574) [20:56:11] (rootfs_postmarketos-qcom-sm8150-nabu) install postmarketos-mkinitfs
(1151574) [20:56:11] % sudo rm -f /home/srikant/.local/var/pmbootstrap/chroot_rootfs_postmarketos-qcom-sm8150-nabu/tmp/apk_progress_fifo
(1151574) [20:56:11] % sudo mkfifo /home/srikant/.local/var/pmbootstrap/chroot_rootfs_postmarketos-qcom-sm8150-nabu/tmp/apk_progress_fifo
(1151574) [20:56:11] (rootfs_postmarketos-qcom-sm8150-nabu) % cat /tmp/apk_progress_fifo
(1151574) [20:56:11] (rootfs_postmarketos-qcom-sm8150-nabu) % sh -c exec 3>/tmp/apk_progress_fifo; apk --no-progress --progress-fd 3 add postmarketos-mkinitfs
(1151574) [20:56:11] New background process: pid=1151723, output=background
OK: 2324 MiB in 797 packages
(1151574) [20:56:13] (rootfs_postmarketos-qcom-sm8150-nabu) mkinitfs postmarketos-qcom-sm8150-nabu
(1151574) [20:56:13] (rootfs_postmarketos-qcom-sm8150-nabu) % mkinitfs
20:56:13.390170 Generating for kernel version: 6.4.0-sm8150
20:56:13.392918 Output directory: /boot
20:56:13.393313 Unknown or no compression format set, using gzip
20:56:13.393392 == Generating initramfs ==
20:56:13.393515 - Using compression format gzip with level "default"
20:56:13.394181 - Searching for directories specified in /usr/share/mkinitfs/dirs
20:56:13.394916 -- Creating directories from: /usr/share/mkinitfs/dirs/00-initramfs-base.dirs
20:56:13.396211 - Searching for directories specified in /etc/mkinitfs/dirs
20:56:13.396609 - Searching for file lists from /usr/share/mkinitfs/files
20:56:13.397117 -- Including files from: /usr/share/mkinitfs/files/00-initramfs-base.files
20:56:13.405077 -- Including files from: /usr/share/mkinitfs/files/10-setup-dynamic-partitions.files
20:56:13.406418 -- Including files from: /usr/share/mkinitfs/files/30-gpu-firmware.files
20:56:13.407108 -- Including files from: /usr/share/mkinitfs/files/30-postmarketos-bootsplash.files
20:56:13.408187 - Searching for file lists from /etc/mkinitfs/files
20:56:13.408370 - Searching for hook scripts from /usr/share/mkinitfs/hooks
20:56:13.408551 - Searching for hook scripts from /etc/mkinitfs/hooks
20:56:13.409529 - Searching for kernel modules from /usr/share/mkinitfs/modules
20:56:13.409850 -- Including modules from: /usr/share/mkinitfs/modules/00-default.modules
20:56:13.486098 - Searching for kernel modules from /etc/mkinitfs/modules
20:56:14.110753 initramfs completed in: 0.72s
20:56:14.111730 Unknown or no compression format set, using gzip
20:56:14.111772 == Generating initramfs-extra ==
20:56:14.111835 - Using compression format gzip with level "default"
20:56:14.112137 - Searching for file lists from /usr/share/mkinitfs/files-extra
20:56:14.112289 -- Including files from: /usr/share/mkinitfs/files-extra/00-initramfs-extra-base.files
20:56:14.120978 - Searching for file lists from /etc/mkinitfs/files-extra
20:56:14.121049 - Searching for hook scripts from /usr/share/mkinitfs/hooks-extra
20:56:14.121140 - Searching for hook scripts from /etc/mkinitfs/hooks-extra
20:56:14.121408 - Searching for kernel modules from /usr/share/mkinitfs/modules-extra
20:56:14.121771 - Searching for kernel modules from /etc/mkinitfs/modules-extra
20:56:14.757263 initramfs-extra completed in: 0.65s
20:56:14.757420 == Using boot-deploy to finalize/install files ==
==> kernel: device-tree blob operations
==> kernel: appending device-tree qcom/sm8150-xiaomi-nabu
==> initramfs: creating boot.img
==> Checking free space at /boot
... OK!
==> Installing: /boot/initramfs
==> Installing: /boot/initramfs-extra
==> Installing: /boot/vmlinuz-sm8150-dtb
==> Installing: /boot/boot.img
20:56:19.369788 boot-deploy completed in: 4.61s
20:56:19.381197 mkinitfs completed in: 5.99s
(1151574) [20:56:19] Check kconfig: /home/srikant/.local/var/pmbootstrap/cache_git/pmaports/device/testing/linux-postmarketos-qcom-sm8150-nabu/config-postmarketos-qcom-sm8150-nabu.aarch64
(1151574) [20:56:19] (native) flash kernel postmarketos-qcom-sm8150-nabu
(1151574) [20:56:19] (native) calculate depends of android-tools (pmbootstrap -v for details)
(1151574) [20:56:20] (native) install android-tools
(1151574) [20:56:20] % sudo rm -f /home/srikant/.local/var/pmbootstrap/chroot_native/tmp/apk_progress_fifo
(1151574) [20:56:20] % sudo mkfifo /home/srikant/.local/var/pmbootstrap/chroot_native/tmp/apk_progress_fifo
(1151574) [20:56:20] (native) % cat /tmp/apk_progress_fifo
(1151574) [20:56:20] (native) % sh -c exec 3>/tmp/apk_progress_fifo; apk --no-progress --progress-fd 3 add android-tools
(1151574) [20:56:20] New background process: pid=1152800, output=background
WARNING: opening /mnt/pmbootstrap/packages: No such file or directory
OK: 549 MiB in 195 packages
(1151574) [20:56:20] (native) % fastboot flash boot_b /mnt/rootfs_postmarketos-qcom-sm8150-nabu/boot/boot.img
Sending 'boot_b' (12840 KB) OKAY [ 0.901s]
Writing 'boot_b' OKAY [ 0.035s]
Finished. Total time: 0.969s
(1151574) [20:56:21] You will get an IP automatically assigned to your USB interface shortly.
(1151574) [20:56:21] Then you can connect to your device using ssh after pmOS has booted:
(1151574) [20:56:21] ssh [email protected]
(1151574) [20:56:21] NOTE: If you enabled full disk encryption, you should make sure that osk-sdl has been properly configured for your device
(1151574) [20:56:21] NOTE: chroot is still active (use 'pmbootstrap shutdown' as necessary)
(1151574) [20:56:21] DONE!
(1152812) [20:56:49] % cd /home/srikant/.local/var/pmbootstrap/cache_git/pmaports; git remote -v
origin https://gitlab.com/postmarketOS/pmaports.git (fetch)
origin https://gitlab.com/postmarketOS/pmaports.git (push)
(1152812) [20:56:49] % cd /home/srikant/.local/var/pmbootstrap/cache_git/pmaports; git show origin/master:channels.cfg
Reference: https://postmarketos.org/channels.cfg
[channels.cfg]
....
.....
(1152812) [20:56:49] (native) flash rootfs image
(1152812) [20:56:49] (native) calculate depends of android-tools (pmbootstrap -v for details)
(1152812) [20:56:50] (native) install android-tools
(1152812) [20:56:50] % sudo rm -f /home/srikant/.local/var/pmbootstrap/chroot_native/tmp/apk_progress_fifo
(1152812) [20:56:50] % sudo mkfifo /home/srikant/.local/var/pmbootstrap/chroot_native/tmp/apk_progress_fifo
(1152812) [20:56:50] (native) % cat /tmp/apk_progress_fifo
(1152812) [20:56:50] (native) % sh -c exec 3>/tmp/apk_progress_fifo; apk --no-progress --progress-fd 3 add android-tools
(1152812) [20:56:50] New background process: pid=1152821, output=background
WARNING: opening /mnt/pmbootstrap/packages: No such file or directory
OK: 549 MiB in 195 packages
(1152812) [20:56:50] (native) % fastboot flash pmos /home/pmos/rootfs/postmarketos-qcom-sm8150-nabu.img
Sending sparse 'pmos' 1/4 (785483 KB) OKAY [ 41.521s]
Writing 'pmos' OKAY [ 0.003s]
Sending sparse 'pmos' 2/4 (775889 KB) OKAY [ 41.889s]
Writing 'pmos' OKAY [ 0.003s]
Sending sparse 'pmos' 3/4 (755105 KB) OKAY [ 44.529s]
Writing 'pmos' OKAY [ 0.003s]
Sending sparse 'pmos' 4/4 (40624 KB) OKAY [ 15.819s]
Writing 'pmos' OKAY [ 0.003s]
Finished. Total time: 144.247s
(1152812) [20:59:14] NOTE: chroot is still active (use 'pmbootstrap shutdown' as necessary)
(1152812) [20:59:14] DONE!
Hello! ๐
Good job on the port! I was wondering, have you considered upstreaming these changes to pmaports and sm8150-mainline, respectively? It would make installing postmarketOS on this device easier for end users.
Thanks in advance.
Hello again
So, I was able to start linux on the device, but it seems that wifi adapter is not there
1: lo: <LOOPBACK> mtu 65536 qdisc noop state DOWN qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: usb0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 9a:b3:4d:45:56:b1 brd ff:ff:ff:ff:ff:ff
5: vethefe5136@if4: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue master docker0 state UP
link/ether 2a:2c:58:5d:d7:ab brd ff:ff:ff:ff:ff:ff
Also i can see in dmesg:
[ 8.667289] platform regulatory.0: Direct firmware load for regulatory.db failed with error -2
[ 8.721317] ath10k_snoc 18800000.wifi: Adding to iommu group 8
[ 8.723844] ath10k_snoc 18800000.wifi: supply vdd-3.3-ch1 not found, using dummy regulator
The firmware files for ath are present, so what could be the problem? Error in .dtd? Or do i need to enable wifi adapter somehow?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.