コンパイル、ビルド、デバッグのLinuxカーネルのネットワークコードシステム環境MenuOS
次のステップに分割参照所与の動作コマンド:
カーネルのコンパイルインストールが異なり
ビルド不可欠フレックスバイソンののlibssl-devのlibelfを-devのをlibncursesライブラリ-devのをaptのインストールSUDO
- ダウンロードして、カーネルをコンパイル
カーネルをダウンロード
wgetのhttps://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.0.1.tar.xz
のxD -dのLinux-5.0.1.tar.xz
5.0.1-Linuxの-xvfタール.tar#解凍ダウンロードしたzipファイルの
カーネルをコンパイルする準備ができてフォルダにCDのlinux-5.0.1#の解凍、
ここでは、公式サイトのダウンロード速度が遅すぎるで少し問題が、....の公式ウェブサイトへの直接提案を持っていた右のアドレスへのリンクをコピーし、サンダーのダウンロードを使用して、プロのテストダウンロードが6M / sのスピードアップ
カーネルをコンパイルします
生成するデフォルトのカーネル設定ファイルで#の合わせをi386_defconfig作る
makeがmenuconfigの
メイクをするか、CPUコアの数として-j #jのを作ります
カーネルを設定するためのビジュアルインターフェイスを入力しますこれらの2つのコマンドを入力した後、次の通り:
(1)入力を選択カーネルハッキング
(2)選択コンパイル時チェックとコンパイラオプションキャリッジ
(3)選択コンパイルカーネルでデバッグ情報のプレススペースバーをして、デフォルトのカーソルに直接保存するには、最後の出口を救うために残さ
- 生産・ルート・ファイルの仮想マシン
QEMUをインストール
sudo apt install qemu
qemu-system-i386 -kernel linux-5.0.1/arch/x86/boot/bzImage #qemu加载linux内核构建MenuOS
git clone https://github.com/mengning/menu.git
sudo apt-get install libc6-dev-i386 #安装libc6-dev-i386
qemu -kernel linux-5.0.1/arch/x86/boot/bzImage -initrd rootfs.img #创建系统镜像 (linux-5.0.1目录下)
make rootfs #初始化(menu目录下)
- 构建gdb调试环境
在qemu中启动gdb server
qemu -kernel linux-5.0.1/arch/x86/boot/bzImage -initrd rootfs.img -append nokaslr -s -S
建立gdb server和gdb之间的连接
不要关闭当前正处于黑屏状态的gdb server,打开一个新终端,输入gdb
cd linux-5.0.1
file vmlinux #加载符号表
break start_kernel #在内核函数处设置断点
target remote:1234 #建立gdb和gdb server之间的连接
c #回车让qemu上的Linux继续运行
list #查看之前设置的断点
- 将TCP网络程序集成到MenuOS中运行
集成服务端
gitのクローンhttps://github.com/mengning/linuxnet.git
CD linuxnet / LAB2
メイク
CD ..統合されたクライアント
LAB3 CD
geditのMakefileを#変更のLinuxバージョンは5.0.1-Linuxのある
メイクにrootfs