Luca Weiss edited this page Jun 16, 2017 · 9 revisions
Table of Contents

Root password

I'm not actually sure, it seems to have changed since earlier fedora arm filesystems. (If someone knows, please edit this ;-))

What I do after creating a new filesystem is just to mount the disk on my laptop, and edit $mountpoint/etc/shadow and change root to:

root::15921:0:99999:7:::

(ie. remove what is between the first and second :)

There may of course be other better ways, but that is pretty simple and works for me.

Getting Kernel Traces

If you don't have a debug UART (for example on a form factor device like phone or tablet), you have a couple options. If the device does not reboot before you have a chance to dump traces:

dmesg > dmesg.txt

I frequently configure the kernel for CONFIG_LOG_BUF_SHIFT=21 to increase the kernel trace buffer size, to avoid loosing traces.

If the device does reboot before you have a chance to collect traces, then the android ram console (CONFIG_ANDROID_RAM_CONSOLE=y) is useful. After reboot, you can get previous boot's traces by:

cat /proc/last_kmsg > dmesg.txt

(If needed, switch back to a known good kernel to collect traces)

err: request_firmware for vidc_1080p.fw error -2

The vidc driver (hw accel video encode/decode... nothing to do w/ 2d/3d/freedreno) in msm android kernel is particularly badly behaved when it can't load it's firmware. If the driver is compiled into the kernel (not built as a module), it needs it's firmware before the root filesystem is mounted. You either need to put vidc_1080p.fw in the initrd, or disable vidc if you don't need it (CONFIG_MSM_VIDC=n) or build vidc as a module (CONFIG_MSM_VIDC=m) and load it after the root filesystem is mounted.

Making NetworkManager behave

If NetworkManager is eating a lot of CPU, it is probably being confused by the rmnet devices. Ask it to ignore them in /etc/NetworkManager/NetworkManager.conf :

[keyfile]
unmanaged-devices=interface-name:rmnet0;interface-name:rmnet1;interface-name:rmnet2;interface-name:rmnet3;interface-name:rmnet4;interface-name:rmnet5;interface-name:rmnet6;interface-name:rmnet7;interface-name:rmnet8;interface-name:rmnet_smux0;interface-name:rev_rmnet0;interface-name:rev_rmnet1;interface-name:rev_rmnet2;interface-name:rev_rmnet3;interface-name:rev_rmnet4;interface-name:rev_rmnet5;interface-name:rev_rmnet6;interface-name:rev_rmnet7;interface-name:rev_rmnet8

Getting Busybox (tar, etc)

If you do not have tar on the board/phone/tablet running android, download it from http://busybox.net/downloads/binaries/latest/busybox-armv7l. Use:

adb push busybox-armv7l /system/bin/busybox
adb shell chmod 0777 /system/bin/busybox

Then either use busybox tar ... or create a symbolic link named tar to busybox to use it

Kernel Debugging Options

Useful debug kernel options to enable when debugging kernel problems:

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_DEBUG_INFO=y

Prebuilt userspace vs system updates

If you are using a prebuilt userspace tarball, and system upgrade (yum/dnf/apt-get upgrade, etc) overwrites mesa/libdrm/xf86-video-freedreno, just re-extract latest prebuilt tarball on top. The most recent prebuilt should be newer version than what is in distro packages.

You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.