Show your kernel configuration

Post Reply
mistfire
Posts: 645
Joined: Thu Jul 16, 2020 2:16 am
Location: CALABARZON, PH
Has thanked: 3 times
Been thanked: 142 times

Show your kernel configuration

Post by mistfire »

Share your kernel configuration here on this thread and tell the overview of your kernel configuration.
User avatar
rockedge
Site Admin
Posts: 5702
Joined: Mon Dec 02, 2019 1:38 am
Location: Connecticut,U.S.A.
Has thanked: 1983 times
Been thanked: 2092 times
Contact:

Re: Show your kernel configuration

Post by rockedge »

Linux Kernel: 4.19.82-rt30 (x86_64)
Kernel Version: #1 SMP PREEMPT RT Wed Nov 27 09:24:12 EST 2019
Build GCC: 7.4.0

Kernel Command Line:
pdrv=01cec708-a02c-4fce-8656-50f9700d951f psubdir=/Bionic64-v8 pmedia=atahd pfix=fsck net.ifnames=0

Distro: bionicpup64 8.0

This is a Bionic64-v8 outfitted with a real time kernel. The pdrv is the partition's UUID, psubdir is the frugal directory where the system files reside. pmedia is indicating the partition is on a Hard drive. pfix is set for file system check and net.ifnames ensures that the network devices count starts at eth0 and wlan0 to be compatible with several scripts.
mistfire
Posts: 645
Joined: Thu Jul 16, 2020 2:16 am
Location: CALABARZON, PH
Has thanked: 3 times
Been thanked: 142 times

Re: Show your kernel configuration

Post by mistfire »

My slim32 series kernel has builtin basic keyboard, basic mouse, basic acpi, vesa, fbdev, sdcard, cf flash, memstick, pcmcia, ext2/3/4, ntfs, vfat, exfat, f2fs, aufs, overlay kernel modules (if I remember).
user1111

Re: Show your kernel configuration

Post by user1111 »

