当前位置: 首页 > wzjs >正文

网站怎么防k安卓门户网站开发

网站怎么防k,安卓门户网站开发,西安哪家网站做的好,关键词词库目录 一、安装 Ubuntu Linux 20.04系统 1.1 安装前准备工作 1.1.1 镜像下载 1.1.2 创建新的虚拟机 二、编译内核源码 2.1 下载源码 2.2 指定编译工具 2.3 将根文件系统放到源码根目录 2.4 配置生成.config 2.5 编译 三、安装aarch64交叉编译工具 四、安装QEMU 五、…

目录

一、安装 Ubuntu Linux 20.04系统

1.1 安装前准备工作

1.1.1 镜像下载

1.1.2 创建新的虚拟机

二、编译内核源码

2.1 下载源码

2.2 指定编译工具

2.3 将根文件系统放到源码根目录

2.4 配置生成.config

2.5 编译

三、安装aarch64交叉编译工具

四、安装QEMU

五、创建基于 Ubuntu Linux 的根文件系统

5.1 BusyBox构建根系文件系统

5.1.1 下载BusyBox源码

5.1.2 制定编译工具链

5.1.3 配置编译BusyBox

5.1.4 创建需要的目录

六、启动QEMU

6.1 创建共享文件目录

6.2 运行QEMU模拟器

6.3 编译一个简单的内核模块并在QEMU上运行

七、总结


一、安装 Ubuntu Linux 20.04系统

1.1 安装前准备工作

1.1.1 镜像下载

下载地址:https://mirrors.tuna.tsinghua.edu.cn/ubuntu-releases/20.04.4/

选择Ubuntu-releases

选择20.04

1.1.2 创建新的虚拟机

点击创建新的虚拟机,选择镜像文件、安装位置等

安装完成,界面如下,输入密码

快照
Ubuntu快照是一种自包含的软件包格式,它将应用程序及其依赖项打包在一起,使得软件可以在不同的Linux发行版上无缝运行。快照包包含了所有必要的依赖项,用户无需担心软件兼容性问题;快照包在安装和运行时受到严格的权限控制,降低了安全风险;快照包在不同版本的Ubuntu以及其他支持Snap的Linux发行版上保持相同的运行环境。

将此时的虚拟机进行快照操作,保存为原始干净的虚拟机

二、编译内核源码

2.1 下载源码

Linux内核官网:The Linux Kernel Archives

现在最新的稳定的内核版本是Linux6.13.6(Linux 内核的版本号分成三部分,第一个数

字表示主版本号,第二个数字表示次版本号,第三个数字表示修正版本号)

下载好之后,把它拖到虚拟机的文件夹下,并进行解压缩

tar xvf linux-6.13.6.tar.xz

2.2 指定编译工具

2.3 将根文件系统放到源码根目录

sudo cp  ~/linux/rootfs rootfs_arm64 -a

2.4 配置生成.config

输入以下命令

make defconfig
make menuconfig

添加hotplug支持

Device Drivers                                                                                                 -> Generic Driver Options                                                                                             -> Support for uevent helper                                                                                                                                      (/sbin/hotplug) path to uevent helper

添加initramfs支持

 [*]Initial RAM filesystem and RAM disk(initramfs/initrd) support(_install_arm64) Initramfs souce file(s)

Virtual address space配置

Kernel Features  ---> Page size(4KB)  --->Virtual address space size(48-bit)--->

2.5 编译

make all -j8

三、安装aarch64交叉编译工具

下载安装对应架构的交叉编译工具链(arm64架构),搭建QEMU的模拟环境

sudo apt-get install gcc-aarch64-linux-gnu
sudo apt-get install libncurses5-dev  build-essential git bison flex libssl-dev

安装完成,查看版本说明

aarch64-linux-gnu-gcc -v

四、安装QEMU

QEMU是一个通用的开源机器模拟器和虚拟化器,它可以模拟整个系统,也可以作为虚拟化的宿主程序。使用QEMU可以方便地在不同硬件平台上运行Linux系统。

输入以下命令进行安装

sudo apt install qemu-system-arm

安装完成,输入以下命令查看版本

qemu-system-aarch64 --version

五、创建基于 Ubuntu Linux 的根文件系统

根文件系统是Linux操作系统中最重要的组成部分,它包含了系统启动和运行所需的最基本的文件和目录。创建根文件系统是定制Linux系统的关键步骤。

5.1 BusyBox构建根系文件系统

5.1.1 下载BusyBox源码

将下载的压缩包保存到Ubuntu虚拟机中的文件夹,并对其进行解压

加压后的文件如下所示:

5.1.2 制定编译工具链

输入以下命令

cd busybox-1.36.1
export ARCH=arm64
export CROSS_COMPILE=aarch64-linux-gnu-
//检测是否配置成功
echo $ ARCH
echo $CROSS_COMPILE

5.1.3 配置编译BusyBox

