arch-flo-junk/README.md

139 lines
4.9 KiB
Markdown
Raw Normal View History

2014-02-18 12:22:50 +00:00
# Arch Linux on Nexus 7 Flo Native
Here are my instructions on getting Arch Linux ARM natively booting on the
Nexus 7 Flo. Ideally this would be booting from a usb stick or a dedicated
2014-03-07 12:54:17 +00:00
partition on the mmc but this is working for me now.
2014-02-18 12:22:50 +00:00
## BUGS!!!
There is no frambuffer console :(
If you cannot get it booting you will need to
reboot into recovery and check /proc/last_kmsg for the errors. Or try and build
the UART cable (which I failed at)
The Software Refresher in the kernel does not work. You will need to run my
refresher app or fix the kernel :)
2014-02-26 03:38:10 +00:00
The new xa code from x86-video-freedreno-git does not work. gpuaddr in
kgsl_bo_gpuaddr comes back a 0
## Quick Guide
2014-02-18 12:22:50 +00:00
1: I roughly followed the instructions form
https://github.com/borh/nexus-7-2013-arch-scripts to get a working chroot
first.
1a: remove trimslice packages from chroot
2014-02-18 12:22:50 +00:00
2: Edit the init script to point to your arch.img or partition
3: Edit and Run makebootimage.sh
4: fastboot boot newboot
5: ???
6: Profit
## To get WiFi Working
A normal Nexus 7 Flo boot will call /system/bin/conn_init which does a whole
lot of verifying your mac address and then writes out a config with the mac
address in it. Very annoying. To get around this you need a copy of the wifi
configs and manually enable the wifi driver since it does not start on boot.
The firmware.service is only needed since I do not load the firmware in the
initramfs (which I am haven't done yet)
1: Copy /system/vendor/firmware [android] to /usr/lib/firmware [arch]
2: rm /usr/lib/firmware/wlan/prima/{WCNSS_qcom_cfg.ini,WCNSS_qcom_wlan_nv.bin} <-- these are simlinks
3: cp /data/misc/wifi/{WCNSS_qcom_cfg.ini,WCNSS_qcom_wlan_nv.bin} /usr/lib/firmware/wlan/prima/ <-- these are the files which conn_init writes your mac address to
4: Copy firmware.service to /etc/systemd/system/
5: ln -s /etc/systemd/system/firmware.service /etc/systemd/system/multi-user.target.wants/firmware.service
6: ln -s /lib/systemd/system/wpa_supplicant-nl80211@wlan0.service /etc/systemd/system/multi-user.target.wants/wpa_supplicant-nl80211@wlan0.service
7: ln -s /lib/systemd/system/dhcpcd.service /etc/systemd/system/multi-user.target.wants/dhcpcd.service
8: ln -s /lib/systemd/system/sshd.service /etc/systemd/system/multi-user.target.wants/sshd.service
2014-02-18 12:22:50 +00:00
2014-02-26 03:52:30 +00:00
Note: Disable the wpa_supplicant hook in /etc/dhcpcd.conf
2014-02-18 12:22:50 +00:00
## To get fbterm console
Copy fbterm/getty@.service to /etc/systemd/system/ and fbterm/fbterm-login to
/opt/fbterm-login and then systemctl enable getty@tty1.service
ln -s getty@.service autovt@.service to get it on all vt's
2014-02-18 12:22:50 +00:00
## To get X working
Install xf86-video-freedreno-git (aur) Use the xorg.conf included
2014-02-18 12:22:50 +00:00
Instead of filling the AUR with crap you can use the mesa and libdrm PKGBUILDs
included. Always use the git versions as they have the latest freedreno fixes
2014-02-18 12:22:50 +00:00
Your .xinitrc should contain something like
~/refresher &
exec awesome
## Refreshing (refresher.c)
Since the MSMFB_SW_REFRESHER does not seem to be working i wrote this instead.
Just compile and put in you ~/ or whereever so xinit can run it.
# Kernel stuff
2014-02-26 03:44:28 +00:00
You can use the kernel from here https://github.com/crondog/kernel_msm
2014-02-18 12:22:50 +00:00
## To get Touchscreen working
Apply 0001-make-ektf3k-driver-report-non-MT-events-too.patch
2014-04-11 06:09:15 +00:00
## Debugging
USB serial works. I had some problems connecting with the Android Composite
Gadget however just using USB_G_SERIAL seems to work. To enable run systemctl
enable serial-getty@ttyGS0.service and then you will be able to connect to the
device via minicom or similar on /dev/ttyACM0. Getting kernel console boot
messages is still a no go as the device is registered too late to work
2014-02-18 12:22:50 +00:00
## Kernel configs
I used the following additional configs to get this working. Some might not be
necessary but it helps with debugging
2014-02-26 03:52:30 +00:00
CONFIG_FB_MSM_DEFAULT_DEPTH_BGRA8888 (with RGBA patch from robclark)
2014-02-18 12:22:50 +00:00
CONFIG_FHANDLE=y
CONFIG_DEVTMPFS=y
CONFIG_UTS_NS=y
CONFIG_IPC_NS=y
CONFIG_USER_NS=y
CONFIG_PID_NS=y
CONFIG_NET_NS=y
CONFIG_DEVPTS_MULTIPLE_INSTANCES=y
CONFIG_FANOTIFY=y
CONFIG_FANOTIFY_ACCESS_PERMISSIONS=y
CONFIG_DETECT_HUNG_TASK=y
CONFIG_DEBUG_SPINLOCK=y
CONFIG_DEBUG_MUTEXES=y
CONFIG_DEBUG_ATOMIC_SLEEP=y
CONFIG_STACKTRACE=y
CONFIG_DEBUG_BUGVERBOSE=y
CONFIG_SECURITY_SELINUX_BOOTPARAM=y
## Build initramfs (Manually)
2014-02-18 12:22:50 +00:00
1: Edit makebootimage.sh with paths
2: cd systemd-initramfs; find . | cpio -o -H newc | gzip > ../minimal.initramfs
3: ./makebootimage.sh
2014-02-20 03:26:51 +00:00
## Build initramfs (mkinitcpio)
1: Copy zImage to /boot/
2: Copy modules to /lib/modules/`uname -r`
3: Apply mkinitcpio.patch
4: Copy hooks/imgmount and install/imgmount to /lib/initcpio
5: sudo mkinitcpio -p linux
6: abootimg --create boot.img -f bootimg.cfg -k /boot/zImage -r /boot/initramfs-linux.img
2014-02-20 03:26:51 +00:00
# Whats Working
Wifi
fb0
Audio -- Need to setup Pulse Audio as systemwide. Not sure why it does not work as a normal user
2014-02-20 11:02:08 +00:00
You will also need the alsaucm files from libasound2-data_1.0.27.2-1ubuntu6_all.deb
2014-03-07 12:54:17 +00:00
Bluetooth - We now have bluez5 support :) Only tested with a Wedge keyboard
2014-02-20 03:26:51 +00:00
# Not tested
NFC