内核调试环境:buildroot/debootstrap制作文件系统、编译内核、QEMU模拟

编译内核

# 安装常用工具和依赖,可能会多,懒得分了,全装了吧反正以后说不定还要用。。。
sudo apt install curl wget gpg zsh tree git net-tools proxychains4 remmina vim tar strace llvm clang unzip gcc gcc-multilib build-essential flex bison cmake make gawk dkms autoconf ninja-build dpkg-dev libncurses-dev libssl-dev libelf-dev openssl libudev-dev libpci-dev libiberty-dev libdwarf-dev libdw-dev libcap-dev bpfcc-tools 
# 安装pahole
git clone --recursive https://github.com/acmel/dwarves
cd dwarves
mkdir build
cd build
cmake -D__LIB=lib ..
make pahole
sudo make install
# 更新LD_LIBRARY,建议加进path里
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
# 验证pahole,版本要求>=1.16
pahole --version
# 下载内核源码,从git.kernel.org下或者从github下咋都行
# 在build目录下生成.config并编译生成vmlinux和bzImage
make O=build menuconfig
make O=build -j=$(nproc)

使用debootstrap制作文件系统

create-image.sh,DIR和PKGS、发行版架构可以自己选
注意网卡名,如果qemu跑起来网卡名不一样,可以自己改,使用lshw命令方便看网卡名;注意如果不需要共享目录可以把hostshare那个挂载点那一行删了,不然默认启动挂载不上会进救援模式。

#!/usr/bin/env bash
set -eux

DIR=rootfs

PREINSTALL_PKGS=openssh-server,curl,wget,tar,gcc,gdb,zsh,tree,libc6-dev,time,strace,sudo,less,psmisc,selinux-utils,policycoreutils,checkpolicy,selinux-policy-default,firmware-atheros,debian-ports-archive-keyring

ADD_PACKAGE="lshw,pciutils,make,sysbench,git,vim,tmux,usbutils,tcpdump,net-tools,ethtool"

PREINSTALL_PKGS=$PREINSTALL_PKGS","

你可能感兴趣的:(linux,qemu,kernel)