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