wsl调试android kernel

下载

kernelbusybox

编译

  • kernel
Kernel hacking  --->
    [*] Kernel debugging
    Compile-time checks and compiler options  --->
        [*] Compile the kernel with debug info
        [*]   Provide GDB scripts for kernel debugging

Processor type and features ---->
    [] Randomize the address of the kernel image (KASLR)
  • busybox
Settings  --->
    [*] Build static binary (no shared libs)

make -j 8 && make install

  • 打包ramdisk
# 进入Busybox源码的父目录
cd ..
mkdir ramdisk
cd ramdisk
# 注意最后的"."
cp -r ../busy-1.25.0/_install/* .
ln -s bin/busybox init
mkdir -pv {bin,sbin,etc,proc,sys,usr/{bin,sbin},dev}
cd etc
vim inittab
chmod +x inittab

将以下内容填入inittab

::sysinit:/etc/init.d/rcS   
::askfirst:-/bin/sh    
::restart:/sbin/init
::ctrlaltdel:/sbin/reboot
::shutdown:/bin/umount -a -r
::shutdown:/sbin/swapoff -a

创建rcS

mkdir init.d
cd init.d
vim rcS
chmod +x  rcS

将以下内容填入rcS

#!/bin/sh

mount proc
mount -o remount,rw /
mount -a    
clear                               
echo "My Tiny Linux Start :D ......"

创建etc/fstab,内容如下

# /etc/fstab
proc            /proc        proc    defaults          0       0
sysfs           /sys         sysfs   defaults          0       0
devtmpfs        /dev         devtmpfs  defaults        0       0

生产ramdisk

cd ramdisk
find . -print0 | cpio --null -ov --format=newc | gzip -9 > ../initramfs.img

运行qemu

qemu-system-x86_64 -kernel linux-5.3.7/arch/x86_64/boot/bzImage -boot c -m 1024 -initrd initramfs.img -append "root=/dev/sda rw console=ttyS0, 115200 acpi=off nokaslr" -serial stdio -display none -s -S

adnroid emulator编译方法

https://www.owalle.com/2020/05/11/android-emulator/
https://www.codeinsideout.com/blog/android/build-aosp/#include-custom-kernel
kernel下载:

repo init -u https://android.googlesource.com/kernel/manifest -b q-goldfish-android-goldfish-4.14-dev --depth=1

kernel编译:

BUILD_CONFIG=goldfish/build.config.goldfish.x86_64 LTO=none build/build.sh

调试:

emulator -kernel ~/code/kernels/android-kernel/goldfish/arch/x86/boot/bzImage -verbose -no-snapshot  -qemu -s -S

.gdbinit

add-auto-load-safe-path vmlinux-gdb.py

效果

avc_audit_pre_callback(struct audit_buffer * ab, void * a) (\home\w00456713\code\kernels\android-kernel\goldfish\security\selinux\avc.c:710)
common_lsm_audit(struct common_audit_data * a, void (*)(struct audit_buffer *, void *) pre_audit, void (*)(struct audit_buffer *, void *) post_audit) (\home\w00456713\code\kernels\android-kernel\goldfish\security\lsm_audit.c:459)
slow_avc_audit(u32 ssid, u32 tsid, u16 tclass, u32 requested, u32 audited, u32 denied, int result, struct common_audit_data * a, unsigned int flags) (\home\w00456713\code\kernels\android-kernel\goldfish\security\selinux\avc.c:771)
audit_inode_permission(struct inode * inode, u32 perms, u32 audited, u32 denied, int result, unsigned int flags) (\home\w00456713\code\kernels\android-kernel\goldfish\security\selinux\include\objsec.h:48)
selinux_inode_permission(struct inode * inode, int mask) (\home\w00456713\code\kernels\android-kernel\goldfish\security\selinux\hooks.c:3130)
security_inode_permission(struct inode * inode, int mask) (\home\w00456713\code\kernels\android-kernel\goldfish\security\security.c:700)
__inode_permission2(struct vfsmount * mnt, struct inode * inode, int mask) (\home\w00456713\code\kernels\android-kernel\goldfish\fs\namei.c:436)
inode_permission2(struct vfsmount * mnt, struct inode * inode, int mask) (\home\w00456713\code\kernels\android-kernel\goldfish\fs\namei.c:485)
inode_permission(struct inode * inode, int mask) (\home\w00456713\code\kernels\android-kernel\goldfish\fs\namei.c:491)
unix_find_other(struct net * net, struct sockaddr_un * sunname, int len, int type, unsigned int hash, int * error) (\home\w00456713\code\kernels\android-kernel\goldfish\net\unix\af_unix.c:932)
unix_stream_connect(struct socket * sock, struct sockaddr * uaddr, int addr_len, int flags) (\home\w00456713\code\kernels\android-kernel\goldfish\net\unix\af_unix.c:1264)
SYSC_connect(int fd, struct sockaddr * uservaddr, int addrlen) (\home\w00456713\code\kernels\android-kernel\goldfish\net\socket.c:1655)
SyS_connect(long fd, long uservaddr, long addrlen) (\home\w00456713\code\kernels\android-kernel\goldfish\net\socket.c:1636)
do_syscall_64(struct pt_regs * regs) (\home\w00456713\code\kernels\android-kernel\goldfish\arch\x86\entry\common.c:292)
entry_SYSCALL_64() (\home\w00456713\code\kernels\android-kernel\goldfish\arch\x86\entry\entry_64.S:233)
[Unknown/Just-In-Time compiled code] (未知源:0)

wsl2开启kvm

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值