busybox中文字符支持:若直接编译busybox,使用串口工具时是不支持中文显示的,会显示为“?” ,修改源码,取消 busybox对中文显示的限制

修改内容如下:

/libbb/printable_string.c,将函数printable_string()中的部分程序注释掉,修改后的函数内容如下:

接着打开文件/libbb/unicode.c,修改如下内容:

配置busybox

配置好之后编译BusyBox,输入以下命令

make
make install CONFIG_PREFIX=/home/hututu/linux/rootfs
#CONFIG_PREFIX指定编译结果的存放目录

执行make install CONFIG_PREFIX=/home/hututu/linux/rootfs会报错mkdir: cannot create directory '/home/linux': Permission denied make: *** [/home/hututu/linux/busybox-1.37.0/Makefile.custom:39:install] 错误 1,此时,我们先执行以下命令:

sudo cp ~/linux/rootfs rootfs_arm64 -a

之后再输入以下命令:

make install CONFIG_PREFIX=/home/hututu/linux/rootfs

执行成功,显示如下:

编译完成,BusyBox的所有工具和文件都安装到了roofts目录下,如下图所示:

5.1.4 创建需要的目录

(1)etc目录更新

分别创建以下几个文件夹

创建profile文件,添加以下内容

#!/bin/sh
export HOSTNAME=user
export USER=root
export HOME=/home
export PS1="[$USER@$HOSTNAME \W]\# "
PATH=/bin:/sbin:/usr/bin:/usr/sbin
LD_LIBRARY_PATH=/lib:/usr/lib:$LD_LIBRARY_PATH
export PATH LD_LIBRARY_PATH

创建inittab 文件,添加下面内容

::sysinit:/etc/init.d/rcS
::respawn:-/bin/sh
::askfirst:-/bin/sh
::ctrlaltdel:/bin/umount -a -r

创建fstab文件,添加以下内容

#device  mount-point    type     options   dump   fsck order
proc /proc proc defaults 0 0
tmpfs /tmp tmpfs defaults 0 0
sysfs /sys sysfs defaults 0 0
tmpfs /dev tmpfs defaults 0 0
debugfs /sys/kernel/debug debugfs defaults 0 0
kmod_mount /mnt 9p trans=virtio 0 0

用以下命令创建init.d目录

mkdir  init.d

在init.d目录下创建rcS文件,添加以下内容

cd init.d
 
mkdir -p /sys
mkdir -p /tmp
mkdir -p /proc
mkdir -p /mnt
/bin/mount -a
mkdir -p /dev/pts
mount -t devpts devpts /dev/pts
echo /sbin/mdev > /proc/sys/kernel/hotplug
mdev -s

用以下命令为rcS添加权限

chmod 777 rcS

最后输入tree命令查看etc下的目录结构:

如果输入tree命令,提示如下:

ommand 'tree' not found, but can be installed with:
sudo snap install tree  # version 2.1.3+pkg-5852, or
sudo apt  install tree  # version 1.8.0-1
See 'snap info tree' for additional versions.

说明没有安装tree命令,只需要输入如下命令进行安装即可

sudo apt update
sudo apt install tree

(2)dev目录下的必要文件

在主文件夹-->linux-->roofts文件夹下新建一个文件夹,命名为dev,导航到该文件夹,并输入以下命令:

sudo mknod console c 5 1

输出以下命令来检查是否创建了cinsole的设备文件

ls -l /dev/console

(3)lib目录下的必要文件

导航到lib文件夹,输入以下命令

