首页 > 系统相关 >Qemu仿真----(7)运行Ubuntu Base

Qemu仿真----(7)运行Ubuntu Base

时间:2023-05-26 23:44:14浏览次数:71  
标签:service sudo mnt dev ---- Base base Ubuntu ubuntu

平台: ubuntu-22.04-desktop-amd64.
对象: ubuntu base、qemu.
文件: ubuntu-base-22.04.2-base-arm64.tar.gz、linux-6.1.26.tar.xz

Ubuntu Base不是一个超小的内存运行嵌入式发行版;它是Ubuntu的最小实现,本例通过qemu运行ubuntu-base.

1.安装依赖

$ sudo apt install binfmt-support qemu-user-static qemu-system-aarch64 gcc-aarch64-linux-gnu

2.下载文件

linux-6.1.26.tar.xz

[https://mirrors.edge.kernel.org/pub/linux/kernel/v6.x/linux-6.1.26.tar.xz]

ubuntu-base-22.04.2-base-arm64.tar.gz

[http://cdimage.ubuntu.com/ubuntu-base/releases/22.04.2/release/ubuntu-base-22.04.2-base-arm64.tar.gz]

3.编译内核

$ make defconfig ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu-
$ make -j8 ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu-

4.创建文件系统

$ dd if=/dev/zero of=ubuntu22-base.ext4 bs=1M count=1024
$ mkfs.ext4 ubuntu22-base.ext4
$ sudo mount -t ext4 ubuntu22-base.ext4 /mnt/
$ sudo tar -xf ubuntu-base-22.04.2-base-arm64.tar.gz -C /mnt/
$ sudo cp /usr/bin/qemu-aarch64-static /mnt/usr/bin/
$ sudo cp /etc/resolv.conf /mnt/etc/
$ sudo mount -t proc /proc /mnt/proc
$ sudo mount -t sysfs /sys /mnt/sys
$ sudo mount -o bind /dev /mnt/dev
$ sudo mount -o bind /dev/pts /mnt/dev/pts

5.chroot

$ sudo chroot /mnt

进入chroot环境:

$ apt update
$ apt install systemd sudo rsyslog resolvconf udev vim
$ useradd -s '/bin/bash' -m -G adm,sudo phoebus
$ passwd phoebus
$ echo "ubuntu22" > /etc/hostname
$ cp /lib/systemd/system/serial-getty\@.service /lib/systemd/system/serial-getty\@ttyAMA0.service

其中[serial-getty\@ttyAMA0.service]做如下修改:

--- lib/systemd/system/[email protected]
+++ lib/systemd/system/[email protected]
@@ -11,8 +11,8 @@
 Description=Serial Getty on %I
 Documentation=man:agetty(8) man:systemd-getty-generator(8)
 Documentation=http://0pointer.de/blog/projects/serial-console.html
-BindsTo=dev-%i.device
-After=dev-%i.device systemd-user-sessions.service plymouth-quit-wait.service getty-pre.target
+#BindsTo=dev-%i.device
+#After=dev-%i.device systemd-user-sessions.service plymouth-quit-wait.service getty-pre.target
 After=rc-local.service
 
 # If additional gettys are spawned during boot then we should make

然后执行:

$ systemctl enable serial-getty\@ttyAMA0.service
$ exit

退出chroot之后,执行:

$ sudo umount /mnt/proc
$ sudo umount /mnt/sys
$ sudo umount /mnt/dev/pts
$ sudo umount /mnt/dev
$ sudo umount /mnt

6.运行

$ touch start-qemu.sh
$ chmod +x start-qemu.sh
$ vim start-qemu.sh

填入如下内容:

#!/bin/sh

qemu-system-aarch64 \
    -M virt \
    -cpu cortex-a53 \
    -nographic \
    -smp 1 \
    -m 512M \
    -kernel linux-6.1.26/arch/arm64/boot/Image \
    -append "rootwait root=/dev/vda rw console=ttyAMA0" \
    -netdev user,id=eth0 \
    -device virtio-net-device,netdev=eth0 \
    -drive file=ubuntu22-base.ext4,if=none,format=raw,id=hd0 \
    -device virtio-blk-device,drive=hd0

执行start-qemu.sh,顺利的话,就可以进入ubuntu base了,可以直接apt安装需要的软件。

标签:service,sudo,mnt,dev,----,Base,base,Ubuntu,ubuntu
From: https://www.cnblogs.com/phoebus-ma/p/17436089.html

相关文章

  • 使用树莓派远程控制灯继电器开关,dht11温湿度网页显示,树莓派物联网
    前段时间使用esp8266搞了个智能家居,通过网页控制,但是没有办法实现远程控制,只能局域网控制,因为我没有平台,使用机制云等平台还需要开发app使用chatgpt生成的main.py程序fromflaskimportFlask,render_template,requestimportAdafruit_DHTimportRPi.GPIOasGPIOapp=F......
  • WGCLOUD能监控交换机的什么指标?
    WGCLOUD当前最新版本v3.4.7目前支持监测交换机的进出口流量,传输速率,磁盘占用率,cpu使用率,内存使用率,这几个指标目前版本还在更新,不过我们一般就关注这几个指标......
  • 2023华为伙伴大会:ISDP发布伙伴体验中心,邀伙伴探索数智化未来​
    近日,2023年华为中国合作伙伴大会于深圳国际会展中心(宝安)圆满落幕。本次大会向来自全国各个领域的1.6万多名华为新老朋友,提供一个面对面开放交流、自我展示的舞台。此次大会煤亮子、软通动力、中软国际、易宝、全采智能等多家ISDP的新老伙伴出席,一起交流行业发展与下一步合作。其中......
  • 华为ISDP:从ChatGPT说起,企业作业数字化转型需要怎样的平台工具?
    在各行各业轰轰烈烈的数字化转型浪潮中,企业一方面需要实现自身数字化转型以向客户提供更好的业务体验,提升效率,另一方面需要发挥数字化杠杆作用使能企业成本降低,增强行业竞争力。在2023年第20届华为分析师大会开幕式上,华为轮值董事长孟晚舟分享了分享数字化转型三个核心洞见,她指出华......
  • 操作系统(3.4.2)--实时调度算法的分类
    按调度方式分类:非抢占式调度算法、抢占式调度算法1.非抢占式调度算法1)非抢占式轮转调度算法调度程序每次选择队列中的第一个任务投入运行。当时间片结束后,便把它挂在轮转队列的末尾,等待下次调度运行,而调度程序再选择下一个(队首)任务运行。这种调度算法可获得数秒至数十秒的响应时......
  • C语言--检测号码是否合法
    输入号码,检测是否合法intIfTel(constchar*p,intlen){ inti=0; if(len!=13) //号码长度不合法 return1; if(p[0]!='8'&&p[1]!='6') //号码非86开头 return3; for(i=0;i<len;i++) { if(p[i]<'0'||p[i]>&#......
  • Python中的数据容器指的是什么?
    在Python中,数据容器是用来存储和组织数据的对象,常见的数据容器有以下几种:1.列表(List):是一种有序的数据容器,可以存储任意类型的数据,可以通过下标来访问和修改列表中的元素。2.元组(Tuple):也是一种有序的数据容器,与列表类似,但是元组中的元素不可修改,常用于存储一些固定不变的数据。3......
  • 当涉及到基本数据类型和包装类时,一些你需要了解、可能容易被忽略的细节。(附面试题)
    基本数据类型Java基本数据按类型可以分为四大类:布尔型、整数型、浮点型、字符型,这四大类包含8种基本数据类型。布尔型:boolean整数型:byte、short、int、long浮点型:float、double字符型:char8种基本类型取值如下:数据类型代表含义默认值取值包装类boolean布尔型false0(false)到1(......
  • 深入理解字符串(附面试题)
    字符串介绍字符串是程序开发当中,使用最频繁的类型之一,有着与基础类型相同的地位,甚至在JVM(Java虚拟机)编译的时候会对字符串做特殊的处理,比如拼加操作可能会被JVM直接合成为一个最终的字符串,从而到达高效运行的目的。1String特性String是标准的不可变类(immutable),对它的任何改......
  • Java 中的运算符和流程控制(附面试题)
    算术运算符Java中的算法运算符,包括以下几种:算术运算符名称举例+加法1+2=3-减法2-1=1*乘法2*3=6/除法24/8=3%求余24%7=3++自增1inti=1;i++--自减1inti=1;i--我们本讲要重点讲的是“++”和“--”,其他的算术运算符相对比较简单直观,本讲就不花精力去讲解了,之所以要把“++”和......