Qemu4 user mode source build/static for Chroot/ARM rootfs on Ubuntu18

99 篇文章 0 订阅
26 篇文章 1 订阅

 

Refer to https://blog.csdn.net/hushui/article/details/103791704

### build static link usermode/qemu-aarch64 on Ubuntu18


jhula@ShSwDev2:~/tmp/qemu-4.2.0$ ./configure  --target-list=aarch64-linux-user,arm-linux-user,i386-linux-user,x86_64-linux-user  --enable-debug   --enable-gtk --enable-vnc --prefix=$HOME/usr    --static  --disable-system    --enable-linux-user
 

###  normal build with full Linux system emulation 
./configure  --target-list=aarch64-softmmu,arm-softmmu,x86_64-softmmu,i386-softmmu,aarch64-linux-user,arm-linux-user,i386-linux-user,x86_64-linux-user  --enable-debug   --enable-gtk --enable-vnc --prefix=$HOME/usr  --disable-user

###  qemu-user-static build for arm/aarch64 only 
./configure  --target-list=aarch64-linux-user,arm-linux-user  --enable-debug   --enable-gtk --enable-vnc --prefix=$HOME/usr    --static  --disable-system    --enable-linux-user

Note for Centos7/RHEL7 , static lib files are needed!

 yum install gtk2-devel   glib2-static   
  yum install glibc-static libtool 
 yum install zlib-static 
 yum install    libstdc++-static  
 yum install pcre-static 

--disable-guest-agent if Centos misses some pixman static lib 

[lake@lake_centos7 qemu-4.2.0]$  ./configure  --target-list=aarch64-linux-user,arm-linux-user  --enable-debug  --prefix=$HOME/usr    --static  --disable-system    --enable-linux-user     --disable-guest-agent

Qemu/static build/old way 

../configure --disable-bsd-user --disable-guest-agent --disable-strip --disable-werror --disable-gcrypt --disable-debug-info --disable-debug-tcg --enable-docs --disable-tcg-interpreter --enable-attr --disable-brlapi --disable-linux-aio --disable-bzip2 --disable-bluez --disable-cap-ng --disable-curl --disable-fdt --disable-glusterfs --disable-gnutls --disable-nettle --disable-gtk --disable-rdma --disable-libiscsi --disable-vnc-jpeg --disable-kvm --disable-lzo --disable-curses --disable-libnfs --disable-numa --disable-opengl --disable-vnc-png --disable-rbd --disable-vnc-sasl --disable-sdl --disable-seccomp --disable-smartcard --disable-snappy --disable-spice --disable-libssh2 --disable-libusb --disable-usb-redir --disable-vde --disable-vhost-net --disable-virglrenderer --disable-virtfs --disable-vnc --disable-vte --disable-xen --disable-xen-pci-passthrough --disable-xfsctl --enable-linux-user --disable-system --disable-blobs --disable-tools --target-list=arm-linux-user --static --disable-pie

 

###  ubuntu-base-18.04-base-arm64 rootfs  

 

 

### Host CPU/Linux/X86_64/Ubuntu16 

 

jhula@ShSwDev2:~/tmp/qemu-4.2.0$
jhula@ShSwDev2:~/tmp/qemu-4.2.0$ cat /proc/version
Linux version 4.4.0-142-generic (buildd@lgw01-amd64-033) (gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.10) ) #168-Ubuntu SMP Wed Jan 16 21:00:45 UTC 2019
jhula@ShSwDev2:~/tmp/qemu-4.2.0$ uname -a
Linux ShSwDev2 4.4.0-142-generic #168-Ubuntu SMP Wed Jan 16 21:00:45 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
jhula@ShSwDev2:~/tmp/qemu-4.2.0$ cat /etc/issue
Ubuntu 16.04.3 LTS \n \l
 

##  register qemu-aarch64 in  /proc/sys/fs/binfmt_misc/register

# arm 64bit / qemu-aarch64

jhula@ShSwDev2:~/local/lfs$  sudo  cp /home/jhula/usr/bin/qemu-aarch64   /home/jhula/local/lfs/ubuntu-base-18.04-base-arm64/usr/bin/
jhula@ShSwDev2:~/local/lfs$ echo ":qemu-aarch64:M::\x7fELF\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\xb7\x00:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff:/usr/bin/qemu-aarch64:" > /proc/sys/fs/binfmt_misc/register
-bash: /proc/sys/fs/binfmt_misc/register: Permission denied
jhula@ShSwDev2:~/local/lfs$ sudo echo ":qemu-aarch64:M::\x7fELF\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\xb7\x00:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff:/usr/bin/qemu-aarch64:" > /proc/sys/fs/binfmt_misc/register
-bash: /proc/sys/fs/binfmt_misc/register: Permission denied

 

# arm v7  / qemu-arm

jhula@ShSwDev2:~/local/lfs$  sudo  cp  ~/usr/bin/qemu-arm    ubuntu-base-16.04-core-armhf/usr/bin/
jhula@ShSwDev2:~/local/lfs$ sudo  /bin/bash 

root@ShSwDev2:/localrepo/jhula/lfs# echo   ':arm:M::\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x28\x00:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff:/usr/bin/qemu-arm:' >/proc/sys/fs/binfmt_misc/register

Refer  to  https://fuchsia.googlesource.com/third_party/qemu/+/v2.5.1/scripts/qemu-binfmt-conf.sh

#chroot to ARM target rootfs, execute /bin/bash ARM elf 


jhula@ShSwDev2:~/local/lfs$ sudo chroot  ubuntu-base-18.04-base-arm64/
root@ShSwDev2:/# uname -a
Linux ShSwDev2 4.4.0-142-generic #168-Ubuntu SMP Wed Jan 16 21:00:45 UTC 2019 aarch64 aarch64 aarch64 GNU/Linux
root@ShSwDev2:/#

 

 

systemd of Ubuntu18 

 

root@lake-Latitude-5491:/# which init  <<<< Issue no init/systemd in ubuntu-base-18.04-base-arm64/armhf
root@lake-Latitude-5491:/# which systemd
root@lake-Latitude-5491:/# which busybox
root@lake-Latitude-5491:/# which ps
/bin/ps
root@lake-Latitude-5491:/# which init
root@lake-Latitude-5491:/#  
root@lake-Latitude-5491:/# apt  list  --installed |grep systemd   <<<<< Ubuntu18/arm/default no systemd 


WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

libsystemd0/bionic,now 237-3ubuntu10 arm64 [installed]
 

############ Refer to https://blog.csdn.net/hushui/article/details/103791704

### Copy Host DNS 

lake@lake-Latitude-5491:~/T3/ubuntu-base-18.04-base-arm64$ sudo  cp     /etc/resolv.conf   etc/ 

 

### Ubuntu16/ARM/default   

root@ShSwDev2:/# apt  list  --installed |grep systemd

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

libsystemd0/xenial,now 229-4ubuntu4 armhf [installed]
systemd/xenial,now 229-4ubuntu4 armhf [installed]
systemd-sysv/xenial,now 229-4ubuntu4 armhf [installed]

 

###  Note ,  to mount /proc  /dev etc, please use the shell from  https://blog.csdn.net/hushui/article/details/103791704

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值