cp /usr/aarch64-linux-gnu/lib/*.so* -a .

检查当前文件夹是否包含了.so文件

六、启动QEMU

6.1 创建共享文件目录

输入以下命令,在内核源码目录下创建目录

mkdir kmodules

6.2 运行QEMU模拟器

在内核源码目录下输入以下命令

qemu-system-aarch64 -machine virt -cpu cortex-a57 -machine type=virt  -m 1024 -smp 4 -kernel arch/arm64/boot/Image --append "rdinit=/linuxrc root=/dev/vda rw console=ttyAMA0 loglevel=8"  -nographic  --fsdev local,id=kmod_dev,path=$PWD/kmodules,security_model=none  -device virtio-9p-device,fsdev=kmod_dev,mount_tag=kmod_mount

启动成功后的内容如下,Enter进入控制台

退出QEMU模拟器,输入以下命令

poweroff

6.3 编译一个简单的内核模块并在QEMU上运行

在根目录下创建一个文件夹,并编写一个简单的代码

// 包含内核模块编程所需的头文件
#include <linux/init.h>  // 包含模块初始化和退出函数的宏
#include <linux/module.h>  // 包含模块相关的宏和函数
#include <linux/kernel.h>  // 包含内核打印函数 printk 的头文件
static int __init test_init(void)
{// 在内核日志中打印 "hello world!"printk("hello world!\n");// 返回 0 表示初始化成功return 0;
}    
static void __exit test_exit(void)
{// 在内核日志中打印 "hello exit!"printk("hello exit!\n");
}
​
// 当模块被加载时,test_init 函数会被调用
module_init(test_init);
// 当模块被卸载时,test_exit 函数会被调用
module_exit(test_exit);
// GPL 是 GNU 通用公共许可证,表示这是一个开源模块
MODULE_LICENSE("GPL");
再编写Makefile文件# 设置目标架构为 ARM64
export ARCH=arm64
​
# 设置交叉编译工具链前缀为 aarch64-linux-gnu-
export CROSS_COMPILE=aarch64-linux-gnu-
​
# 定义内核源码目录
KERNEL_DIR ?= /home/xlq/linux-6.13.5
​
# 定义要编译的内核模块目标文件
# obj-m 表示将 hello.c 编译为内核模块 hello.ko
obj-m := hello.o
​
# 默认目标:编译内核模块
modules:# 调用内核源码目录的 Makefile,编译当前目录下的模块$(MAKE) -C $(KERNEL_DIR) M=$(PWD) modules
​
# 清理目标:删除编译生成的文件
clean:# 调用内核源码目录的 Makefile,清理当前目录下的生成文件$(MAKE) -C $(KERNEL_DIR) M=$(PWD) clean
​
# 安装目标:将编译好的内核模块复制到指定目录
install:# 将当前目录下所有的 .ko 文件复制到内核源码目录的 kmodules 子目录中cp *.ko $(KERNEL_DIR)/kmodules

编译module,输入以下命令拷贝到共享目录

make modules
make install 

输入以下命令启动QEMU

qemu-system-aarch64 -machine virt -cpu cortex-a57 -machine type=virt  -m 1024 -smp 4 -kernel arch/arm64/boot/Image --append "rdinit=/linuxrc root=/dev/vda rw console=ttyAMA0 loglevel=8"  -nographic  --fsdev local,id=kmod_dev,path=$PWD/kmodules,security_model=none  -device virtio-9p-device,fsdev=kmod_dev,mount_tag=kmod_mount
ls /mnt

可以看到.ko文件

在QEUM执行module的插入与卸载,可以看到成功执行并打印log

[hututu@hututu ]$ cd mnt
[hututu@hututu mnt]$ ls /mnt
hello.ko  kmod_mount
[hututu@hututu mnt]$ insmod hello.ko
[ 3679.306752] hello: loading out-of-tree module taints kerne
[ 3679.322242] hello world!
[hututu@hututu mnt]$ rmmod hello.ko
3732.515746] hello exit!
​

七、总结

通过本次实验,了解了Linux系统的基本安装和配置方法,还对虚拟化技术、软件源管理、根文件系统构建以及跨平台编译等高级概念有了深入的理解。这些知识和技能对于进一步学习Linux系统管理和软件开发具有重要意义。

参考博客:Ubuntu虚拟机中使用QEMU搭建ARM64环境-CSDN博客

http://www.dtcms.com/wzjs/617506.html

相关文章:

  • 免费的x网站域名做的精美的门户网站推荐
  • ps如何做网站超级链接博客用来做微网站
  • 塘厦东莞网站建设hexo文章转WordPress
  • 山西建设局网站首页深圳在建工程查询
  • 彩票网站的表格是如何做的建设静态网站工具
  • 建设一个网站大概多少钱企业管理软件免费版
  • 合肥市网站制作网站建设培训学院
  • 建设公司网站的可行性研究徐州网站开发公司
  • php网站怎么做post订单wordpress nginx安装
  • 我想做个百度网站怎么做深圳搜索引擎优化收费
  • 做营销网站泉州刺桐古建筑公司网站
  • 游戏网站建设成功案例专业企业网站建设哪家服务好
  • 蓝色大气企业网站源码wordpress需要升级吗
  • 公司和网站备案查询密码国外做的好点电商网站
  • 建筑专业名词网站做网站服务器还是虚拟空间好
  • 品牌网站定制网站开发与维护难学吗
  • 东莞优秀网站建设如何通过做网站挣钱
  • 运城做网站费用高吗微信浏览为网站的缓存怎么清理
  • 公司做网站怎么做账福州网络科技有限公司
  • 购物网站制作怎么做河北省网站备案
  • 大气自适应网站源码2个小时学会网站建设
  • 公司怎么找做网站高端人士
  • 广州个人网站建设公司网站开发 周期
  • 深圳市电商网站建设企业电子商务网站调研报告
  • 如何用工控做网站网站建设丿金手指15
  • 建设优化一个网站步骤网站域名怎么做变更
  • 南京网站建设q润洽网络广州工程建设信息网站
  • 有什么网站是python做的vs2017网站开发选择调试服务
  • 建网站一般多少钱ui设计师创意平台
  • 凡科互动网站登录入口dns看国外网站