使用Qemu运行Ubuntu文件系统(1)

2022年 10月 18日 发表评论
免费、便宜/高性价比 服务器汇总(已更新):点击这里了解

本站教程收集整理的这篇文章主要介绍了使用Qemu运行Ubuntu文件系统(1),本站教程本站觉得挺不错的,现在分享给大家,也给大家做个参考。

参考

https://blog.csdn.net/mountzf/article/details/51707853 https://blog.csdn.net/stephen_lu_fahai/article/details/76618581 http://wiki.t-firefly.com/zh_CN/Firefly-RK3399/linux_build_ubuntu_rootfs.html https://blog.csdn.net/w401229755/article/details/53350010

平台

Qemu + AArch32(vexpress-ca9) Linux: Linux-4.14.13

概述

根文件系统采用busyBox的优点是节省空间,缺点是添加一款软件就需要自己找源代码编译,还需要解决依赖关系,费时费力,@R_450_9358@个问题,可以使用ubuntu的arm版本的根文件系统,这样就可以充分利用ubuntu软件仓库里已经做好的众多软件包,并且依赖关系也已经帮我们解决了,安装的方式跟PC机一样,使用apt命令。

正文

使用的平台还是Qemu,用它来模拟一个vexpress-ca9开发板,这部分可以参考下面的博客:

用Qemu搭建aarch32学习环境

为Qemu aarch32开发板添加sd卡

实现Qemu aarch32虚拟开发板ping www.baidu.com

启动Qemu的命令如下:

kernel_dir=./Linux-4.14.13  kernel_image=${kernel_dir}/arch/arm/boot/zImage  dtb_image=${kernel_dir}/arch/arm/boot/dts/vexpress-v2p-ca9.dtb    sudo qemu-system-arm     -M vexpress-a9     -@H_282_88@m 1024M     -smp 4 -kernel ${kernel_imagE}     -nographic     -append "root=/dev/mmcblk0 rw rootfstype=ext4 console=ttyAMA0,115200" -net nic,vlan=2 -net tap,vlan=2,ifname=tap2     -sd ./ubuntu_rootfs/ubuntu.img     -dtb ${dtb_imagE}

说明,其中/dev/mmcblk0表示跟文件系统所在的设备,因为没有进行分区并且使用sd卡启动方式,所以是mmcblk0。第13行就是我们下面要制作的ubuntu根文件系统。

一、安装Qemu

在Linux PC主机上安装模拟器:

sudo apt-get install qemu-user-static

二、下载和解压 ubuntu-core

先从官方上获取ubuntu core的tar包:http://cdimage.ubuntu.com/ubuntu-base/releases/16.04/release/

选择下载ubuntu-base-16.04-core-armhf.tar.gz,下载完之后,创建临时文件夹并解压根文件系统:

@H_525_94@mkdir tmp  sudo tar -xf ubuntu-base-16.04-core-armhf.tar.gz -C tmp/

三、修改根文件系统

1、准备网络

@H_616_199@

sudo cp -b /etc/resolv.conf tmp/etc/resolv.conf

这个文件存放了DNS服务器的地址

2、准备qemu

cp /usr/bin/qemu-arm-static tmp/usr/bin/

3、增加软件源

sudo vim tmp/etc/apt/source.list    将下面的两行的注释取消掉:  deb http://portS.Ubuntu.com/ubuntu-ports/ xenial universe  deb-src http://portS.Ubuntu.com/ubuntu-ports/ xenial universe

4、进入根文件系统进行操作

sudo chroot tmp/
    @H_815_262@

    更新

apt update   apt upgrade
    @H_815_262@

    安装软件包

apt install udev       #否则ttyAMA0无法找到  apt install vim        #vim编辑器  apt install net-tools  #ifconfig,netstat,route,arp等  apt install iputils-ping #ping  apt install sudo       #sudo命令  #apt install ssh        #ssh的client和server  apt install ethtool    #ethtool命令,显示、修改以太网设置  #apt install wireless-tools    #iwconfig等,显示、修改无线设置  apt install ifupdown          #ifup,ifdown等工具  #apt install network-@H_282_88@manager   #Network Manager服务和框架,高级网络管理  apt install iputils-ping      #ping和ping6  apt install rsyslog           #系统log服务  apt install bash-completion   #bash命令行补全  apt install htop              #htop工具,交互式进程查看器
    @H_815_262@

    @R_266_10589@

全部安装完之后,添加一个用户pengdl,并设置密码,同时把root的密码也修改一下:

