====== Input method in FreeBSD virtual terminal (Week1 & 2) ====== Date: 06/07-06/19 During these two weeks, I was preparing my kernel development environment, since this was the first time I tried to modify the freebsd kernel. Also I decided to take notes of the whole process of configuring the environment. ===== Environment Preparation ===== ==== Building from Custom Source ==== === Preparing Source === I forked %%FreeBSD%% source code on github: https://github.com/Cycatz/freebsd-src And clone the project into ''%%/usr/src/%%''. But ''%%/usr/src%%'' is a zfs dataset, we can not backup the old ''%%/usr/src%%'' by simply renaming it. So I copied it into other directory and remove all old files in ''%%usr/src%%'' then clone the source code. cp /usr/src /usr/src.bak cd /usr/src rm -rf ./* ./.* Download the source code: git remote add origin https://github.com/Cycatz/freebsd-src git fetch origin === Building and Installing Custom Source === To build the custom kernel, copy the //GENERIC// kernel config file first: cp /usr/src/sys/amd64/conf/GENERIC /root/MYKERNEL cd /usr/src/sys/amd64/conf ln -s /root/MYKERNEL . But actually I didn't modify any configurations from GENERIC kernel config except for the //ident// column. ident MYKERNEL Now we are ready to build world and kernel: First we need to install ''%%bear%%'' to index kernel source and generate ''%%compile_commands.json%%'' for LSP pkg install py37-bear Now we can build and install them: cd /usr/src make -DNO_CLEAN -j 8 buildworld bear make -DNO_CLEAN -j 8 buildkernel KERNCONF=MYKERNEL make installworld make installkernel KERNCONF=MYKERNEL etcupdate reboot After rebooting, use ''%%uname -a%%'' to check if our system version and the kernel profile are correct: The results: FreeBSD vt.staque.xyz 14.0-CURRENT FreeBSD 14.0-CURRENT #1 tmp-n248823-ced2dcadccfc-dirty: Fri Aug 20 21:32:02 CST 2021 root@vt.staque.xyz:/usr/obj/usr/src/amd64.amd64/sys/MYKERNEL amd64 === Reference === * Ch 8. Configuring the %%FreeBSD%% Kernel: https://docs.freebsd.org/en/books/handbook/kernelconfig/ * Ch 24. Updating and Upgrading %%FreeBSD%%: https://docs.freebsd.org/en/books/handbook/cutting-edge/#freebsdupdate-portsrebuild ===== Developing on FreeBSD ===== Install clangd: pkg install llvm12 Make an alias for clangd12: ln -s clangd12 clangd