Refer to https://blog.youkuaiyun.com/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.youkuaiyun.com/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.youkuaiyun.com/hushui/article/details/103791704