カーネルをコンパイルします
make i386_defconfig //32位架构
make menuconfig
カーネルハッキングをデバッグできます—>
コンパイル時チェックとコンパイラオプション—>
[]デバッグ情報
を使用してカーネルをコンパイルしますネットワーク
デバイスドライバへのブリッジを使用できます—>
ネットワークデバイスサポート—>
[M]ユニバーサルTUN / TAPデバイスドライバサポート
make -j16 //编译
コンパイルされたLinuxカーネルにカーネルイメージがあります
ビジーボックス
BusyBoxは、qemuによって開始されたカーネル内のユーザースペースとして実行できます。アイデアは、BusyBoxを小さなファイルシステム構造にパッケージ化し、cpioファイルにアーカイブして、システム起動用のinitramfsとして実行することです。これにより、Linuxを使用できるようになります。操作インターフェースとツールセット。
ダウンロードしてコンパイルする
wget https://busybox.net/downloads/busybox-1.27.2.tar.bz2
tar -xf busybox-1.27.2.tar.bz2
cd busybox-1.27.2
make menuconfig
make -j8
make install
結局、私たちは
ファイルシステムを作成する
カーネルとファイルシステムについては、他のブログを参照してください
。1 。
新しいフォルダーを作成し、ターミナルを開いて、新しいrootfsフォルダーを作成します
。qemu_rootfs.imgはファイル名、1gはディスクサイズです。必要に応じて変更します。
ext4ファイルシステムを作成し
、imgファイルをホストシステムにマウントします。
qemu-img create qemu_rootfs.img 1g
mkfs.ext4 qemu_rootfs.img
sudo mount -o loop qemu_rootfs.img rootfs
2.
initファイルを含む、マウントされたrootfsファイルに必要なファイルを作成します
cd rootfs
sudo mkdir proc sys dev etc etc/init.d
cd etc/init.d
vim rcS
#!/bin/sh
mount -t proc none /proc
mount -t sysfs none /sys
/sbin/mdev -s
chmod u+x rcS
cd ../../..
sudo umount rootfs
3.busybox内のファイルをrootfsにコピーしてからマウントをキャンセルします
cp -a _install/* rootfs
umount rootfs
デバッグを開始します
カーネルイメージが配置されているフォルダを入力します
注文の実行
qemu-system-i386 -s -kernel bzImage -m 512M -hda qemu_rootfs.img -append "root=/dev/sda rootfstype=ext4 rw"
i386はqemuを起動し、カーネルを指定し、ファイルシステムを指定し、ルートを指定します。-
sは-gdb tcp :: 1234の省略形を意味し、ポート1234を監視し、イメージを開きません。
新しいターミナルを作成し、これを見つけます
ターゲットリモートtcp:localhost:1234
はデバッグに入ることができます
PS:qemu—ctrl + aを閉じてから、qemuインターフェースでxを押します