vmware虚拟机利用qeme调试linux内核
1. samba配置 – 安装编译器
sudo apt-get update 更新源
sudo apt-get upgrade 更新已安装的包
apt-get install build-essential 安装编译器
#阿里
deb http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse
sudo apt-get update 更新源
sudo apt-get upgrade 更新已安装的包
apt-get install build-essential
sudo apt-get update 更新源
sudo apt-get upgrade 更新已安装的包
sudo apt-get dist-upgrade 升级系统
update 是更新 /etc/apt/sources.list 和 /etc/apt/sources.list.d 中列出的源的地址,这样才能获取到最新的软件包
upgrade 是升级已安装的所有软件包,升级之后的版本就是本地地址里的,因此,在执行 upgrade 之前一定要执行 update, 这样才能更新到最新的
系统更新源指的是你的更新的源头,无论你使用APT工具还是dpkg、rpm等,他们都有一个文件,里面存放了可以下载到软件的“更新源”,就是那些软件的下载网址。这个文件是/etc/apt/sources.list。
2. 虚拟机安装ubuntu18.04后不能上网问题
虚拟机中使用上面的版本
还原一下就好了
3. 安装qmenu
3.1下载Qemu源码编译安装
在这里选择qemu-4.2.0.tar.xz使用;
3.2安装依赖
在配置qemu之前,需要安装一些依赖的库或者软件包:
# sudo apt-get install zlib1g-dev
# sudo apt-get install libglib2.0-0
# sudo apt-get install libglib2.0-dev
# sudo apt-get install libtool
# sudo apt-get install libsdl1.2-dev
# sudo apt-get install autoconf
解压源代码:
# tar -xvf qemu-4.2.0.tar.xz
为了防止编译后文件比较乱,选择创建build目录作为编译中间目标路径:
# cd qemu-4.2.0/
# mkdir build
# cd build/
配置、编译并安装Qemu:
# ../configure --target-list=arm-softmmu --audio-drv-list=
# make
# make install
3.3在编译过程中可能出现的问题
# ../configure --target-list=arm-softmmu --audio-drv-list=
ERROR: pkg-config binary 'pkg-config' not found
缺少库文件,按照上一步中的步骤安装库文件;
#
../configure
--target
-list
=arm
-softmmu
--audio
-drv
-list
=
ERROR
: pixman
>=
0.21.8
not present
.
Please install the pixman devel package
.
可以通过apt-cache查询缺少的依赖库:
# apt
-cache search pixman
libpixman
-1-0
- pixel
-manipulation
library
for X and cairo
libpixman
-1-dev
- pixel
-manipulation
library
for X and cairo
(development files
)
安装缺少的依赖库:
# sudo apt-get install libpixman-1-0
# sudo apt-get install libpixman-1-dev
3.4查看Qemu版本
查看Qemu支持的开发板
Qemu工具支持大量开发板的虚拟,现存的大部分常用开发板都能很好地支持。通过下面的命令操作可以看到当前版本的Qemu工具支持的开发板列表:
.
4. 安装编译工具链
安装错误的解决方法:
[email protected]:/var/cache/apt/archives# sudo apt-get install gdb-arm-none-eabi
5. 编译内核
在Makefile中配置默认值,指定ARCH和CROSS_COMPILE,免得每次编译都需要带参数;
5.1生成配置文件 – 默认的配置文件
[email protected]:/home/alpha/share/linux-4.4.157# make vexpress_defconfig ARCH=arm O=./object
遇到的问题:
[email protected]:/home/alpha/share/linux-4.4.157# apt-get install libncurses5-dev libncursesw5-dev
5.2生成配置文件 – 修改配置文件
[email protected]:/home/alpha/share/linux-4.4.157# make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- menuconfig -j4 O=./object 指定输出路径
make vexpress_defconfig //配置文件
# make zImage -j4 //编译内核镜像文件
# make modules -j4 // 编译驱动模块
# make dtbs // 编译设备树
分别将编译生成的zImage和vexpress-v2p-ca9.dtb文件放到/home/alpha/share/qemu目录;
启动脚本:
运行脚本后即可启动:./boot.sh
内核成功启动,内核的启动打印信息非常多。启动最后出错是因为没有挂载根文件系统。
6. 先安装busybox
6.1 生成配置文件
[email protected]:/home/alpha/share/busybox-1.31.1# make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- menuconfig
编译选择使用glibc动态库,因为静态库可能会出现一些未知的问题,取消掉
默认的安装目录是./_install,如果需要指定安装目录,可以在下边修改:
6.2 编译busybox
[email protected]:/home/alpha/share/busybox-1.31.1# make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi-
6.3 安装
修改顶层makfile
提示下边信息,表示安装成功:
或者直接使用CONFIG_PREFIX指定安装目录:
安装完成之后,生成的目标文件默认在./_install目录,这个目标文件目录就是下边要制作根文件系统需要用到的工具:
6.4 生成简易根文件系统
将编译器的库文件和_install 文件拷贝到此根文件系统内
6.5 制作SD卡文件系统镜像
1) 生成一个空的SD卡镜像:
# dd if=/dev/zero of=rootfs.ext3 bs=1M count=32
2) 将SD卡格式化为exts文件系统:
# mkfs.ext3 rootfs.ext3
3) 将rootfs烧写到SD卡:
# sudo mount -t ext3 rootfs.ext3 /mnt -o loop
# sudo cp -rf rootfs/* /mnt/
# sudo umount /mnt
6.6启动脚本
6.7验证结果:
7.调试内核
安装调试工具
apt-get -o Dpkg::Options::="--force-overwrite" install gdb-arm-none-eabi
在gdb命令行中,输入如下命令
(gdb) target remote localhost:1234
(gdb) b start_kernel
(gdb) c