-- Your distro... In your browser

sudo apt install bc binutils bison dwarves flex gcc git gnupg2 gzip libelf-dev libncurses5-dev libssl-dev make openssl pahole perl-base rsync tar xz-utils

mkdir browser-distro

mkdir root
cd root

mkdir boot proc sys dev

cd ..

git clone --depth 1 https://github.com/torvalds/linux
cd linux

make tinyconfig
make menuconfig

General setup --->

[*] Initial RAM filesystem and RAM disk (initramfs/initrd) support

[*] Support initial ramdisk/ramfs compressed using XZ (only keep the one you like)

----Configure standard kernel features --->

--------[*] Enable support for printk

Executable file formats --->

----[*] Kernel support for ELF binaries

----[*] Kernel support for scripts starting with #!

Device Drivers --->

----Generic Driver Options --->

--------[*] Maintain a devtmpfs filesystem to mount at /dev

--------[*] Automount devtmpfs at /dev, after the kernel mounted the rootfs

----Character devices --->

--------[*] Enable TTY

--------Serial drivers --->

------------[*] 8250/16550 and compatible serial support

------------[*] Console on 8250/16550 and compatible serial port

File systems --->

----Pseudo filesystems --->

--------[*] /proc file system support

--------[*] sysfs file system support

make -j8

cd ..

git clone --depth 1 https://github.com/JiauZhang/menuconfig

cd menuconfig

mkdir build && cd build
cmake .. && make -j8
sudo make install


RECREATE CMAKE with lib.a link to libc and ncurses

SCRIPT_DIR=$(dirname -- "$( readlink -f -- "$0"; )";)
cd $SCRIPT_DIR

git clone --depth 1 https://github.com/TheGeorge/menuconfig/

cd menuconfig

wget https://musl.libc.org/releases/musl-1.2.5.tar.gz

tar -xvzf musl-1.2.5.tar.gz

mkdir musl-install
mkdir musl-build
cd musl-build


../musl-1.2.5/configure --prefix=$SCRIPT_DIR/menuconfig/musl-install
make -j8
make install
cd ..

export CC="$SCRIPT_DIR/menuconfig/musl-install/bin/musl-gcc -static"

wget https://ftp.gnu.org/gnu/ncurses/ncurses-6.5.tar.gz

tar -xvzf ncurses-6.5.tar.gz

mkdir ncurses-build
mkdir ncurses-install

cd ncurses-build
../ncurses-6.5/configure --with-normal --with-termlib --disable-widec --prefix=$SCRIPT_DIR/menuconfig/ncurses-install

make -j8
make install
cd ..
#mv ./ncurses-build/lib/libncurses.a ./
#mv ./ncurses-build/lib/libtinfo.a ./


#mv ./musl-build/lib/libc.a ./




mkdir build
cd build

cmake ..
make











remake from inside linux kconfig

ADD -#include

to mconf.c

#!/bin/sh
# Set Dir to script dir
SCRIPT_DIR=$(dirname -- "$( readlink -f -- "$0"; )";)
cd $SCRIPT_DIR

# Download Linux
git clone --depth 1 https://github.com/torvalds/linux

#git clone --depth 1 https://github.com/util-linux/util-linux
# Extract Kconfig
#mv ./linux/scripts/kconfig ./


#wget https://ftp.gnu.org/gnu/ncurses/ncurses-6.5.tar.gz

#tar -xvzf ncurses-6.5.tar.gz

mkdir ncurses-build

cd ncurses-build
../ncurses-6.5/configure --with-shared --with-termlib --disable-widec

make -j8
cd ..
mv ./ncurses-build/lib/libncurses.a ./
mv ./ncurses-build/lib/libtinfo.a ./


ln -s asm-generic linux/include/asm
cd linux

make tinyconfig

cd scripts/kconfig

cat > list_types.h <
.
w
q
EOF
-I../../tools/include/nolibc/


gcc -I../../include/ -I../../arch/x86/include/ -I../../arch/x86/include/generated/ -I../../include/linux/ -I./ -I../include/ -I../../tools/include/nolibc/ -include linux/kconfig.h mconf.c