linux - get kernel config without having /proc/config.gz - linux

I want to get the kernel defconfig of a Android Mediatek device with closed kernel source with android nougat. (for kernel bringup)
I tried looking for /proc/config.gz it does not exist. Likely cause the kernel was built with CONFIG_IKCONFIG_PROC off.
I tried using https://github.com/torvalds/linux/blob/master/scripts/extract-ikconfig on zImage. No luck. Probably because CONFIG_IKCONFIG was off, since google does not require that for anything lower than android oreo.
Are there any other ways to get the config or is this it? I didn't find any other way so decided to ask here.

Related

Why mdev or udev does not create disk nodes when used kernel is from any distribution

I created a minimal linux init with just busybox to do experiments or use it to recover my work linux. But i got stuck and was fustruted alot that i could not find any disks in /dev. I tried both mounting udev as devtmpfs and tmpfs with mdev -s. Both none seemed to work. Lickily i tried compiling a kernel and booting it i realised kernel was the issue. I also noticed my pluged mouse light was off as if the pc was turned off
I tried kernel from both debian and ubuntu. But same result.
Now im happy with what i got. But using custom kernel means i cant make use of the already existing drivers on a target linux when i do chroot.
So i wanna know why the kernels that come with distros does not generate disk blocks
Edit 1:
My question is,why i cant find ant /dev/sdX or my external keyboard does not work when i boot with kernel from distro isos

Surface book keyboard won't work in scientific Linux

I installed scientific linux 7.4(based on redhat 7.4) in my surface book. My touch pad is working correctly but the problem is the keyboard won't work in this OS. I also found that an external usb keyboard works correctly with it. I have Ubuntu and Windows beside this OS, but I don't have any problem with them. How can I fix this problem?
According to https://www.reddit.com/r/linux/comments/6ca920/ms_surface_keyboard_does_it_play_nice_with_linux/
you would need at least 4.10 kernel for the surface to work properly.
The kernel version in your system can be obtained by uname -rv in the terminal.
The easiest solution is to update the kernel / linux-firmware package from your distro package manager.
If this does not work, probably you would need to reconfigure or update and reconfigure the kernel (e.g. to the latest stable mainline from https://www.kernel.org/)
A nice guide for configuration can be found here https://www.dotslashlinux.com/2017/09/11/the-linux-kernel-configuration-guide-part-11/

Qemu-ARM user emulation. Error when using Go

I want to customize an image I created for an ARM device (Odroid C1+). Especially I want to checkout some git repositories and install their dependencies.
But when installing go libraries, this bug is happening: https://github.com/golang/go/issues/13024
Is there a workaround? Or do you know another user emulator (or similar) to do this?
A workaround would be to use full system emulation in QEMU - just find an ARM kernel that boots in qemu-system-arm and instead of chrooting into the file system from the host, do it from within QEMU.

hcidump binary not found

I'm setting up the BlueZ protocol stack on a custom system using linux 3.3. I'm using buildroot to setup the filesystem, and specifically am using BlueZ-4.101.
I'm attempting to use the hcidump utility to get some logs, but the binary has not been installed.
I've checked that:
Device driver is installed in kernel
BlueZ Utils is enabled in buildroot .config file
Other utilities work, such as hcitool or hciconfig
Going into the Makefile in output/build/bluez_utils-4.101 it would appear that the object file hcidump.o is being compiled into a binary called btmon.
Further investigation would reveal that in Makefile, btmonis assigned to am__EXEEXT_10, and that is then assigned to the variable noinst_PROGRAMS.
So this is where I'm at. I'm pretty sure that this is an automatically generated Makefile by buildroot. I'm not sure how these files are generated, thus I'm unsure as to why btmon is being assigned to the noinst_PROGRAMS variable.
In summary, I believe that my version of BlueZ uses a binary btmon instead of hcidump. btmon is compiled (binary seen at output/build/bluez_utils-4.101/monitor/btmon), but not being installed onto my target system because of instructions in Makefile.
My best guess would something weird about compatibility between my kernel version and bluez. Any suggestions would be greatly appreciated!
In BlueZ 4, hcidump was distributed as a separate package, bluez-hcidump. This has never been packaged in buildroot, however. So either create your own package for bluez-hcidump, or switch to BlueZ 5. BleuZ 5 is provided by buildroot starting from 2014.08.

Kernel Code : where can I find and how to debug the kernel

Recently I have installed Ubuntu 12.04 LTS ISO image in my desktop. Below is the output of the kernel version I have installed:
# uname -r
3.5.0-41-generic
I am trying to develop a VFS and want the kernel source code version '3.5.0-41-generic' for reference purpose - where can I find the same?
What are the excellent kernel debugging options looking at logs and mapping them to kernel code?
How and which debugger I can use to debug a live kernel flow execution?
Are there ways I can add more printk methods and re-modify the modules? Say I want to know how a FS mount method works - I can modify the required FS code (adding more printk functions) re-compile and reload the modules. Now with aid of my new printk functions I can understand the flow
Why don't you install vanilla 3.5 kernel and try to develop on it?
As a kernel debugger you can use kGDB or just printk.
But... I suggest you to test your vfs on linux running on qemu. Qemu is able to debug the running linux - so you can connect gdb to it and debug the whole emulating system.

Resources