I use Fatdog as the tool-chain (devx), download kernel source from kernel.org, copy in my .config file and 'make oldconfig' to import that (that .config was originally created using 'make localyesconfig' to build all modules into the kernel, that's been manually refined over time for my specific hardware/requirements) and then 'make' to build it. Track kernel 4.19 for its LTS to end of 2024.

kernel .config

Around 8MB filesize for combined initrd.xz and bzImage (vmlinuz, also xz compressed). Boots to either console (no job control), or pseudo terminals (job control available) in either vga mode or vesa mode (framebuffer). Predominately just kernel + busybox, but also with wifi (wpa...) dropbear (ssh) and fbvnc.

Boots to wifi net connected, KASLR kernel randomisation and MAC address randomisation. 1366x768 framebuffer where I can vnc into a server (desktop box) that also has its 1400x900 scaled down to 1366x768, so full GUI desktop experience available (chrome, libreoffice etc. etc.).

I used to have tmux, mc ...etc. inside that, but as I can vnc/ssh into other boxes and run tmux/mc/chrome/libreoffice from there, I opted to strip those out to leave just the ssh/wifi/vnc functionality alone. For instance this is tmux running on my desktop system (full Fatdog system beneath that tilda drop down terminal)
dt.png
dt.png (352.92 KiB) Viewed 1039 times

init ...

Code: Select all

#!/bin/ash

# Format of our boot (grub4dos menu.lst entry) ...
# kernel /bzImage net=wpa2:VMmmmmmm:xxxxxxxx:wlan0:dhcp

### bail out unless we're PID 1
[ $$ -eq 1 ] || exit 1

### configuration parameters
DEFAULT_DEVICE_DELAY=0	# seconds - default delay time for devices (so that they are recognised by kernel)
WIFI_ENABLE_TIMEOUT=${WIFI_ENABLE_TIMEOUT:-100}	# unit of 1/10 seconds, max time to wait for wifi connection
KERNEL_POLL_MSECS=${KERNEL_POLL_MSECS:-5000}	# default kernel polling value if unset

### utilities - decz
# decz - decrements counter, and return true when it is zero
# $1 - name of variable to be decremented
decz() {
	local curval
	eval "curval=\$$1"
	curval=$((curval-1))
	[ $curval -le 0 ] && return 0
	eval "$1=$curval"
	return 1
}

### cmdline processing - net
process_net() {
	[ -z "$net" ] && return;
	OIFS="$IFS"; IFS=":"; set -- $net; IFS="$OIFS"
	
	echo -n "Configure network "
	echo "on $2 ($1) using dhcp"
	echo " "
	
	# Ask if want to use a random mac
	/usr/sbin/random-mac-ask $4
	
	busybox ifconfig $4 up
	wpa_supplicant -B -C/var/run/wpa_supplicant -Dwext -i$4
	wpa_cli ap_scan 1 > /dev/null
	wpa_cli add_net 0 > /dev/null
	wpa_cli set_net 0 ssid \"$2\" > /dev/null
	wpa_cli set_net 0 psk \"$3\" > /dev/null
	wpa_cli select_net 0 > /dev/null
	while [ "$(wpa_cli status | sed -ne '/wpa_state/ {s/wpa_state=//;p}')" != "COMPLETED" ];
	do
		sleep 0.1; decz WIFI_ENABLE_TIMEOUT && return
	done;
	iwconfig $4 power off # disable power management
	shift 2
	# connection type
	udhcpc -i $2 > /dev/null
	ifconfig lo up	# in any case bring loopback up also
}

######################   main   ##########################

# mount core filesystems
/bin/mount -t proc proc /proc # mount /proc first so /proc/self/exe works from now
mount -t sysfs sysfs /sys
if ! mount -t devtmpfs devtmpfs /dev 2> /null; then		# /dev/null may not exist yet
	# if no devtmpfs, use tmpfs and use mdev instead
	mount -t tmpfs tmpfs /dev -o mode=755 # mode 755 is what devtmpfs uses
	mdev -s
fi

[ -f /null ] && rm /null	# Clear up the null file created above
[ ! -e /dev/shm ] && mkdir -p /dev/shm
[ ! -e /dev/pts ] && mkdir -p /dev/pts
[ "$TZ" ] && hwclock -t # set kernel timezone

# debugging and error logging
# comment out next two lines for greater info during bootup
! grep -q showerr /proc/cmdline && exec 2> /dev/initrd.err
grep -q debuginitrd /proc/cmdline && set -x

# enable polling
if ! grep -q block.events_dfl_poll_msecs /proc/cmdline; then # if not explicitly set
	echo $KERNEL_POLL_MSECS > /sys/module/block/parameters/events_dfl_poll_msecs
fi

# keymap hard coded to use uk (GB)
loadkmap < /lib/boot/keymaps/uk

echo "Connecting to the net"
# configure network - after load modules, before basesfs
process_net

export HOME=/root

#echo console mode no job control no tty no ssh etc
#while :; do
#  /bin/ash
#done

# pseudo terminal so we can run screen ssh etc
mount -t devpts none /dev/pts -o ptmxmode=0666,newinstance # pseudo terminal for screen

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/lib

# attach to a tty so we can ssh, use screen ...etc.
while :; do
	setsid cttyhack /bin/ash
done
grub4dos menu.lst entry ...

Code: Select all

title pugdog
root (hd0,3)
kernel /CODE/MINI/FRESH-BUILD/linux-4.19.146/arch/x86/boot/bzImage nomodeset vga=0x3D2 video=map:01,i810fb:xres:1366,yres:768,bpp:16,accel,mtrr,hwcur#  net=wpa2:VMmmmmmm:xxxxxxxx:wlan0:dhcp
initrd /CODE/MINI/FRESH-BUILD/initrd
busybox sourced from https://busybox.net/source.html
Dropbear (ssh) sourced from https://matt.ucc.asn.au/dropbear/releases/
wpa_supplicant (wifi) sourced from https://w1.fi/releases/
fbvnc (vnc) sourced from https://github.com/zohead/fbvnc

Prefer static musl builds (upx'd compressed) so for instance fbvnc compiled using

Code: Select all

make CC=musl-gcc CFLAGS=-I/usr/musl/kernel/include
followed by upx --ultra-brute --best fbvnc ... for a bin file that
is around 39K filesize

EDIT: re-ran make menuconfig, turned on a number of input devices for mouse and synaptic, saved that and ran make -j2, and now booted into that and vnc'd to my desktop system, with the touchpad all working OK :) Posting this edit using that (chrome). Filesizes : vmlinuz (xz compressed) 6103600, initrd.xz (xz -e --check=crc32) 1960944. So combined just under 7.7MB.
user1111

Re: Show your kernel configuration

Post by user1111 »

Rather than using setsid cttyhack ... as the final loop within /init (within the initramfs), if you exec /bin/init instead and have /bin/init as a symbolic link to busybox (ln -s /bin/busybox init), then control is handed over to busyboxes init and in the absence of any /etc/inittab it has its own internal copy that it uses that amongst other things sets up multiple terminal sessions on ctrl-alt-F1, ctrl-alt-F2 ...etc. (it uses 'askfirst' i.e. you are prompted to press Enter to activate the cli on each terminal).

Setting my laptops boot screen size to VESA 640x480x16 (and adding nomodeset to the kernel boot parameters to ensure the kernel doesn't switch the graphics mode from vesa to whatever the graphics card supports), having vnc running on Ctrl-alt-F1 - vnc'd into my desktop running Fatdog (gui) and then flipping to ctrl-alt-F2 ... does, due to running in a framebuffer, see bleed. But in the fbvnc (framebuffer vnc) that I'm using, only of the changed things. Move the mouse and the entire vnc/graphics screen bleeds over, but you can still type/run cli commands.
fb.png
fb.png (124.39 KiB) Viewed 974 times

It's a bit weird being at a text/cli terminal and having a video playing at the centre of that :) (btw I took that screen shot by simply using cat /dev/fb0 >fb.data ... and then later used Gimp to Open, raw *.data, and adjusted the x and y size to 640x480 (and type to RGB565) ... and then saved it to .png format. i.e. couldn't be bothered to download/compile fbgrab)

For me, running vnc at the standard laptops 1366x768 does result in jerky video plays etc. A bit too laggy. At 640x480 however its as good as being directly at the machine, at least when on the same LAN.

Sorry, I know, not kernel config related, just thought I'd mention it as I've just rebuild using the most recent stable busybox (I was using a rc) i.e.1.31.1 and latest 4.19 kernel point release (4.19.149). I've dropped using auto net connect to instead insert a 'wifi' script into that, so it lists and allows you to select which ssid to connect to; Along with dropbear (for ssh) and fbvnc. So primarily pure kernel+busybox, but with iwconfig, wpa_supplicant, dropbear, fbvnc additional binaries.

A kernel compiled with make localyesconfig and with near-as just busybox as the system (along with wifi net connect and vnc) is so small/fast that its a nice secondary boot choice to have hanging around. I need to update my server (old desktop) from Fatdog 7 to 8 and I intend to set it to use a 640x480 default size instead of its 1440x900 size so that vnc'ing into it from my laptop has that vnc display very responsive/fast. The desktop system is practically headless anyway (a monitor is attached but rarely used), so I don't really need it to be running at 1440x900 resolution. Nice being able to boot the laptop in a few seconds, wifi net connect and then vnc into the desktop system to have that all running at where it was last left off (chrome still on the same web pages as before ...etc.).

This is the build script content I used to build that (kernel and busybox source code download and compile)

Code: Select all

# MAKE SURE THE INITRD IS IN THE SAME FOLDER AS BUILD.SH
# AS THIS SCRIPT COPIES THAT INTO THE VMLINUZ (BZIMAGE)
# MUST BE THE NON COMPRESSED VERSION

# ENSURE DEVX SFS IS LOADED

# ENSURE THE .config FILE IS IN THE SAME FOLDER AS BUILD.SH

# RUN THIS SCRIPT FROM THE FOLDER WHERE BUILD.SH IS LOCATED

# ==========================================================

# Modified version of as outlined in this thread/post
#http://www.murga-linux.com/puppy/viewtopic.php?p=949389

# We build a standard Linux kernel and initial basic initrd
# but replace that initrd with a cutdown version that
# includes wifi net connect and ssh .. also includes our
# kexec ... so can directly boot other vmlinuz/initrd 
# and also has vnc. 

# Modify the following two wget's as desired
# Note that there are repeated cases of filenames that have
# to changed I really should make those a variable that 
# we define that the top/start
#
# Go to kernel.org and busybox.net to identify their latest
# point releases/stable versions.
#
# Kernel 4.19 LTS has Dec 2025 current date shown as of Sept 2020
# 1.31.1 is the most recent 'stable' busybox
wget http://kernel.org/pub/linux/kernel/v4.x/linux-4.19.149.tar.xz
wget http://busybox.net/downloads/busybox-1.31.1.tar.bz2
mkdir bootfiles
tar -xvf linux-4.19.149.tar.xz
tar -xvf busybox-1.31.1.tar.bz2
cd busybox-1.31.1
make distclean defconfig
sed -i "s/.*CONFIG_STATIC.*/CONFIG_STATIC=y/" .config
make busybox install
cd _install
rm -f linuxrc

# Need to open initrd and drop in the busybox file
# Not the cleanest way to do it, but it works.
cd ../..
mkdir extracted
cd extracted
cat ../initrd | cpio -id
cd bin
cp ../../busybox-1.31.1/busybox .
cd ..
find . | cpio -o -H newc > ../initrd
cd ..
rm -rf extracted

cd linux-4.19.149
cp ../.config .
cp ../initrd usr/.
N=`nproc`
N=`expr $N + 1`
echo ******************************************
echo ******************************************
echo ******************************************
echo You may get interactive prompts now that
echo require answering, more often just pressing
echo enter will do (i.e. accept the defaults)
echo ******************************************
echo ******************************************
echo ******************************************
echo
echo About to compile the kernel - press Enter when ready 
read n
make oldconfig
make localyesconfig
make -j$N
cp arch/x86/boot/bzImage ../bootfiles/vmlinuz
initrd is here https://drive.google.com/file/d/1G9k027 ... sp=sharing

EDIT : Oh! See that initrd uploads to my googledrive are immediately being flagged as abuse!

Due to size restrictions, can't upload as-is here, but I can if I strip out /bin/busybox, and the other bin's i.e. /usr/sbin wpa_supplicant, dropbear (dbclient) ..etc.). So as a template initrd ...
initrd-pugdog.gz
(42.42 KiB) Downloaded 36 times
user1111

Re: Show your kernel configuration

Post by user1111 »

Running with a modified version of fbvnc viewtopic.php?p=7411#p7411 ... and that's working really well.

I've dropped out dropbear as whilst its ssh supposedly uses compression, OpenSSH ssh compression seems to work much better. fbvnc passing raw screen/framebuffer through a compressed ssh tunnel nets much lower data flows when using standard ssh compared to dropbears ssh.

To help framebuffer vnc speeds, in .ssh folder config file, including ...

Protocol 1
Compression yes
Cipher blowfish

... settings seem to work very well. Good compression (low data transfers) and using a fast (albeit less secure) cipher (faster than the default des cipher).

[EDIT] The version of Dropbear in Fatdog has zlib disabled, so no compression. I did try building it with zlib included - but that version didn't work well. Frambuffer through a OpenSSH Protocol 2 tunnel with compression turned on and using a fast encryption method such as chacha ... works very well.
Post Reply

Return to “Off-Topic Area”