useradd -s /bin/bash -m -G adm,sudo pengdl  #增加pengdl用户  passwd pengdl #给pengdl用户设置密码  passwd root #修改root密码

为pengdl增加sudo权限,修改/etc/sudoers,增加:

pengdl  ALL=(ALL:ALL) ALL
    @H_815_262@

    设置ip

编辑/etc/network/interfaces,添加如下内容:

auto lo  iface lo inet loopBACk    auto eth0  iface eth0 inet static  address 192.168.1.5  netmask 255.255.255.0  gateway 192.168.1.1
    @H_815_262@

    设置hostname

设置主机名称:  echo "ubuntu-arm">/etc/hostname    设置本机入口ip:  echo "127.0.0.1 localhost">>/etc/hosts  echo "127.0.1.1 ubuntu-arm">>/etc/hosts

四、制作根文件系统

    @H_815_262@

    查看根文件系统的大小

du -sh tmp/  351M    tmp/
    @H_815_262@

    生成镜像,并格式为ext4

dd if=/dev/zero  of=ubuntu.img   bs=1M   count=1024  mkfs.ext4 ubuntu.img  @H_525_94@mkdir mnt  sudo @H_525_94@mount  ubuntu.img mnt  sudo cp -rfp tmp/* mnt  sudo umount mnt    #检查并修复ubuntu.img  e2fsck -p -f ubuntu.img

五、测试

    @H_815_262@

    开机:

[    8.915670] Freeing unused kernel memory: 1024K  [   12.875789] systemd[1]: Failed to insert module autofs4: No such file or directory  [   13.486345] systemd[1]: systemd 229 running in system mode. (+PAM +AUDIT +SELINUX +IMA +APPARMOR +smaCK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ -LZ4 +SECCOMP +BLKID +ELFUTILS +kmod -IDN)  [   13.497463] systemd[1]: Detected architecture arm.    Welcome to Ubuntu 16.04 LTS!    [   13.536063] systemd[1]: Set hostname to <ubuntu-arm>.  [   15.590117] systemd-gpt-aut (1023) used greatest stack depth: 4908 bytes left  [   16.987350] systemd[1]: Reached target Swap.  ...  [  OK  ] Found device /dev/ttyAMA0.  [  OK  ] Reached target Sound Card.  [  OK  ] Started ifup for eth0.  [  OK  ] Found device /sys/subsystem/net/devices/eth0.  [  OK  ] Started LSB: Set the cpu Frequency Scaling governor to "ondemand".  [  OK  ] Started Raise network interfaces.  [  OK  ] Reached target Network.           StarTing /etc/rc.local Compatibility...  [  OK  ] Started /etc/rc.local Compatibility.  [  OK  ] Started serial Getty on ttyAMA0.  [  OK  ] Started Getty on tty5.  [  OK  ] Started Getty on tty3.  [  OK  ] Started Getty on tty6.  [  OK  ] Started Getty on tty2.  [  OK  ] Started Getty on tty1.  [  OK  ] Started Getty on tty4.  [  OK  ] Reached target Login Prompts.  [  OK  ] Reached target Multi-User System.  [  OK  ] Reached target Graphical Interface.           StarTing update UTMP about System Runlevel Changes...  [  OK  ] Started update UTMP about System Runlevel Changes.    Ubuntu 16.04 LTS ubuntu-arm ttyAMA0    ubuntu-arm login: pengdl  password:   Last login: Sun Aug 26 16:14:28 UTC 2018 on ttyAMA0  Welcome to Ubuntu 16.04 LTS (GNU/Linux 4.14.13+ armv7l)     * Documentation:  https://Help.ubuntu.com/  [emailprotected]:~$ ifconfig   eth0      Link encap:Ethernet  HWaddr 52:54:00:12:34:56              inet addr:192.168.1.5  Bcast:192.168.1.255  Mask:255.255.255.0            UP broaDCAST RUNNING MULTICAST  MTU:1500  Metric:1            RX packets:13 errors:0 dropped:0 overruns:0 frame:0            TX packets:4 errors:0 dropped:0 overruns:0 carrier:0            collisions:0 txqueuelen:1000             RX bytes:2101 (2.1 KB)  TX bytes:296 (296.0 B)            Interrupt:31     lo        Link encap:Local LoopBACk              inet addr:127.0.0.1  Mask:255.0.0.0            UP LOOPBACK RUNNING  MTU:65536  Metric:1            RX packets:0 errors:0 dropped:0 overruns:0 frame:0            TX packets:0 errors:0 dropped:0 overruns:0 carrier:0            collisions:0 txqueuelen:1000             RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)    [emailprotected]-arm:~$ ping www.baidu.com  PING www.a.shifen.com (61.135.169.121) 56(84) bytes of data.  64 bytes from 61.135.169.121: icmp_seq=1 ttl=56 time=4.12 ms  64 bytes from 61.135.169.121: icmp_seq=2 ttl=56 time=3.71 ms  64 bytes from 61.135.169.121: icmp_seq=3 ttl=56 time=3.83 ms  ^C  --- www.a.shifen.com ping statistics ---  3 packets transmitted,3 received,0% packet loss,time 2017ms  rtt min/avg/max/mdev = 3.717/3.891/4.125/0.186 ms    [emailprotected]-arm:~$ sudo apt install htop  Reading package lists... Done  Reading state @R_485_4036@ion... Done  Suggested packages:    lsof strace  The following NEW packages will be installed:    htop  0 upgraded,1 newly installed,0 to remove and 51 not upgraded.  Need to get 67.7 kB of archives.  After this operation,146 kB of additional disk space will be used.  Get:1 http://portS.Ubuntu.com/ubuntu-ports xenial/universe armhf htop armhf 2.0.1-1 [67.7 kB]  Fetched 67.7 kB in 2s (27.0 kB/s)  debconf: delaying package configuration,since apt-utils is not installed  SELEcTing prevIoUsly unSELEcted package htop.  (Reading database ... 10417 files and directories currently installed.)  Unpacking htop (2.0.1-1) ..._2.0.1-1_armhf.deb ...  Processing triggers for mime-support (3.59ubuntu1) ...
    @H_815_262@

    关机:

[emailprotected]:~$ sudo shutdown -h Now  [  OK  ] Stopped target Timers.  [  OK  ] Stopped Daily apt activities.  [  OK  ] Stopped target System Time Synchronized.  [  OK  ] Stopped target Graphical Interface.  [  OK  ] Stopped Daily Cleanup of Temporary Directories.  [  OK  ] Stopped target Multi-User System.  [  OK  ] Stopped target Login Prompts.           Stopping Getty on tty6...           Stopping Getty on tty1...           Stopping Getty on tty5...           Stopping Getty on tty4...  [  OK  ] Stopped getty on tty2-tty6 if dbus and logind are not available.           Stopping Getty on tty2...           Stopping Getty on tty3...           Stopping LSB: Set the cpu Frequency Scaling governor to "ondemand"...  [  OK  ] Reached target Unmount All Filesystems.  [  OK  ] Stopped target Sound Card.           Stopping serial Getty on ttyAMA0...  [  OK  ] Removed slice system-getty.slice.  [  OK  ] Stopped /etc/rc.local Compatibility.  [  OK  ] Stopped target Network.           Stopping Raise network interfaces...           Stopping Permit User Sessions...  [  OK  ] Removed slice system-serialx2dgetty.slice.  [  OK  ] Stopped LSB: Set the cpu Frequency Scaling governor to "ondemand".  [  OK  ] Stopped Permit User Sessions.  [  OK  ] Stopped target Basic System.  [  OK  ] Stopped target Paths.  [  OK  ] Stopped ForWARD password requests to Wall Directory Watch.  [  OK  ] Stopped dispatch password requests to Console Directory Watch.  [  OK  ] Stopped target Slices.  [  OK  ] Stopped target System Initialization.  [  OK  ] Stopped target Encrypted Volumes.  [  OK  ] Stopped target Swap.           Stopping update UTMP about System Boot/Shutdown...           Stopping Load/Save Random Seed...           Stopping Network Time Synchronization...  [  OK  ] Stopped target Sockets.  [  OK  ] Stopped target Remote File Systems.  [  OK  ] Stopped target Remote File Systems (PrE).  [  OK  ] Stopped Load/Save Random Seed.  [  OK  ] Stopped Network Time Synchronization.  [  OK  ] Stopped update UTMP about System Boot/Shutdown.  [  OK  ] Stopped Create Volatile Files and Directories.  [  OK  ] Stopped Raise network interfaces.  [  OK  ] Stopped Apply Kernel Variables.  [  OK  ] Stopped target Local File Systems.  [  OK  ] Stopped target Local File Systems (PrE).  [  OK  ] Stopped Create Static Device Nodes in /dev.  [  OK  ] Stopped Remount Root and Kernel File Systems.  [  OK  ] Stopped Load Kernel Modules.  [  OK  ] Reached target Shutdown.  [  385.729940] reboot: Power down  sudo brctl delif br0 tap2  sudo tunctl -d tap2  TUNSETIFF: Device or resource busy  brctl show  bridge name    bridge id        STP enabled    interfaces  br0        8000.f48e387d73d8    no        enp3s0  virbr0        8000.000000000000    yes        
    @H_815_262@

    重启:

[emailprotected]:~$ sudo reboot  [sudo] password for pengdl:   [  OK  ] Stopped target Sound Card.  [  OK  ] Reached target Unmount All Filesystems.  [  OK  ] Stopped target Timers.  [  OK  ] Stopped Daily apt activities.  [  OK  ] Stopped target System Time Synchronized.  [  OK  ] Stopped Daily Cleanup of Temporary Directories.  [  OK  ] Stopped target Graphical Interface.  [  OK  ] Stopped target Multi-User System.           Stopping LSB: Set the cpu Frequency Scaling governor to "ondemand"...  [  OK  ] Stopped target Login Prompts.           Stopping Getty on tty5...           Stopping Getty on tty3...           Stopping Getty on tty2...           Stopping Getty on tty6...  [  OK  ] Stopped getty on tty2-tty6 if dbus and logind are not available.           Stopping Getty on tty4...           Stopping serial Getty on ttyAMA0...           Stopping Getty on tty1...  [  OK  ] Stopped Getty on tty4.  [  OK  ] Stopped serial Getty on ttyAMA0.  [  OK  ] Stopped Getty on tty2.  [  OK  ] Removed slice system-serialx2dgetty.slice.           Stopping Permit User Sessions...  [  OK  ] Removed slice system-getty.slice.  [  OK  ] Stopped /etc/rc.local Compatibility.  [  OK  ] Stopped target Network.           Stopping Raise network interfaces...  [  OK  ] Stopped LSB: Set the cpu Frequency Scaling governor to "ondemand".  [  OK  ] Stopped Permit User Sessions.  [  OK  ] Stopped target Basic System.  [  OK  ] Stopped target Paths.  [  OK  ] Stopped ForWARD password requests to Wall Directory Watch.  [  OK  ] Stopped dispatch password requests to Console Directory Watch.  [  OK  ] Stopped target Sockets.  [  OK  ] Stopped target Slices.  [  OK  ] Stopped target System Initialization.           Stopping Network Time Synchronization...  [  OK  ] Stopped target Encrypted Volumes.           Stopping Load/Save Random Seed...           Stopping update UTMP about System Boot/Shutdown...  [  OK  ] Stopped target Swap.  [  OK  ] Stopped target Remote File Systems.  [  OK  ] Stopped target Remote File Systems (PrE).  [  OK  ] Stopped Network Time Synchronization.  [  OK  ] Stopped Load/Save Random Seed.  [  OK  ] Stopped update UTMP about System Boot/Shutdown.  [  OK  ] Stopped Create Volatile Files and Directories.  [  OK  ] Stopped Raise network interfaces.  [  OK  ] Stopped Apply Kernel Variables.  [  OK  ] Stopped Load Kernel Modules.  [  OK  ] Stopped target Local File Systems.  [  OK  ] Stopped target Local File Systems (PrE).  [  OK  ] Stopped Remount Root and Kernel File Systems.  [  OK  ] Stopped Create Static Device Nodes in /dev.  [  OK  ] Reached target Shutdown.  [   85.454918] reboot: RestarTing system  [    0.000000] BooTing Linux on physical cpu 0x0  [    0.000000] Linux version 4.14.13+ ([emailprotected]) (gcc version 4.8.3 20140320 (prereleasE) (sourcery CodeBench Lite 2014.05-29)) #11 SMP PREEMPT Thu Apr 5 11:23:40 CST 2018  [    0.000000] cpu: ARMv7 Processor [410fc090] revision 0 (ARMv7),cr=10c5387d  [    0.000000] cpu: PIPT / VIPT nonaliasing data cache,VIPT nonaliasing instruction cache  [    0.000000] OF: fdt: Machine model: V2P-CA9  [    0.000000] Memory policy: Data cache writealloc  [    0.000000] cma: Reserved 16 MiB at 0x9f000000

未完待续……

本站总结

以上是本站教程为你收集整理的使用Qemu运行Ubuntu文件系统(1)全部内容,希望文章能够帮你解决使用Qemu运行Ubuntu文件系统(1)所遇到的程序开发问题。

如果觉得本站教程网站内容还不错,欢迎将本站教程推荐给好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。

小咸鱼

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: