From 783d766ce2538d2219d3dd78d5c5952aa81ebc6f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=92=A6=E5=93=9F=E6=96=AF=E5=93=88?= <1939566992@qq.com> Date: Tue, 29 Nov 2022 16:08:18 +0000 Subject: [PATCH] add articles/20221129-elfs-riscv-linux-env.md. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 咦哟斯哈 <1939566992@qq.com> --- articles/20221129-elfs-riscv-linux-env.md | 934 ++++++++++++++++++++++ 1 file changed, 934 insertions(+) create mode 100644 articles/20221129-elfs-riscv-linux-env.md diff --git a/articles/20221129-elfs-riscv-linux-env.md b/articles/20221129-elfs-riscv-linux-env.md new file mode 100644 index 0000000..5e0d84e --- /dev/null +++ b/articles/20221129-elfs-riscv-linux-env.md @@ -0,0 +1,934 @@ +# 从零开始学习RISCV-Lab和 LINUX-Lab基础 +> 作者: 周子棠
+> 日期: 2022.11.29 +## 简介 +这系列文章是学习RISCV-Lab 和 LINUX 基础 + +RISCV-Lab主要是学习应用开发的 + +LINUX-Lab主要是学习linux内核的 + +首先,我们要运行操作系统 +## 实验准备 +准备一个泰晓科技的实验盘(在淘宝搜索泰晓科技就可以查询到) +## RISCV-Lab操作系统的运行 +# 下载RISCV-Lab +``` +$ git clone https://gitee.com/tinylab/cloud-lab.git + +$ cd cloud-lab +``` +# 运行RISCV-Lab +``` +$ tools/docker/run riscv-lab +LOG: Init docker environment ... +INFO: Resume the stopped riscv-lab +INFO: Run host side init for riscv-lab +INFO: Start riscv-lab-25651-4a9553 +riscv-lab-25651-4a9553 +INFO: Wait for lab launching +INFO: Wait for lab resuming... +INFO: Please choose one of the login methods: + + 1 bash + 2 vnc + 3 ssh + 4 webssh + 5 webvnc + +``` +# 选择登录方式 +``` +INFO: Choose the login method: 1 + + 1 bash + +INFO: Available login methods: + + bash vnc ssh webssh webvnc + +INFO: Switch to another method: + + tools/docker/login LOGIN_METHOD + +INFO: Running '/home/ubuntu/Develop/cloud-lab/tools/docker/bash' +``` +# 在里面输入命令 +``` + +ubuntu@riscv-lab:/labs/riscv-lab$ ls +COPYING README.en.md README.md +ubuntu@riscv-lab:/labs/riscv-lab$ uname -a +Linux riscv-lab 5.15.0-27-generic #28-Ubuntu SMP Thu Apr 14 04:55:28 UTC 2022 riscv64 riscv64 riscv64 GNU/Linux +ubuntu@riscv-lab:/labs/riscv-lab$ man uname +This system has been minimized by removing packages and content that are +not required on a system that users do not log into. + +To restore this content, including manpages, you can run the 'unminimize' +command. You will still need to ensure the 'man-db' package is installed. +``` +这样我们就成功运行了riscv-lab操作系统了 +## linux-Lab操作系统的运行 +# 首先是要运行 +``` +$ tools/docker/run linux-lab +LOG: Init docker environment ... +INFO: Open the running linux-lab +INFO: Please choose one of the login methods: + + 1 bash + 2 vnc + 3 ssh + 4 webssh + 5 webvnc + + + +``` +# 选择登录方式 +``` +INFO: Choose the login method: 1 + + 1 bash + +INFO: Available login methods: + + bash vnc ssh webssh webvnc + +INFO: Switch to another method: + + tools/docker/login LOGIN_METHOD + +INFO: Running '/home/ubuntu/Develop/cloud-lab/tools/docker/bash' +``` +# 在里面输入命令 +**make list** +``` +ubuntu@linux-lab:/labs/linux-lab$ make list +[ aarch64/raspi3 ]: + ARCH := arm64 + XARCH := aarch64 + CPU ?= cortex-a53 + SMP ?= 4 + MEM ?= 1024M + UART ?= 0 + ifeq ($(UART), 1) + XOPTS += -serial null -serial mon:stdio + XKCLI ?= earlycon=uart8250,mmio32,0x3f215040 + SERIAL ?= ttyS1,115200 + else + XOPTS += -serial mon:stdio + XKCLI ?= earlycon=pl011,0x3f201000 + SERIAL ?= ttyAMA0,115200 + endif + QEMU ?= v2.12.0 + QEMU_US ?= 0 + LINUX ?= v5.1 + BUILDROOT?= 2019.02.2 + NET ?= + TEST_RD ?= /dev/mmcblk0 + ROOTDEV_LIST := /dev/mmcblk0 /dev/ram0 + ROOTDEV ?= /dev/mmcblk0 + FSTYPE ?= ext2 + ORIIMG ?= arch/$(ARCH)/boot/Image + ORIDTB ?= arch/$(ARCH)/boot/dts/broadcom/bcm2710-rpi-3-b.dtb + KIMAGE ?= $(BSP_KERNEL)/$(LINUX)/Image + DTB ?= $(BSP_KERNEL)/$(LINUX)/bcm2710-rpi-3-b.dtb + ROOTFS ?= $(BSP_ROOT)/$(BUILDROOT)/rootfs.cpio.gz + HROOTFS ?= $(BSP_ROOT)/$(BUILDROOT)/rootfs.$(FSTYPE) + QTOOL[OS_trusty] ?= $(BSP_QEMU)/$(QEMU)/bin/qemu-system-$(XARCH) + CCORI ?= internal +[ aarch64/virt ]: + ARCH := arm64 + XARCH := aarch64 + CPU ?= cortex-a57 + SMP ?= 2 + MEM ?= 256M + XOPTS ?= -serial mon:stdio -machine virt,gic_version=3 -machine type=virt,virtualization=true -d guest_errors -nodefaults + QEMU ?= v4.0.0 + QEMU_US ?= 0 + UBOOT ?= v2019.10 + CCORI[UBOOT_v2019.10,OS_trusty]:= linaro + CCORI[UBOOT_v2019.10,OS_focal] := internal + LINUX ?= v5.13 + BUILDROOT?= 2019.11.1 + KERNEL_GIT[KERNEL_FORK_openeuler] := https://gitee.com/openeuler/kernel.git + LINUX[KERNEL_FORK_openeuler] ?= 5.10.0-5.10.0 + NETDEV_LIST := virtio + NETDEV ?= virtio + SERIAL ?= ttyAMA0 + NET9PDEV ?= virtio-9p-device + ROOTDEV_LIST := /dev/sda /dev/vda /dev/ram0 /dev/nfs + ROOTDEV ?= /dev/vda + FSTYPE ?= ext2 + ORIIMG ?= arch/$(ARCH)/boot/Image + KIMAGE ?= $(BSP_KERNEL)/$(LINUX)/Image + KRN_ADDR?= 0x45000000 + KRN_SIZE?= 10 + RDK_ADDR?= 0x42000000 + RDK_SIZE?= 6 + DTB_ADDR?= 0x44000000 + DTB_SIZE?= 2 + UCONFIG ?= qemu-arm.h + BOOTDEV_LIST := tftp flash pflash ram + BOOTDEV ?= flash + PFLASH_SIZE ?= 64 + PFLASH_BS ?= 512 + ENV_OFFSET ?= 0 + ENV_SIZE ?= 1 + ENVDEV ?= flash + ifeq ($(ENV_DEV), flash) + ENV_ADDR ?= 0x4000000 + else + ENV_ADDR ?= 0x49000000 + endif + UBOOT_BIOS ?= 1 + BIMAGE ?= $(BSP_UBOOT)/$(UBOOT)/$(LINUX)/u-boot.bin + DTS ?= $(BSP_KERNEL)/$(LINUX)/virt-gicv3.dts + DTB ?= $(BSP_KERNEL)/$(LINUX)/virt-gicv3.dtb + UKIMAGE ?= $(BSP_KERNEL)/$(LINUX)/Image + ROOTFS ?= $(BSP_ROOT)/$(BUILDROOT)/rootfs.cpio.gz + HROOTFS ?= $(BSP_ROOT)/$(BUILDROOT)/rootfs.$(FSTYPE) + UROOTFS := $(BSP_ROOT)/$(BUILDROOT)/rootfs.cpio.uboot + XKCLI ?= earlycon + QTOOL[OS_trusty] ?= $(BSP_QEMU)/$(QEMU)/bin/qemu-system-$(XARCH) + QTOOL[OS_focal] ?= $(BSP_QEMU)/$(QEMU)/bin/qemu-system-$(XARCH) + CCORI ?= internal +[ arm/mcimx6ul-evk ]: + ARCH := arm + XARCH := $(ARCH) + CPU ?= cortex-a9 + MEM ?= 512M + QEMU ?= v4.1.1 + QEMU_US ?= 0 + LINUX ?= v5.4 + BUILDROOT?= 2020.02 + NETDEV_LIST ?= smc91c111 lan9118 + NETDEV ?= smc91c111 + SERIAL ?= ttymxc0 + ROOTDEV_LIST := /dev/mmcblk0 /dev/ram0 /dev/nfs + ROOTDEV ?= /dev/mmcblk0 + FSTYPE ?= ext4 + ORIIMG ?= arch/$(ARCH)/boot/zImage + ORIDTB ?= arch/$(ARCH)/boot/dts/imx6ul-liteboard.dtb + KIMAGE ?= $(BSP_KERNEL)/$(LINUX)/zImage + DTB ?= $(BSP_KERNEL)/$(LINUX)/imx6ul-liteboard.dtb + ROOTFS ?= $(BSP_ROOT)/$(BUILDROOT)/rootfs.cpio.gz + UROOTFS ?= $(BSP_ROOT)/$(BUILDROOT)/rootfs.cpio.uboot + HROOTFS ?= $(BSP_ROOT)/$(BUILDROOT)/rootfs.$(FSTYPE) + QTOOL[OS_trusty] ?= $(BSP_QEMU)/$(QEMU)/bin/qemu-system-$(XARCH) + CCORI ?= internal +[ arm/versatilepb ]: + ARCH := arm + XARCH := $(ARCH) + CPU ?= arm926 + MEM ?= 128M + UBOOT ?= v2015.07 + GCC[UBOOT_v2015.07] := 4.3 + BUILDROOT?= 2021.08.2 + LINUX ?= v5.1 + GCC[LINUX_v2.6.36] := 4.3 + GCC[LINUX_v4.6.7] := 4.7 + PFLASH_SIZE ?= 64 + PFLASH_BS ?= 256 + ENV_OFFSET ?= 63 + KRN_ADDR?= 0x007fc0 + KRN_SIZE?= 5 + RDK_ADDR?= 0x900000 + RDK_SIZE?= 4 + DTB_ADDR?= 0xe07fc0 + DTB_SIZE?= 1 + BOOTDEV_LIST := tftp flash pflash + BOOTDEV ?= flash + UCONFIG ?= versatile.h + NETDEV_LIST := smc91c111 rtl8139 + NETDEV ?= smc91c111 + SERIAL ?= ttyAMA0 + ROOTDEV_LIST := /dev/sda /dev/ram0 /dev/nfs + ROOTDEV ?= /dev/ram0 + FSTYPE ?= ext2 + ORIIMG ?= arch/$(ARCH)/boot/zImage + UORIIMG ?= arch/$(ARCH)/boot/uImage + HAS_DTS[LINUX_v2.6.36] := 0 + HAS_DTS[LINUX_v2.6.14.7] := 0 + ifeq ($(HAS_DTS), 1) + ORIDTB ?= arch/$(ARCH)/boot/dts/versatile-pb.dtb + BIMAGE ?= $(BSP_UBOOT)/$(UBOOT)/u-boot + else + BIMAGE ?= $(BSP_UBOOT)/$(UBOOT)/nodtb/u-boot + endif + KIMAGE ?= $(BSP_KERNEL)/$(LINUX)/zImage + DTB ?= $(BSP_KERNEL)/$(LINUX)/versatile-pb.dtb + UKIMAGE ?= $(BSP_KERNEL)/$(LINUX)/uImage + ROOTFS ?= $(BSP_ROOT)/$(BUILDROOT)/rootfs.cpio.gz + UROOTFS ?= $(BSP_ROOT)/$(BUILDROOT)/rootfs.cpio.uboot + HROOTFS ?= $(BSP_ROOT)/$(BUILDROOT)/rootfs.$(FSTYPE) + CCORI ?= internal +[ arm/vexpress-a9 ]: + ARCH := arm + XARCH := $(ARCH) + CPU ?= cortex-a9 + MEM ?= 128M + QEMU ?= v4.1.1 + QEMU_US ?= 0 + UBOOT ?= v2020.04 + LINUX ?= v5.17 + UBOOT[SHARE_1] := disabled + GCC[LINUX_v3.18.39] := 4.7 + GCC[LINUX_v3.16.80] := 4.7 + GCC[LINUX_v4.0.9] := 4.7 + GCC[LINUX_v4.12] := 4.7 + GCC[OS_focal] := 9 + CCORI[UBOOT_v2020.04,OS_trusty] := linaro + CCORI[UBOOT_v2020.04,OS_focal] := internal + BUILDROOT?= 2021.08.2 + KRN_ADDR?= 0x60003000 + KRN_SIZE?= 5 + RDK_ADDR?= 0x60900000 + RDK_SIZE?= 4 + DTB_ADDR?= 0x60500000 + DTB_SIZE?= 1 + UCONFIG ?= vexpress_common.h + BOOTDEV_LIST := tftp sdcard sd mmc flash pflash + BOOTDEV ?= flash + PFLASH_SIZE ?= 64 + PFLASH_BS ?= 512 + ENV_OFFSET ?= 63 + NET9PDEV ?= virtio-9p-device + NETDEV_LIST := lan9118 + NETDEV ?= lan9118 + SERIAL ?= ttyAMA0 + ROOTDEV_LIST := /dev/mmcblk0 /dev/ram0 /dev/nfs + ROOTDEV ?= /dev/ram0 + FSTYPE ?= ext2 + ORIIMG ?= arch/$(ARCH)/boot/zImage + UORIIMG ?= arch/$(ARCH)/boot/uImage + ORIDTB ?= arch/$(ARCH)/boot/dts/vexpress-v2p-ca9.dtb + BIMAGE ?= $(BSP_UBOOT)/$(UBOOT)/u-boot + KIMAGE ?= $(BSP_KERNEL)/$(LINUX)/zImage + DTB ?= $(BSP_KERNEL)/$(LINUX)/vexpress-v2p-ca9.dtb + UKIMAGE ?= $(BSP_KERNEL)/$(LINUX)/uImage + ROOTFS ?= $(BSP_ROOT)/$(BUILDROOT)/rootfs.cpio.gz + UROOTFS ?= $(BSP_ROOT)/$(BUILDROOT)/rootfs.cpio.uboot + HROOTFS ?= $(BSP_ROOT)/$(BUILDROOT)/rootfs.$(FSTYPE) + QTOOL[OS_trusty] ?= $(BSP_QEMU)/$(QEMU)/bin/qemu-system-$(XARCH) + CCORI ?= internal +[ i386/pc ]: + ARCH := x86 + XARCH := i386 + CPU ?= qemu32 + MEM ?= 128M + QEMU ?= v0.10.6 + ifeq ($(QEMU),v0.10.6) + QEMU_SDL := 0 + QEMU_CURSES := 0 + QEMU_VIRTFS := 0 + QEMU_VNC := + GCC[QEMU_v0.10.6] := 4.4 + endif + SMP ?= 4 + LINUX ?= v5.13 + BUILDROOT?= 2019.02.2 + NETDEV_LIST ?= ne2k_pci e1000 rtl8139 pcnet + NETDEV ?= e1000 + ROOTDEV_LIST ?= /dev/hda /dev/ram0 /dev/nfs + ROOTDEV_LIST[LINUX_v2.6.34.9] ?= /dev/sda /dev/ram0 /dev/nfs + ROOTDEV ?= /dev/ram0 + SERIAL ?= ttyS0 + ORIIMG ?= arch/$(ARCH)/boot/bzImage + KIMAGE ?= $(BSP_KERNEL)/$(LINUX)/bzImage + ROOTFS ?= $(BSP_ROOT)/$(BUILDROOT)/rootfs.cpio.gz + HROOTFS ?= $(BSP_ROOT)/$(BUILDROOT)/rootfs.ext2 + XKCLI ?= noapic +[ mips64el/ls2k ]: + ARCH := mips + XARCH := mips64el + CPU ?= loongson2k + BUILDROOT?= 2021.08.2 + MEM ?= 1024M + SERIAL ?= ttyS0 + NETDEV_LIST ?= synopgmac rtl8139 e1000 + NETDEV ?= synopgmac + LINUX ?= loongnix-release-1903 + LINUX[LINUX_loongnix-release-1903] := 04b98684 + KERNEL_GIT := http://cgit.loongnix.org/cgit/linux-3.10 + KERNEL_SRC := loongnix-linux-3.10 + ORIIMG ?= vmlinuz + KIMAGE ?= $(BSP_KERNEL)/$(LINUX)/vmlinuz + DTS ?= $(KERNEL_SRC)/arch/$(ARCH)/loongson2/dts/2k1000_board.dts + DTB ?= $(BSP_KERNEL)/$(LINUX)/2k1000_board.dtb + ROOTDEV_LIST := /dev/sda /dev/ram0 /dev/nfs + ROOTDEV ?= /dev/ram0 + FSTYPE ?= ext2 + ROOTFS ?= $(BSP_ROOT)/$(BUILDROOT)/rootfs.cpio.gz + HROOTFS ?= $(BSP_ROOT)/$(BUILDROOT)/rootfs.$(FSTYPE) + QEMU_GIT:= https://gitee.com/loongsonlab/qemu + QEMU_SRC:= loongsonlab-qemu + QEMU ?= loongson-v1.0 + QTOOL ?= $(BSP_QEMU)/$(QEMU)/bin/qemu-system-$(XARCH) + XOPTS ?= -device usb-mouse -device usb-kbd -show-cursor + XKCLI += maxcpus=1 + CCORI ?= internal +[ mips64el/ls3a7a ]: + ARCH := mips + XARCH := mips64el + CPU ?= godson3 + BUILDROOT?= 2020.08 + MEM ?= 1024M + SERIAL ?= ttyS0 + NETDEV_LIST ?= synopgmac rtl8139 + NETDEV ?= synopgmac + LINUX ?= loongnix-release-1903 + LINUX[LINUX_loongnix-release-1903] := 04b98684 + HOST_GCC := 9 + KERNEL_GIT[LINUX_loongnix-release-1903] := http://cgit.loongnix.org/cgit/linux-3.10 + KERNEL_SRC[LINUX_loongnix-release-1903] := loongnix-linux-3.10 + ORIIMG ?= vmlinuz + KIMAGE ?= $(BSP_KERNEL)/$(LINUX)/vmlinuz + DTS[LINUX_loongnix-release-1903] ?= $(KERNEL_SRC)/arch/$(ARCH)/loongson/loongson-3/dts/loongson3_ls7a.dts + DTB[LINUX_loongnix-release-1903] ?= $(BSP_KERNEL)/$(LINUX)/loongson3_ls7a.dtb + ROOTDEV_LIST ?= /dev/sda /dev/ram0 /dev/nfs + ROOTDEV ?= /dev/ram0 + FSTYPE ?= ext2 + ROOTFS ?= $(BSP_ROOT)/$(BUILDROOT)/rootfs.cpio.gz + HROOTFS ?= $(BSP_ROOT)/$(BUILDROOT)/rootfs.$(FSTYPE) + QEMU_GIT:= https://gitee.com/loongsonlab/qemu + QEMU_SRC:= loongsonlab-qemu + QEMU[OS_trusty] ?= loongson-v1.0 + QEMU[OS_focal] ?= loongson-v1.1-rc1 + XOPTS ?= -device usb-mouse -device usb-kbd -show-cursor + XENVS ?= INITRD_OFFSET=0x04000000 + XKCLI += maxcpus=1 nomsi nmsix + CCORI ?= internal +[ mipsel/ls1b ]: + ARCH := mips + XARCH := mipsel + CPU ?= + MEM ?= 128M + BUILDROOT?= 2021.08.2 + LINUX ?= v5.2 + NETDEV_LIST ?= synopgmac + NETDEV ?= synopgmac + SERIAL ?= ttyS0 + ORIIMG ?= vmlinuz + KIMAGE ?= $(BSP_KERNEL)/$(LINUX)/vmlinuz + ROOTDEV_LIST ?= /dev/ram0 /dev/nfs + ROOTDEV ?= /dev/ram0 + FSTYPE ?= ext2 + ROOTFS ?= $(BSP_ROOT)/$(BUILDROOT)/rootfs.cpio.gz + HROOTFS ?= $(BSP_ROOT)/$(BUILDROOT)/rootfs.$(FSTYPE) + QEMU_GIT:= https://gitee.com/loongsonlab/qemu + QEMU_SRC:= loongsonlab-qemu + QEMU ?= loongson-v1.0 + QTOOL ?= $(BSP_QEMU)/$(QEMU)/bin/qemu-system-$(XARCH) + CCORI ?= internal +[ mipsel/ls232 ]: + ARCH := mips + XARCH := mipsel + CPU ?= LS232_1 + BUILDROOT?= 2021.08.2 + MEM ?= 256M + SERIAL ?= ttyS0 + LINUX ?= v2.6.32-r190726 + KERNEL_GIT := https://gitee.com/loongsonlab/linux-2.6.32.git + KERNEL_SRC := loongsonlab-linux-2.6.32 + ORIIMG ?= vmlinux + KIMAGE ?= $(BSP_KERNEL)/$(LINUX)/vmlinux + NETDEV_LIST ?= synopgmac + NETDEV ?= synopgmac + ROOTDEV_LIST := /dev/ram0 /dev/nfs + ROOTDEV ?= /dev/ram0 + FSTYPE ?= ext2 + ROOTFS ?= $(BSP_ROOT)/$(BUILDROOT)/rootfs.cpio.gz + HROOTFS ?= $(BSP_ROOT)/$(BUILDROOT)/rootfs.$(FSTYPE) + QEMU_GIT:= https://gitee.com/loongsonlab/qemu + QEMU_SRC:= loongsonlab-qemu + QEMU ?= loongson-v1.0 + QTOOL ?= $(BSP_QEMU)/$(QEMU)/bin/qemu-system-$(XARCH) + XOPTS ?= + CCORI ?= loongnix +[ mipsel/malta ]: + ARCH := mips + XARCH := mipsel + CPU ?= + LINUX ?= v5.13 + GCC[LINUX_v2.6.36] := 4.3 + BUILDROOT?= 2021.08.2 + MEM ?= 128M + NETDEV_LIST := pcnet + NETDEV ?= pcnet + SERIAL ?= ttyS0 + FSTYPE ?= ext2 + ORIIMG ?= vmlinuz + ROOTDEV_LIST := /dev/hda /dev/ram0 /dev/nfs + ROOTDEV ?= /dev/ram0 + ROOTDEV_LIST[LINUX_v2.6.36] := /dev/hda /dev/nfs + ROOTDEV[LINUX_v2.6.36] := /dev/hda + KIMAGE ?= $(BSP_KERNEL)/$(LINUX)/vmlinuz + ROOTFS ?= $(BSP_ROOT)/$(BUILDROOT)/rootfs.cpio.gz + HROOTFS ?= $(BSP_ROOT)/$(BUILDROOT)/rootfs.$(FSTYPE) + CCORI ?= internal +[ ppc/g3beige ]: + ARCH := powerpc + XARCH := ppc + CPU ?= + LINUX ?= v5.13 + GCC[LINUX_v2.6.36] := 4.3 + BUILDROOT?= 2021.08.2 + MEM ?= 128M + NETDEV_LIST := pcnet ne2k_pci rtl8139 + NETDEV ?= pcnet + SERIAL ?= ttyS0 + ORIIMG ?= vmlinux + ROOTDEV_LIST := /dev/hda /dev/ram0 /dev/nfs + ROOTDEV ?= /dev/ram0 + BIOS ?= $(BSP_QEMU)/v4.0.0/share/qemu/openbios-ppc + KIMAGE ?= $(BSP_KERNEL)/$(LINUX)/vmlinux + ROOTFS ?= $(BSP_ROOT)/$(BUILDROOT)/rootfs.cpio.gz + HROOTFS ?= $(BSP_ROOT)/$(BUILDROOT)/rootfs.ext2 + CCORI ?= internal +[ riscv32/virt ]: + ARCH := riscv + XARCH := riscv32 + CPU ?= + SMP ?= 4 + MEM ?= 128M + QEMU ?= v6.0.0 + HOST_GCC[QEMU_v4.0.0] := 4.8 + QEMU_US ?= 0 + LINUX ?= v5.17 + BUILDROOT[LINUX_v5.0.13] ?= 2019.05 + BUILDROOT ?= 2021.08 + NETDEV_LIST := virtio + NETDEV ?= virtio + SERIAL ?= ttyS0 + NET9PDEV ?= virtio-9p-device + ROOTDEV_LIST := /dev/vda /dev/ram0 /dev/nfs + ROOTDEV ?= /dev/vda + FSTYPE ?= ext2 + BIOS[LINUX_v5.0.13] ?= $(BSP_KERNEL)/$(LINUX)/fw_jump.elf + BIOS ?= $(BSP_BIOS)/opensbi/generic/fw_jump.elf + KRN_ADDR ?= 0x80400000 + ORIIMG ?= arch/$(ARCH)/boot/Image + KIMAGE ?= $(BSP_KERNEL)/$(LINUX)/Image + ROOTFS ?= $(BSP_ROOT)/$(BUILDROOT)/rootfs.cpio.gz + HROOTFS ?= $(BSP_ROOT)/$(BUILDROOT)/rootfs.$(FSTYPE) + QTOOL[OS_trusty] ?= $(BSP_QEMU)/$(QEMU)/bin/qemu-system-$(XARCH) + QTOOL[OS_focal] ?= $(BSP_QEMU)/$(QEMU)/bin/qemu-system-$(XARCH) + CCORI[OS_trusty] ?= gnu-mcu-eclipse + CCORI[OS_focal] ?= internal + TOOLCHAIN ?= $(PREBUILT_TOOLCHAINS)/riscv64 +[ riscv64/virt ]: + ARCH := riscv + XARCH := riscv64 + CPU ?= + SMP ?= 4 + MEM ?= 128M + QEMU ?= v6.0.0 + QEMU_US ?= 1 + LINUX ?= v5.17 + BUILDROOT?= 2019.05 + NETDEV_LIST := virtio + NETDEV ?= virtio + SERIAL ?= ttyS0 + NET9PDEV ?= virtio-9p-device + ROOTDEV_LIST := /dev/vda /dev/ram0 /dev/nfs + ROOTDEV ?= /dev/vda + FSTYPE ?= ext2 + BIOS ?= $(BSP_BIOS)/opensbi/generic/fw_jump.elf + KRN_ADDR ?= 0x80200000 + ORIIMG ?= arch/$(ARCH)/boot/Image + KIMAGE ?= $(BSP_KERNEL)/$(LINUX)/Image + ROOTFS ?= $(BSP_ROOT)/$(BUILDROOT)/rootfs.cpio.gz + HROOTFS ?= $(BSP_ROOT)/$(BUILDROOT)/rootfs.$(FSTYPE) + QTOOL[OS_trusty] ?= $(BSP_QEMU)/$(QEMU)/bin/qemu-system-$(XARCH) + QTOOL[OS_focal] ?= $(BSP_QEMU)/$(QEMU)/bin/qemu-system-$(XARCH) + CCORI[OS_trusty] ?= gnu-mcu-eclipse + CCORI[OS_focal] ?= internal +[ x86_64/pc ]: + ARCH := x86 + XARCH := x86_64 + CPU ?= qemu64 + MEM ?= 128M + SMP ?= 4 + LINUX ?= v5.13 + KERNEL_GIT[KERNEL_FORK_openeuler] := https://gitee.com/openeuler/kernel.git + LINUX[KERNEL_FORK_openeuler] ?= 5.10.0-5.10.0 + KERNEL_GIT[KERNEL_FORK_wsl2] := https://gitee.com/mirrors/WSL2-Linux-Kernel.git + BUILDROOT?= 2019.02.2 + NETDEV_LIST := ne2k_pci e1000 rtl8139 pcnet + NETDEV ?= ne2k_pci + SERIAL ?= ttyS0 + ORIIMG ?= arch/$(ARCH)/boot/bzImage + ROOTDEV_LIST := /dev/hda /dev/ram0 /dev/nfs + ROOTDEV_LIST[LINUX_v3.2] := /dev/sda /dev/ram0 /dev/nfs + ROOTDEV ?= /dev/ram0 + KIMAGE ?= $(BSP_KERNEL)/$(LINUX)/bzImage + ROOTFS ?= $(BSP_ROOT)/$(BUILDROOT)/rootfs.cpio.gz + ROOTFS[LINUX_v2.6.12.6] ?= $(BSP_ROOT)/$(BUILDROOT)/rootfs32.cpio.gz + XKCLI := lpj=246205838 raid=noautodetect +[ arm/ebf-imx6ull ]: + ARCH := arm + XARCH := $(ARCH) + CPU ?= cortex-a9 + MEM ?= 512M + QEMU ?= v4.1.1 + QEMU_US ?= 0 + LINUX ?= v4.19.35 + BUILDROOT?= 2020.02 + NETDEV_LIST ?= smc91c111 lan9118 + NETDEV ?= smc91c111 + SERIAL ?= ttymxc0 + ROOTDEV_LIST := /dev/mmcblk0 /dev/ram0 /dev/nfs + ROOTDEV ?= /dev/mmcblk0 + FSTYPE ?= ext4 + ORIIMG ?= arch/$(ARCH)/boot/zImage + DIMAGE ?= imx6ull-nand-npi.dtb + ORIDTB ?= arch/$(ARCH)/boot/dts/$(DIMAGE) + KIMAGE ?= $(BSP_KERNEL)/$(LINUX)/zImage + KRELEASE?= $(BSP_KERNEL)/$(LINUX)/kernel.release + DTB ?= $(BSP_KERNEL)/$(LINUX)/$(DIMAGE) + ROOTFS ?= $(BSP_ROOT)/$(BUILDROOT)/rootfs.cpio.gz + UROOTFS ?= $(BSP_ROOT)/$(BUILDROOT)/rootfs.cpio.uboot + HROOTFS ?= $(BSP_ROOT)/$(BUILDROOT)/rootfs.$(FSTYPE) + QTOOL[OS_trusty] ?= $(BSP_QEMU)/$(QEMU)/bin/qemu-system-$(XARCH) + CCORI ?= internal +``` +**make boot** +``` +ubuntu@linux-lab:/labs/linux-lab$ make boot +LOG: Generating rootfs image for uboot ... +Image Name: +Created: Tue Nov 29 23:27:23 2022 +Image Type: ARM Linux RAMDisk Image (uncompressed) +Data Size: 767409 Bytes = 749.42 KiB = 0.73 MiB +Load Address: 00000000 +Entry Point: 00000000 +sudo qemu-system-arm -M vexpress-a9 -cpu cortex-a9 -m 128M -net nic,model=lan9118 -net tap -smp 1 -kernel /labs/linux-lab/boards/arm/vexpress-a9/bsp/uboot/v2020.04/u-boot -no-reboot -drive if=pflash,file=tftpboot/pflash.img,format=raw -nographic +ALSA lib pulse.c:242:(pulse_connect) PulseAudio: Unable to connect: Access denied + +alsa: Could not initialize DAC +alsa: Failed to open `default': +alsa: Reason: Connection refused +ALSA lib pulse.c:242:(pulse_connect) PulseAudio: Unable to connect: Access denied + +alsa: Could not initialize DAC +alsa: Failed to open `default': +alsa: Reason: Connection refused +audio: Failed to create voice `lm4549.out' + + +U-Boot 2020.04-dirty (May 06 2020 - 16:17:30 +0800) + +DRAM: 128 MiB +WARNING: Caches not enabled +Flash: 128 MiB +MMC: MMC: 0 +*** Warning - bad CRC, using default environment + +In: serial +Out: serial +Err: serial +Net: smc911x-0 +Hit any key to stop autoboot: 0 +## Warning: defaulting to text format +## Booting kernel from Legacy Image at 60003000 ... + Image Name: Linux-5.17.0 + Image Type: ARM Linux Kernel Image (uncompressed) + Data Size: 5137000 Bytes = 4.9 MiB + Load Address: 60003000 + Entry Point: 60003000 + Verifying Checksum ... OK +## Loading init Ramdisk from Legacy Image at 60900000 ... + Image Name: + Image Type: ARM Linux RAMDisk Image (uncompressed) + Data Size: 767409 Bytes = 749.4 KiB + Load Address: 00000000 + Entry Point: 00000000 + Verifying Checksum ... OK +## Flattened Device Tree blob at 60500000 + Booting using the fdt blob at 0x60500000 + Loading Kernel Image + Loading Ramdisk to 67dba000, end 67e755b1 ... OK + Loading Device Tree to 67db3000, end 67db9700 ... OK + +Starting kernel ... + +ALSA lib pulse.c:242:(pulse_connect) PulseAudio: Unable to connect: Access denied + +alsa: Could not initialize DAC +alsa: Failed to open `default': +alsa: Reason: Connection refused +ALSA lib pulse.c:242:(pulse_connect) PulseAudio: Unable to connect: Access denied + +alsa: Could not initialize DAC +alsa: Failed to open `default': +alsa: Reason: Connection refused +audio: Failed to create voice `lm4549.out' +ALSA lib pulse.c:242:(pulse_connect) PulseAudio: Unable to connect: Access denied + +alsa: Could not initialize DAC +alsa: Failed to open `default': +alsa: Reason: Connection refused +ALSA lib pulse.c:242:(pulse_connect) PulseAudio: Unable to connect: Access denied + +alsa: Could not initialize DAC +alsa: Failed to open `default': +alsa: Reason: Connection refused +audio: Failed to create voice `lm4549.out' +ALSA lib pulse.c:242:(pulse_connect) PulseAudio: Unable to connect: Access denied + +alsa: Could not initialize DAC +alsa: Failed to open `default': +alsa: Reason: Connection refused +ALSA lib pulse.c:242:(pulse_connect) PulseAudio: Unable to connect: Access denied + +alsa: Could not initialize DAC +alsa: Failed to open `default': +alsa: Reason: Connection refused +audio: Failed to create voice `lm4549.out' +ALSA lib pulse.c:242:(pulse_connect) PulseAudio: Unable to connect: Access denied + +alsa: Could not initialize DAC +alsa: Failed to open `default': +alsa: Reason: Connection refused +ALSA lib pulse.c:242:(pulse_connect) PulseAudio: Unable to connect: Access denied + +alsa: Could not initialize DAC +alsa: Failed to open `default': +alsa: Reason: Connection refused +audio: Failed to create voice `lm4549.out' +ALSA lib pulse.c:242:(pulse_connect) PulseAudio: Unable to connect: Access denied + +alsa: Could not initialize DAC +alsa: Failed to open `default': +alsa: Reason: Connection refused +ALSA lib pulse.c:242:(pulse_connect) PulseAudio: Unable to connect: Access denied + +alsa: Could not initialize DAC +alsa: Failed to open `default': +alsa: Reason: Connection refused +audio: Failed to create voice `lm4549.out' +ALSA lib pulse.c:242:(pulse_connect) PulseAudio: Unable to connect: Access denied + +alsa: Could not initialize DAC +alsa: Failed to open `default': +alsa: Reason: Connection refused +ALSA lib pulse.c:242:(pulse_connect) PulseAudio: Unable to connect: Access denied + +alsa: Could not initialize DAC +alsa: Failed to open `default': +alsa: Reason: Connection refused +audio: Failed to create voice `lm4549.out' +ALSA lib pulse.c:242:(pulse_connect) PulseAudio: Unable to connect: Access denied + +alsa: Could not initialize DAC +alsa: Failed to open `default': +alsa: Reason: Connection refused +ALSA lib pulse.c:242:(pulse_connect) PulseAudio: Unable to connect: Access denied + +alsa: Could not initialize DAC +alsa: Failed to open `default': +alsa: Reason: Connection refused +audio: Failed to create voice `lm4549.out' +ALSA lib pulse.c:242:(pulse_connect) PulseAudio: Unable to connect: Access denied + +alsa: Could not initialize DAC +alsa: Failed to open `default': +alsa: Reason: Connection refused +ALSA lib pulse.c:242:(pulse_connect) PulseAudio: Unable to connect: Access denied + +alsa: Could not initialize DAC +alsa: Failed to open `default': +alsa: Reason: Connection refused +audio: Failed to create voice `lm4549.out' +ALSA lib pulse.c:242:(pulse_connect) PulseAudio: Unable to connect: Access denied + +alsa: Could not initialize DAC +alsa: Failed to open `default': +alsa: Reason: Connection refused +ALSA lib pulse.c:242:(pulse_connect) PulseAudio: Unable to connect: Access denied + +alsa: Could not initialize DAC +alsa: Failed to open `default': +alsa: Reason: Connection refused +audio: Failed to create voice `lm4549.out' +Booting Linux on physical CPU 0x0 +Linux version 5.17.0 (ubuntu@linux-lab) (arm-linux-gnueabi-gcc (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0, GNU ld (GNU Binutils for Ubuntu) 2.34) #1 SMP Tue Mar 22 20:40:19 CST 2022 +CPU: ARMv7 Processor [410fc090] revision 0 (ARMv7), cr=10c5387d +CPU: PIPT / VIPT nonaliasing data cache, VIPT nonaliasing instruction cache +OF: fdt: Machine model: V2P-CA9 +OF: fdt: Ignoring memory block 0x80000000 - 0x80000004 +Memory policy: Data cache writeback +Reserved memory: created DMA memory pool at 0x4c000000, size 8 MiB +OF: reserved mem: initialized node vram@4c000000, compatible id shared-dma-pool +Zone ranges: + Normal [mem 0x0000000060000000-0x0000000067ffffff] +Movable zone start for each node +Early memory node ranges + node 0: [mem 0x0000000060000000-0x0000000067ffffff] +Initmem setup node 0 [mem 0x0000000060000000-0x0000000067ffffff] +CPU: All CPU(s) started in SVC mode. +percpu: Embedded 15 pages/cpu s30028 r8192 d23220 u61440 +Built 1 zonelists, mobility grouping on. Total pages: 32512 +Kernel command line: route=172.20.67.86 iface=eth0 root=/dev/ram0 console=ttyAMA0 +Unknown kernel command line parameters "route=172.20.67.86 iface=eth0", will be passed to user space. +printk: log_buf_len individual max cpu contribution: 4096 bytes +printk: log_buf_len total cpu_extra contributions: 12288 bytes +printk: log_buf_len min size: 16384 bytes +printk: log_buf_len: 32768 bytes +printk: early log buf free: 14816(90%) +Dentry cache hash table entries: 16384 (order: 4, 65536 bytes, linear) +Inode-cache hash table entries: 8192 (order: 3, 32768 bytes, linear) +mem auto-init: stack:off, heap alloc:off, heap free:off +Memory: 116616K/131072K available (8192K kernel code, 695K rwdata, 1748K rodata, 1024K init, 151K bss, 14456K reserved, 0K cma-reserved) +SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1 +ftrace: allocating 27708 entries in 82 pages +ftrace: allocated 82 pages with 3 groups +trace event string verifier disabled +rcu: Hierarchical RCU implementation. +rcu: RCU restricting CPUs from NR_CPUS=8 to nr_cpu_ids=4. + Rude variant of Tasks RCU enabled. +rcu: RCU calculated value of scheduler-enlistment delay is 10 jiffies. +rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=4 +NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16 +GIC CPU mask not found - kernel will fail to boot. +GIC CPU mask not found - kernel will fail to boot. +L2C: platform modifies aux control register: 0x02020000 -> 0x02420000 +L2C: DT/platform modifies aux control register: 0x02020000 -> 0x02420000 +L2C-310 enabling early BRESP for Cortex-A9 +L2C-310 full line of zeros enabled for Cortex-A9 +L2C-310 dynamic clock gating disabled, standby mode disabled +L2C-310 cache controller enabled, 8 ways, 128 kB +L2C-310: CACHE_ID 0x410000c8, AUX_CTRL 0x46420001 +random: get_random_bytes called from start_kernel+0x52c/0x6dc with crng_init=0 +sched_clock: 32 bits at 24MHz, resolution 41ns, wraps every 89478484971ns +clocksource: arm,sp804: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 1911260446275 ns +Failed to initialize '/bus@40000000/motherboard-bus@40000000/iofpga@7,00000000/timer@12000': -22 +smp_twd: clock not found -2 +Console: colour dummy device 80x30 +Calibrating local timer... 91.67MHz. +Calibrating delay loop... 1265.66 BogoMIPS (lpj=6328320) +pid_max: default: 32768 minimum: 301 +Mount-cache hash table entries: 1024 (order: 0, 4096 bytes, linear) +Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes, linear) +CPU: Testing write buffer coherency: ok +CPU0: Spectre v2: using BPIALL workaround +CPU0: thread -1, cpu 0, socket 0, mpidr 80000000 +cblist_init_generic: Setting adjustable number of callback queues. +cblist_init_generic: Setting shift to 2 and lim to 1. +Setting up static identity map for 0x60100000 - 0x60100060 +rcu: Hierarchical SRCU implementation. +smp: Bringing up secondary CPUs ... +smp: Brought up 1 node, 1 CPU +SMP: Total of 1 processors activated (1265.66 BogoMIPS). +CPU: All CPU(s) started in SVC mode. +devtmpfs: initialized +VFP support v0.3: implementor 41 architecture 3 part 30 variant 9 rev 0 +clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns +futex hash table entries: 1024 (order: 4, 65536 bytes, linear) +NET: Registered PF_NETLINK/PF_ROUTE protocol family +DMA: preallocated 256 KiB pool for atomic coherent allocations +cpuidle: using governor ladder +hw-breakpoint: debug architecture 0x4 unsupported. +Serial: AMBA PL011 UART driver +vgaarb: loaded +SCSI subsystem initialized +usbcore: registered new interface driver usbfs +usbcore: registered new interface driver hub +usbcore: registered new device driver usb +pps_core: LinuxPPS API ver. 1 registered +pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti +PTP clock support registered +Advanced Linux Sound Architecture Driver Initialized. +clocksource: Switched to clocksource arm,sp804 +NET: Registered PF_INET protocol family +IP idents hash table entries: 2048 (order: 2, 16384 bytes, linear) +tcp_listen_portaddr_hash hash table entries: 512 (order: 0, 6144 bytes, linear) +TCP established hash table entries: 1024 (order: 0, 4096 bytes, linear) +TCP bind hash table entries: 1024 (order: 1, 8192 bytes, linear) +TCP: Hash tables configured (established 1024 bind 1024) +UDP hash table entries: 256 (order: 1, 8192 bytes, linear) +UDP-Lite hash table entries: 256 (order: 1, 8192 bytes, linear) +NET: Registered PF_UNIX/PF_LOCAL protocol family +RPC: Registered named UNIX socket transport module. +RPC: Registered udp transport module. +RPC: Registered tcp transport module. +RPC: Registered tcp NFSv4.1 backchannel transport module. +PCI: CLS 0 bytes, default 64 +Unpacking initramfs... +hw perfevents: enabled with armv7_cortex_a9 PMU driver, 5 counters available +workingset: timestamp_bits=30 max_order=15 bucket_order=0 +squashfs: version 4.0 (2009/01/31) Phillip Lougher +jffs2: version 2.2. (NAND) © 2001-2006 Red Hat, Inc. +9p: Installing v9fs 9p2000 file system support +io scheduler mq-deadline registered +io scheduler kyber registered +Freeing initrd memory: 752K +physmap-flash 40000000.flash: physmap platform flash device: [mem 0x40000000-0x43ffffff] +40000000.flash: Found 2 x16 devices at 0x0 in 32-bit bank. Manufacturer ID 0x000000 Chip ID 0x000000 +Intel/Sharp Extended Query Table at 0x0031 +Using buffer write method +physmap-flash 40000000.flash: physmap platform flash device: [mem 0x44000000-0x47ffffff] +40000000.flash: Found 2 x16 devices at 0x0 in 32-bit bank. Manufacturer ID 0x000000 Chip ID 0x000000 +Intel/Sharp Extended Query Table at 0x0031 +Using buffer write method +Concatenating MTD devices: +(0): "40000000.flash" +(1): "40000000.flash" +into device "40000000.flash" +physmap-flash 48000000.psram: physmap platform flash device: [mem 0x48000000-0x49ffffff] +smsc911x 4e000000.ethernet eth0: MAC Address: 52:54:00:12:34:56 +isp1760 4f000000.usb: isp1760 bus width: 32, oc: digital +isp1760 4f000000.usb: NXP ISP1760 USB Host Controller +isp1760 4f000000.usb: new USB bus registered, assigned bus number 1 +isp1760 4f000000.usb: Scratch test failed. 0x00000000 +isp1760 4f000000.usb: can't setup: -19 +isp1760 4f000000.usb: USB bus 1 deregistered +usbcore: registered new interface driver usb-storage +ledtrig-cpu: registered to indicate activity on CPUs +usbcore: registered new interface driver usbhid +usbhid: USB HID core driver +NET: Registered PF_PACKET protocol family +9pnet: Installing 9P2000 support +Registering SWP/SWPB emulation handler +aaci-pl041 10004000.aaci: ARM AC'97 Interface PL041 rev0 at 0x10004000, irq 34 +aaci-pl041 10004000.aaci: FIFO 512 entries +mmci-pl18x 10005000.mmci: Got CD GPIO +mmci-pl18x 10005000.mmci: Got WP GPIO +mmci-pl18x 10005000.mmci: mmc0: PL181 manf 41 rev0 at 0x10005000 irq 35,36 (pio) +10009000.uart: ttyAMA0 at MMIO 0x10009000 (irq = 39, base_baud = 0) is a PL011 rev1 +printk: console [ttyAMA0] enabled +1000a000.uart: ttyAMA1 at MMIO 0x1000a000 (irq = 40, base_baud = 0) is a PL011 rev1 +1000b000.uart: ttyAMA2 at MMIO 0x1000b000 (irq = 41, base_baud = 0) is a PL011 rev1 +1000c000.uart: ttyAMA3 at MMIO 0x1000c000 (irq = 42, base_baud = 0) is a PL011 rev1 +rtc-pl031 10017000.rtc: registered as rtc0 +rtc-pl031 10017000.rtc: setting system clock to 2022-11-29T15:27:28 UTC (1669735648) +amba 10020000.clcd: Fixing up cyclic dependency with 0-0039 +clcd-pl11x 10020000.clcd: PL111 designer 41 rev2 at 0x10020000 +clcd-pl11x: probe of 10020000.clcd failed with error -2 +ALSA device list: + #0: ARM AC'97 Interface PL041 rev0 at 0x10004000, irq 34 +Freeing unused kernel image (initmem) memory: 1024K +input: AT Raw Set 2 keyboard as /devices/platform/bus@40000000/bus@40000000:motherboard-bus@40000000/bus@40000000:motherboard-bus@40000000:iofpga@7,00000000/10006000.kmi/serio0/input/input0 +Run /init as init process +Starting syslogd: input: ImExPS/2 Generic Explorer Mouse as /devices/platform/bus@40000000/bus@40000000:motherboard-bus@40000000/bus@40000000:motherboard-bus@40000000:iofpga@7,00000000/10007000.kmi/serio1/input/input2 +OK +Starting klogd: OK +Running sysctl: OK +Saving random seed: random: dd: uninitialized urandom read (512 bytes read) +OK +Starting network: Generic PHY 4e000000.ethernet-ffffffff:01: attached PHY driver (mii_bus:phy_addr=4e000000.ethernet-ffffffff:01, irq=POLL) +smsc911x 4e000000.ethernet eth0: SMSC911x/921x identified at 0x8c910000, IRQ: 26 +eth: eth0, ip: 172.20.67.68, gw: 172.20.67.86 +OK + +Welcome to Linux Lab + +``` +## 注意事项 +riscv-lab第一次下载是要下载镜像,所以等待的时间久一些 +## 参考资料 + +1. https://gitee.com/tinylab/linux-lab +2. https://gitee.com/tinylab/riscv-lab -- Gitee