【BMC】OpenBMC使用基础(WSL2版本)

代码准备

OpenBMC是一个开源的项目,用于开发BMC固件。官网是https://www.openbmc.org/,不过里面似乎没有什么内容,所以还需要依赖其它的网站,https://github.com/openbmc,在这里可以下载到需要的代码和文档。其主体部分的git是https://github.com/openbmc/openbmc.git,下载到的内容如下:

jw@HOME:~/openbmc$ ls
LICENSE    meta-ampere     meta-evb       meta-ingrasys       meta-openpower    meta-security    meta-yadro
OWNERS     meta-arm        meta-facebook  meta-inspur         meta-phosphor     meta-skeleton    oe-init-build-env
README.md  meta-aspeed     meta-fii       meta-intel-openbmc  meta-poky         meta-supermicro  openbmc-env
bitbake    meta-asrock     meta-google    meta-inventec       meta-qualcomm     meta-tyan        poky
meta       meta-bytedance  meta-hpe       meta-nuvoton        meta-quanta       meta-ufispace    scripts
meta-amd   meta-delta      meta-ibm       meta-openembedded   meta-raspberrypi  meta-wistron     setup

但实际上里面并没有什么有效的代码。OpenBMC是基于Yocto这个开源项目的,所以这里看到其实是一堆称为元数据的内容以及一个bitbake工具。关于bitbake和元数据,将在Yocto相关的文章中介绍,本文主要介绍OpenBMC最基本的使用。

OpenBMC一直在更新,这里使用稳定版本,对应Tag 2.14.0:

jw@HOME:~/openbmc$ git checkout 2.14.0

构建

代码在前面已经下载到了,之后就是构建工作,这里参考了下载目录下的RAEAME.md文件。首先需要的准备是一些额外的工具,这里使用的环境是Ubuntu20.04(使用WSL2子系统,注意不要使用默认把子系统安装到C盘的方式,因为OpenBMC需要使用到50G以上的空间,如果放到C盘可能导致其空间不足),需要安装的内容如下:

jw@HOME:~/openbmc$ sudo apt-get install -y git build-essential libsdl1.2-dev texinfo gawk chrpath diffstat zstd

部分内容实际上已经有了,不过关系不大,执行命令即可。之后查看所有支持构建的平台:

jw@HOME:~/openbmc$ . setup
Target machine must be specified. Use one of:ahe50dc                 kudo                    s6q
bletchley               lannister               s7106
daytonax                mori                    s8036
dl360poc                mtjade                  swift
e3c246d4i               mtmitchell              tatlin-archive-x86
ethanolx                ncplite                 tiogapass
evb-ast2500             nicole                  transformers
evb-ast2600             olympus-nuvoton         vegman-n110
evb-npcm750             on5263m5                vegman-rx20
evb-npcm845             p10bmc                  vegman-sx20
f0b                     palmetto                witherspoon
fp5280g2                qcom-dc-scm-v1          witherspoon-tacoma
g220a                   quanta-q71l             x11spi
gbs                     rl300-g11               yosemitev2
genesis3                romed8hm3               zaius
greatlakes              romulus
gsj                     s2600wf

这里选择evb-ast2500:

. setup evb-ast2500 build

注意这里最前面是一个“.”。这里的evb-ast2500是最常用的BMC芯片平台,build是后续构建使用的目录。

执行结果如下:

jw@HOME:~/openbmc$ . setup evb-ast2500 build
Machine evb-ast2500 found in meta-evb/meta-evb-aspeed/meta-evb-ast2500
You had no conf/local.conf file. This configuration file has therefore been
created for you from /home/jw/openbmc/meta-evb/meta-evb-aspeed/meta-evb-ast2500/conf/templates/default/local.conf.sample
You may wish to edit it to, for example, select a different MACHINE (target
hardware).You had no conf/bblayers.conf file. This configuration file has therefore been
created for you from /home/jw/openbmc/meta-evb/meta-evb-aspeed/meta-evb-ast2500/conf/templates/default/bblayers.conf.sample
To add additional metadata layers into your configuration please add entries
to conf/bblayers.conf.The Yocto Project has extensive documentation about OE including a reference
manual which can be found at:https://docs.yoctoproject.orgFor more information about OpenEmbedded see the website:https://www.openembedded.org/Common targets are:obmc-phosphor-image: Includes OpenBMC Phosphor userspace and Web UIcore-image-minimal: A small image just capable of allowing a device to bootcore-image-full-cmdline: A small image with more Linux functionalityinstalled, including a ssh server.
jw@HOME:~/openbmc/build$

操作执行之后进入到build目录,如果后续需要换平台,需要先退回上一层目录然后执行命令:

. setup xxx build

注意不要忘了build。如果没有退回上一层,会在build目录下创建xxx目录,这样会导致原本下载好的代码无法使用。

之后就是构建,命令如下:

bitbake obmc-phosphor-image

开始执行构建,这将是一个漫长的过程,当然如果网路和机器性能足够的话,也不会等太长:

jw@HOME:~/openbmc/build$ bitbake obmc-phosphor-image
WARNING: You are running bitbake under WSLv2, this works properly but you should optimize your VHDX file eventually to avoid running out of storage space
Loading cache: 100% |                                                                                   | ETA:  --:--:--
Loaded 0 entries from dependency cache.
Parsing recipes: 100% |##################################################################################| Time: 0:00:10
Parsing of 2707 .bb files complete (0 cached, 2707 parsed). 4382 targets, 566 skipped, 0 masked, 0 errors.
WARNING: No bb files in default matched BBFILE_PATTERN_evb-ast2500 ''
NOTE: Resolving any missing task queue dependenciesBuild Configuration:
BB_VERSION           = "2.4.0"
BUILD_SYS            = "x86_64-linux"
NATIVELSBSTRING      = "ubuntu-20.04"
TARGET_SYS           = "arm-openbmc-linux-gnueabi"
MACHINE              = "evb-ast2500"
DISTRO               = "openbmc-phosphor"
DISTRO_VERSION       = "nodistro.0"
TUNE_FEATURES        = "arm thumb arm1176jzs"
TARGET_FPU           = "soft"
meta
meta-poky
meta-oe
meta-networking
meta-python
meta-phosphor
meta-aspeed
meta-evb
meta-evb-aspeed
meta-evb-ast2500     = "HEAD:67c9d4e715c705cd05fd04f7c8cd4fad300a4666"Initialising tasks: 100% |###############################################################################| Time: 0:00:01
Sstate summary: Wanted 1629 Local 0 Mirrors 0 Missed 1629 Current 0 (0% match, 0% complete)
NOTE: Executing Tasks
Setscene tasks: 1629 of 1629
Currently 13 running tasks (538 of 4089)  13% |#########                                                               |
0: boost-1.81.0-r0 do_unpack - 7s (pid 4124441)
1: zstd-native-1.5.4-r0 do_compile - 6s (pid 4131014)
2: m4-native-1.4.19-r0 do_configure - 5s (pid 4132100)
# 后面略

构建过程中可能会报错,包括do_fetch报错、do_configure报错等,可以尝试多构建几次,最后都可以成功:

jw@HOME:~/openbmc/build$ bitbake obmc-phosphor-image
Loading cache: 100% |####################################################################################| Time: 0:00:00
Loaded 4381 entries from dependency cache.
Parsing recipes: 100% |##################################################################################| Time: 0:00:00
Parsing of 2707 .bb files complete (2706 cached, 1 parsed). 4382 targets, 566 skipped, 0 masked, 0 errors.
WARNING: No bb files in default matched BBFILE_PATTERN_evb-ast2500 ''
NOTE: Resolving any missing task queue dependenciesBuild Configuration:
BB_VERSION           = "2.4.0"
BUILD_SYS            = "x86_64-linux"
NATIVELSBSTRING      = "ubuntu-20.04"
TARGET_SYS           = "arm-openbmc-linux-gnueabi"
MACHINE              = "evb-ast2500"
DISTRO               = "openbmc-phosphor"
DISTRO_VERSION       = "nodistro.0"
TUNE_FEATURES        = "arm thumb arm1176jzs"
TARGET_FPU           = "soft"
meta
meta-poky
meta-oe
meta-networking
meta-python
meta-phosphor
meta-aspeed
meta-evb
meta-evb-aspeed
meta-evb-ast2500     = "HEAD:67c9d4e715c705cd05fd04f7c8cd4fad300a4666"Initialising tasks: 100% |###############################################################################| Time: 0:00:01
Sstate summary: Wanted 142 Local 0 Mirrors 0 Missed 142 Current 1487 (0% match, 91% complete)
NOTE: Executing Tasks
NOTE: Tasks Summary: Attempted 4089 tasks of which 3860 didn't need to be rerun and all succeeded.Summary: There was 1 WARNING message.

生成的二进制位于如下的目录:

jw@HOME:~/openbmc/build/tmp/deploy/images/evb-ast2500$ ls
aspeed-ast2500-evb--6.1.15+git0+580639a973-r0-evb-ast2500-20230730112951.dtb
aspeed-ast2500-evb-evb-ast2500.dtb
aspeed-ast2500-evb.dtb
evb-ast2500-20230730112951.all.tar
evb-ast2500-20230730112951.tar
fitImage
fitImage--6.1.15+git0+580639a973-r0-evb-ast2500-20230730112951.bin
fitImage-evb-ast2500.bin
fitImage-its--6.1.15+git0+580639a973-r0-evb-ast2500-20230730112951.its
fitImage-its-evb-ast2500
fitImage-its-obmc-phosphor-initramfs-evb-ast2500--6.1.15+git0+580639a973-r0-evb-ast2500-20230730112951.its
fitImage-its-obmc-phosphor-initramfs-evb-ast2500-evb-ast2500
fitImage-linux.bin--6.1.15+git0+580639a973-r0-evb-ast2500-20230730112951.bin
fitImage-linux.bin-evb-ast2500
fitImage-obmc-phosphor-initramfs-evb-ast2500--6.1.15+git0+580639a973-r0-evb-ast2500-20230730112951.bin
fitImage-obmc-phosphor-initramfs-evb-ast2500-evb-ast2500
flash-evb-ast2500
image-bmc
image-kernel
image-rofs
image-rwfs
image-u-boot
obmc-phosphor-image-evb-ast2500-20230730112951.qemuboot.conf
obmc-phosphor-image-evb-ast2500-20230730112951.rootfs.manifest
obmc-phosphor-image-evb-ast2500-20230730112951.rootfs.squashfs-xz
obmc-phosphor-image-evb-ast2500-20230730112951.static.mtd
obmc-phosphor-image-evb-ast2500-20230730112951.static.mtd.all.tar
obmc-phosphor-image-evb-ast2500-20230730112951.static.mtd.tar
obmc-phosphor-image-evb-ast2500-20230730112951.testdata.json
obmc-phosphor-image-evb-ast2500.jffs2
obmc-phosphor-image-evb-ast2500.manifest
obmc-phosphor-image-evb-ast2500.qemuboot.conf
obmc-phosphor-image-evb-ast2500.squashfs-xz
obmc-phosphor-image-evb-ast2500.static.mtd
obmc-phosphor-image-evb-ast2500.static.mtd.all.tar
obmc-phosphor-image-evb-ast2500.static.mtd.tar
obmc-phosphor-image-evb-ast2500.testdata.json
obmc-phosphor-initramfs-evb-ast2500-20230730112951.qemuboot.conf
obmc-phosphor-initramfs-evb-ast2500-20230730112951.rootfs.cpio.xz
obmc-phosphor-initramfs-evb-ast2500-20230730112951.rootfs.manifest
obmc-phosphor-initramfs-evb-ast2500-20230730112951.testdata.json
obmc-phosphor-initramfs-evb-ast2500.cpio.xz
obmc-phosphor-initramfs-evb-ast2500.manifest
obmc-phosphor-initramfs-evb-ast2500.qemuboot.conf
obmc-phosphor-initramfs-evb-ast2500.testdata.json
u-boot-evb-ast2500-v2019.04+gitAUTOINC+fd915728e1-r0.bin
u-boot-evb-ast2500.bin
u-boot.bin
vmlinux
vmlinux--6.1.15+git0+580639a973-r0-evb-ast2500-20230730112951.bin
vmlinux-evb-ast2500.bin

使用

到这里构建就完成了,之后就是要启动这个镜像,这需要参考https://github.com/openbmc/docs/blob/master/development/dev-environment.md中的内容。由于没有实际的设备做测试,所以只能使用虚拟机,这就需要依赖于QEMU,但是使用WSL子系统中的qemu-system-arm启动镜像出现了无限重启的情况,所以这里尝试使用Windows下的QEMU。

  1. 在Windows下安装QEMU,确定qemu-system-arm可用。

  2. 将构建的BMC从WSL子系统拿出来,放到指定的位置:

Windows PowerShell
版权所有(C) Microsoft Corporation。保留所有权利。安装最新的 PowerShell,了解新功能和改进!https://aka.ms/PSWindowsPS C:\Users\jiang> wsl
jw@HOME:/mnt/c/Users/jiang$ cp /home/jw/openbmc/build/tmp/deploy/images/romulus/obmc-phosphor-image-romulus.static.mtd /mnt/e/wsl/
jw@HOME:/mnt/c/Users/jiang$

这里将BMC二进制放到了E盘的wsl目录下,在该目录下执行如下的命令:

qemu-system-arm -m 256 -M ast2500-evb -nographic -drive file=obmc-phosphor-image-evb-ast2500.static.mtd,format=raw,if=mtd

关于QEMU的参数,这里简单介绍下:

  • -m指定了内存的大小。
  • -M指定机器架构。当前支持的架构:
PS C:\Users\jiang> qemu-system-arm.exe -M ?
Supported machines are:
akita                Sharp SL-C1000 (Akita) PDA (PXA270)
ast2500-evb          Aspeed AST2500 EVB (ARM1176)
ast2600-evb          Aspeed AST2600 EVB (Cortex-A7)
# 后续略
  • -nographic表示无图像输出,不过还是会输出到控制台,对于本文来说就是Windows的PowerShell。
  • -driver file=xx指定了启动的系统,这里就是我们的OpenBMC固件系统。
  • -net设定网路参数。
  1. 在PowerShell下执行命令之后就可以将OpenBMC系统启动起来,如下所示:
E:\wsl>qemu-system-arm -m 256 -M ast2500-evb -nographic -drive file=obmc-phosphor-image-evb-ast2500.static.mtd,format=raw,if=mtdU-Boot 2019.04 (Mar 10 2023 - 01:54:10 +0000)SOC : AST2500-A1
RST : Power On
LPC Mode : SIO:Enable : SuperIO-2e
Eth : MAC0: RGMII, , MAC1: RGMII,
Model: AST2500 EVB
DRAM:  192 MiB (capacity:256 MiB, VGA:64 MiB, ECC:off)
MMC:   sdhci_slot0@100: 0, sdhci_slot1@200: 1
Loading Environment from SPI Flash... SF: Detected w25q256 with page size 256 Bytes, erase size 4 KiB, total 32 MiB
*** Warning - bad CRC, using default environmentIn:    serial@1e784000
Out:   serial@1e784000
Err:   serial@1e784000
Net:
Warning: ethernet@1e660000 (eth0) using random MAC address - 12:18:cf:56:7c:54
eth0: ethernet@1e660000
Warning: ethernet@1e680000 (eth1) using random MAC address - 8e:e3:1c:40:e9:81
, eth1: ethernet@1e680000
Hit any key to stop autoboot:  2 qemu-system-arm: warning: GLib-GIO: Unexpectedly, UWP app `Clipchamp.Clipchamp_2.6.2.0_neutral__yxz26nhyzhsrt' (AUMId `Clipchamp.Clipchamp_yxz26nhyzhsrt!App') supports 41 extensions but has no verbs
qemu-system-arm: warning: GLib-GIO: Unexpectedly, UWP app `Microsoft.ScreenSketch_11.2303.17.0_x64__8wekyb3d8bbwe' (AUMId `Microsoft.ScreenSketch_8wekyb3d8bbwe!App') supports 29 extensions but has no verbs0
## Loading kernel from FIT Image at 20080000 ...Using 'conf-aspeed-ast2500-evb.dtb' configurationTrying 'kernel-1' kernel subimageDescription:  Linux kernelType:         Kernel ImageCompression:  uncompressedData Start:   0x2008012cData Size:    3081352 Bytes = 2.9 MiBArchitecture: ARMOS:           LinuxLoad Address: 0x80001000Entry Point:  0x80001000Hash algo:    sha256Hash value:   d1d96902a9f4d8cd71d35cb030c13d935dd6ed8773aa45e0a34ea356e347b83fVerifying Hash Integrity ... sha256+ OK
## Loading ramdisk from FIT Image at 20080000 ...Using 'conf-aspeed-ast2500-evb.dtb' configurationTrying 'ramdisk-1' ramdisk subimageDescription:  obmc-phosphor-initramfsType:         RAMDisk ImageCompression:  uncompressedData Start:   0x20377244Data Size:    1083876 Bytes = 1 MiBArchitecture: ARMOS:           LinuxLoad Address: unavailableEntry Point:  unavailableHash algo:    sha256Hash value:   f24d14b2d517b5ee3ef8f7c1031a8ff1dfacaf727eb474a79aeb9b0c1924f6e5Verifying Hash Integrity ... sha256+ OK
## Loading fdt from FIT Image at 20080000 ...Using 'conf-aspeed-ast2500-evb.dtb' configurationTrying 'fdt-aspeed-ast2500-evb.dtb' fdt subimageDescription:  Flattened Device Tree blobType:         Flat Device TreeCompression:  uncompressedData Start:   0x203706c8Data Size:    27311 Bytes = 26.7 KiBArchitecture: ARMHash algo:    sha256Hash value:   dd954d39662a2217b3b1b835554d5e22d8e8729174f8c53532327f425eb55a7eVerifying Hash Integrity ... sha256+ OKBooting using the fdt blob at 0x203706c8Loading Kernel Image ... OKLoading Ramdisk to 89e8a000, end 89f929e4 ... OKLoading Device Tree to 89e80000, end 89e89aae ... OKStarting kernel ...[    0.000000] Booting Linux on physical CPU 0x0
[    0.000000] Linux version 6.1.15-580639a (oe-user@oe-host) (arm-openbmc-linux-gnueabi-gcc (GCC) 12.2.0, GNU ld (GNU Binutils) 2.40.20230119) #1 Thu Apr  6 00:55:09 UTC 2023
[    0.000000] CPU: ARMv6-compatible processor [410fb767] revision 7 (ARMv7), cr=00c5387d
[    0.000000] CPU: VIPT aliasing data cache, unknown instruction cache
[    0.000000] OF: fdt: Machine model: AST2500 EVB
[    0.000000] Memory policy: Data cache writeback
[    0.000000] Reserved memory: created CMA memory pool at 0x8b000000, size 16 MiB
[    0.000000] OF: reserved mem: initialized node framebuffer, compatible id shared-dma-pool
[    0.000000] cma: Reserved 16 MiB at 0x8a000000
[    0.000000] Zone ranges:
[    0.000000]   Normal   [mem 0x0000000080000000-0x000000008bffffff]
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x0000000080000000-0x000000008bffffff]
[    0.000000] Initmem setup node 0 [mem 0x0000000080000000-0x000000008bffffff]
[    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 48768
[    0.000000] Kernel command line: console=ttyS4,115200n8 root=/dev/ram rw
[    0.000000] Dentry cache hash table entries: 32768 (order: 5, 131072 bytes, linear)
[    0.000000] Inode-cache hash table entries: 16384 (order: 4, 65536 bytes, linear)
[    0.000000] mem auto-init: stack:all(zero), heap alloc:off, heap free:off
[    0.000000] Memory: 149728K/196608K available (7168K kernel code, 667K rwdata, 1500K rodata, 1024K init, 148K bss, 14112K reserved, 32768K cma-reserved)
[    0.000000] SLUB: HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
[    0.000000] ftrace: allocating 23672 entries in 47 pages
[    0.000000] ftrace: allocated 47 pages with 5 groups
[    0.000000] trace event string verifier disabled
[    0.000000] NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16
[    0.000000] i2c controller registered, irq 17
[    0.000000] clocksource: FTTMR010-TIMER2: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 77222644334 ns
[    0.000119] sched_clock: 32 bits at 25MHz, resolution 40ns, wraps every 86767015915ns
[    0.001174] Switching to timer-based delay loop, resolution 40ns
[    0.003361] Calibrating delay loop (skipped), value calculated using timer frequency.. 49.50 BogoMIPS (lpj=247500)
[    0.003492] pid_max: default: 32768 minimum: 301
[    0.005470] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes, linear)
[    0.005501] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes, linear)
[    0.015532] CPU: Testing write buffer coherency: ok
[    0.023194] cblist_init_generic: Setting adjustable number of callback queues.
[    0.023312] cblist_init_generic: Setting shift to 0 and lim to 1.
[    0.023440] cblist_init_generic: Setting shift to 0 and lim to 1.
[    0.024877] Setting up static identity map for 0x80100000 - 0x80100038
[    0.026412] ASPEED AST2500 rev A1 (04010303)
[    0.031259] devtmpfs: initialized
[    0.038699] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
[    0.038797] futex hash table entries: 256 (order: -1, 3072 bytes, linear)
[    0.040158] pinctrl core: initialized pinctrl subsystem
[    0.046111] NET: Registered PF_NETLINK/PF_ROUTE protocol family
[    0.050753] DMA: preallocated 256 KiB pool for atomic coherent allocations
[    0.052672] hw-breakpoint: debug architecture 0x0 unsupported.
[    0.082781] mc: Linux media interface: v0.10
[    0.082839] videodev: Linux video capture interface: v2.00
[    0.082902] pps_core: LinuxPPS API ver. 1 registered
[    0.082910] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
[    0.082953] PTP clock support registered
[    0.094061] clocksource: Switched to clocksource FTTMR010-TIMER2
[    0.111839] NET: Registered PF_INET protocol family
[    0.112552] IP idents hash table entries: 4096 (order: 3, 32768 bytes, linear)
[    0.114931] tcp_listen_portaddr_hash hash table entries: 1024 (order: 0, 4096 bytes, linear)
[    0.114980] Table-perturb hash table entries: 65536 (order: 6, 262144 bytes, linear)
[    0.115017] TCP established hash table entries: 2048 (order: 1, 8192 bytes, linear)
[    0.115070] TCP bind hash table entries: 2048 (order: 2, 16384 bytes, linear)
[    0.115151] TCP: Hash tables configured (established 2048 bind 2048)
[    0.115813] UDP hash table entries: 256 (order: 0, 4096 bytes, linear)
[    0.115932] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes, linear)
[    0.116933] NET: Registered PF_UNIX/PF_LOCAL protocol family
[    0.121805] Unpacking initramfs...
[    0.135954] workingset: timestamp_bits=30 max_order=16 bucket_order=0
[    0.138969] squashfs: version 4.0 (2009/01/31) Phillip Lougher
[    0.138991] jffs2: version 2.2. (SUMMARY)  漏 2001-2006 Red Hat, Inc.
[    0.158835] Serial: 8250/16550 driver, 6 ports, IRQ sharing enabled
[    0.163093] printk: console [ttyS4] disabled
[    0.165121] 1e784000.serial: ttyS4 at MMIO 0x1e784000 (irq = 20, base_baud = 1500000) is a 16550A
[    0.326435] printk: console [ttyS4] enabled
[    0.329124] timeriomem_rng 1e6e2078.hwrng: 32bits from 0x(ptrval) @ 1us
[    0.332317] aspeed_gfx 1e6e6000.display: assigned reserved memory node framebuffer
[    0.371403] [drm] Initialized aspeed-gfx-drm 1.0.0 20180319 for 1e6e6000.display on minor 0
[    0.388654] aspeed_gfx 1e6e6000.display: [drm] fb0: aspeed-gfx-drmd frame buffer device
[    0.413113] loop: module loaded
[    0.482273] spi-nor spi0.0: w25q256 (32768 Kbytes)
[    0.512151] random: crng init done
[    0.753987] spi-aspeed-smc 1e620000.spi: CE0 read buswidth:2 [0x203b0641]
[    0.874721] Freeing initrd memory: 1060K
[    0.877843] 5 fixed-partitions partitions found on MTD device bmc
[    0.878942] Creating 5 MTD partitions on "bmc":
[    0.879832] 0x000000000000-0x000000060000 : "u-boot"
[    0.881572] 0x000000060000-0x000000080000 : "u-boot-env"
[    0.882894] 0x000000080000-0x0000004c0000 : "kernel"
[    0.884206] 0x0000004c0000-0x000001c00000 : "rofs"
[    0.885642] 0x000001c00000-0x000002000000 : "rwfs"
[    0.897655] spi-nor spi1.0: mx25l25635e (32768 Kbytes)
[    0.902495] spi-aspeed-smc 1e630000.spi: Calibration area too uniform, using low speed
[    0.903845] spi-aspeed-smc 1e630000.spi: CE0 read buswidth:2 [0x203b0041]
[    0.919797] ftgmac100 1e660000.ethernet: Read MAC address 12:18:cf:56:7c:54 from chip
[    0.925951] RTL8211E Gigabit Ethernet 1e660000.ethernet--1:00: attached PHY driver (mii_bus:phy_addr=1e660000.ethernet--1:00, irq=POLL)
[    0.929635] ftgmac100 1e660000.ethernet eth0: irq 22, mapped at (ptrval)
[    0.931293] ftgmac100 1e680000.ethernet: Read MAC address 8e:e3:1c:40:e9:81 from chip
[    0.934834] RTL8211E Gigabit Ethernet 1e680000.ethernet--1:00: attached PHY driver (mii_bus:phy_addr=1e680000.ethernet--1:00, irq=POLL)
[    0.937590] ftgmac100 1e680000.ethernet eth1: irq 23, mapped at (ptrval)
[    0.952480] aspeed_vhub 1e6a0000.usb-vhub: Initialized virtual hub in USB2 mode
[    0.954489] Mass Storage Function, version: 2009/09/11
[    0.955610] LUN: removable file: (no medium)
[    0.956818] no file given for LUN0
[    0.957808] udc 1e6a0000.usb-vhub:p1: failed to start g_mass_storage: -22
[    0.958950] g_mass_storage: probe of gadget.0 failed with error -22
[    0.960036] Mass Storage Function, version: 2009/09/11
[    0.960883] LUN: removable file: (no medium)
[    0.961586] no file given for LUN0
[    0.962149] udc 1e6a0000.usb-vhub:p2: failed to start g_mass_storage: -22
[    0.963246] g_mass_storage: probe of gadget.1 failed with error -22
[    0.964416] Mass Storage Function, version: 2009/09/11
[    0.965263] LUN: removable file: (no medium)
[    0.966118] no file given for LUN0
[    0.966749] udc 1e6a0000.usb-vhub:p3: failed to start g_mass_storage: -22
[    0.967921] g_mass_storage: probe of gadget.2 failed with error -22
[    0.969508] Mass Storage Function, version: 2009/09/11
[    0.970428] LUN: removable file: (no medium)
[    0.971184] no file given for LUN0
[    0.971748] udc 1e6a0000.usb-vhub:p4: failed to start g_mass_storage: -22
[    0.972842] g_mass_storage: probe of gadget.3 failed with error -22
[    0.973895] Mass Storage Function, version: 2009/09/11
[    0.974741] LUN: removable file: (no medium)
[    0.975583] no file given for LUN0
[    0.976353] udc 1e6a0000.usb-vhub:p5: failed to start g_mass_storage: -22
[    0.977507] g_mass_storage: probe of gadget.4 failed with error -22
[    0.978645] UDC core: g_mass_storage: couldn't find an available UDC
[    0.980024] i2c_dev: i2c /dev entries driver
[    0.986214] at24 3-0050: 1024 byte 24c08 EEPROM, writable, 16 bytes/write
[    0.987659] aspeed-i2c-bus 1e78a100.i2c-bus: i2c bus 3 registered, irq 25
[    0.989541] aspeed-i2c-bus 1e78a300.i2c-bus: i2c bus 7 registered, irq 26
[    0.990940] Driver for 1-wire Dallas network protocol.
[    0.993644] lm75 7-004d: hwmon0: sensor 'lm75'
[    0.995603] SPI driver bmp280 has no spi_device_id for bosch,bmp085
[    1.000920] NET: Registered PF_INET6 protocol family
[    1.006255] Segment Routing with IPv6
[    1.006981] In-situ OAM (IOAM) with IPv6
[    1.008234] NET: Registered PF_PACKET protocol family
[    1.009067] 8021q: 802.1Q VLAN Support v1.8
[    1.013306] printk: console [netcon0] enabled
[    1.014103] netconsole: network logging started
[    1.035707] Freeing unused kernel image (initmem) memory: 1024K
[    1.039784] Checked W+X mappings: passed, no W+X pages found
[    1.040838] Run /init as init process
rofs = mtd4 squashfs   rwfs = mtd5 jffs2
[    2.154262] jffs2: notice: (84) jffs2_build_xattr_subsystem: complete building xattr subsystem, 0 of xdatum (0 unchecked, 0 orphan) and 0 of xref (0 dead, 0 orphan) found.
find: run/initramfs/rw/cow/var/lib/systemd/random-seed: No such file or directory
Fri Mar  9 12:35:01 UTC 2018
[    2.334539] overlayfs: upper fs does not support tmpfile.
[    2.337840] overlayfs: upper fs does not support RENAME_WHITEOUT.
[    4.325572] systemd[1]: System time before build time, advancing clock.
[    4.474149] systemd[1]: systemd 253.1^ running in system mode (+PAM -AUDIT -SELINUX -APPARMOR -IMA -SMACK +SECCOMP -GCRYPT -GNUTLS -OPENSSL -ACL +BLKID -CURL -ELFUTILS -FIDO2 -IDN2 -IDN -IPTC -KMOD -LIBCRYPTSETUP +LIBFDISK -PCRE2 -PWQUALITY -P11KIT -QRENCODE -TPM2 -BZIP2 -LZ4 -XZ -ZLIB +ZSTD -BPF_FRAMEWORK -XKBCOMMON -UTMP -SYSVINIT default-hierarchy=unified)
[    4.483706] systemd[1]: Detected architecture arm.Welcome to Phosphor OpenBMC (Phosphor OpenBMC Project Reference Distro) 2.14.0![    4.541756] systemd[1]: Hostname set to <evb-ast2500>.
[    4.550899] systemd[1]: Initializing machine ID from random generator.
[    4.757550] systemd[1]: Using hardware watchdog 'aspeed_wdt', version 0, device /dev/watchdog0
[    4.796279] systemd[1]: Watchdog running with a timeout of 2min.
[    4.797929] systemd[1]: Watchdog: reading from /sys/dev/char/247:0/pretimeout_governor
[    4.800023] systemd[1]: Watchdog: failed to read pretimeout governor: No such file or directory
[    4.801847] systemd[1]: Watchdog: setting pretimeout_governor to 'panic' via '/sys/dev/char/247:0/pretimeout_governor'
[    4.804757] systemd[1]: Failed to set pretimeout_governor to 'panic': No such file or directory
[    4.806494] systemd[1]: Failed to set watchdog pretimeout governor to 'panic', ignoring: No such file or directory
[    7.016612] systemd[1]: /lib/systemd/system/phosphor-ipmi-net@.socket:6: Invalid interface name, ignoring: sys-subsystem-net-devices-%i.device
[    7.137420] systemd[1]: Queued start job for default target Multi-User System.
[    7.161803] systemd[1]: Created slice Slice /system/getty.
[  OK  ] Created slice Slice /system/getty.
[    7.170446] systemd[1]: Created slice Slice /system/mapper-wait.
[  OK  ] Created slice Slice /system/mapper-wait.
[    7.176535] systemd[1]: Created slice Slice /system/modprobe.
[  OK  ] Created slice Slice /system/modprobe.
[    7.183669] systemd[1]: Created slice Slice /system/obmc-led-group-start.
[  OK  ] Created slice Slice /system/obmc-led-group-start.
[    7.190534] systemd[1]: Created slice Slice /system/phosphor-certificate-manager.
[  OK  ] Created slice Slice /system/phosphor-certificate-manager.
[    7.197805] systemd[1]: Created slice Slice /system/phosphor-discover-system-state.
[  OK  ] Created slice Slice /syste鈥osphor-discover-system-state.
[    7.205313] systemd[1]: Created slice Slice /system/phosphor-ipmi-net.
[  OK  ] Created slice Slice /system/phosphor-ipmi-net.
[    7.212227] systemd[1]: Created slice Slice /system/phosphor-reset-chassis-on.
[  OK  ] Created slice Slice /system/phosphor-reset-chassis-on.
[    7.219060] systemd[1]: Created slice Slice /system/phosphor-reset-chassis-running.
[  OK  ] Created slice Slice /syste鈥osphor-reset-chassis-running.
[    7.226630] systemd[1]: Created slice Slice /system/phosphor-reset-host-running.
[  OK  ] Created slice Slice /system/phosphor-reset-host-running.
[    7.233226] systemd[1]: Created slice Slice /system/serial-getty.
[  OK  ] Created slice Slice /system/serial-getty.
[    7.239601] systemd[1]: Created slice Slice /system/xyz.openbmc_project.State.Chassis.
[  OK  ] Created slice Slice /syste鈥penbmc_project.State.Chassis.
[    7.249573] systemd[1]: Created slice Slice /system/xyz.openbmc_project.State.Host.
[  OK  ] Created slice Slice /syste鈥z.openbmc_project.State.Host.
[    7.256000] systemd[1]: Started Dispatch Password Requests to Console Directory Watch.
[  OK  ] Started Dispatch Password 鈥s to Console Directory Watch.
[    7.261232] systemd[1]: Started Forward Password Requests to Wall Directory Watch.
[  OK  ] Started Forward Password R鈥ests to Wall Directory Watch.
[    7.266179] systemd[1]: Reached target Host0 running after reset.
[  OK  ] Reached target Host0 running after reset.
[    7.269445] systemd[1]: Reached target Path Units.
[  OK  ] Reached target Path Units.
[    7.272596] systemd[1]: Reached target Remote File Systems.
[  OK  ] Reached target Remote File Systems.
[    7.286486] systemd[1]: Reached target Slice Units.
[  OK  ] Reached target Slice Units.
[    7.289587] systemd[1]: Reached target Swaps.
[  OK  ] Reached target Swaps.
[    7.300777] systemd[1]: Listening on Syslog Socket.
[  OK  ] Listening on Syslog Socket.
[    7.324171] systemd[1]: Listening on Process Core Dump Socket.
[  OK  ] Listening on Process Core Dump Socket.
[    7.329773] systemd[1]: Journal Audit Socket was skipped because of an unmet condition check (ConditionSecurity=audit).
[    7.337538] systemd[1]: Listening on Journal Socket (/dev/log).
[  OK  ] Listening on Journal Socket (/dev/log).
[    7.343615] systemd[1]: Listening on Journal Socket.
[  OK  ] Listening on Journal Socket.
[    7.350119] systemd[1]: Listening on Network Service Netlink Socket.
[  OK  ] Listening on Network Service Netlink Socket.
[    7.361387] systemd[1]: Listening on udev Control Socket.
[  OK  ] Listening on udev Control Socket.
[    7.367289] systemd[1]: Listening on udev Kernel Socket.
[  OK  ] Listening on udev Kernel Socket.
[    7.373246] systemd[1]: Huge Pages File System was skipped because of an unmet condition check (ConditionPathExists=/sys/kernel/mm/hugepages).
[    7.377520] systemd[1]: POSIX Message Queue File System was skipped because of an unmet condition check (ConditionPathExists=/proc/sys/fs/mqueue).
[    7.399229] systemd[1]: Mounting Kernel Debug File System...Mounting Kernel Debug File System...
[    7.432360] systemd[1]: Mounting Kernel Trace File System...Mounting Kernel Trace File System...
[    7.476449] systemd[1]: Mounting Temporary Directory /tmp...Mounting Temporary Directory /tmp...
[    7.538878] systemd[1]: Starting Load Kernel Module configfs...Starting Load Kernel Module configfs...
[    7.613383] systemd[1]: Starting Load Kernel Module efi_pstore...Starting Load Kernel Module efi_pstore...
[    7.656240] systemd[1]: Starting Load Kernel Module fuse...Starting Load Kernel Module fuse...
[    7.667621] systemd[1]: File System Check on Root Device was skipped because of an unmet condition check (ConditionPathIsReadWrite=!/).
[    7.846291] systemd[1]: Starting Journal Service...Starting Journal Service...
[    7.950807] systemd[1]: Starting Generate network units from Kernel command line...Starting Generate network 鈥s from Kernel command line...
[    8.107269] systemd[1]: Starting Remount Root and Kernel File Systems...Starting Remount Root and Kernel File Systems...
[    8.247561] systemd[1]: Starting Apply Kernel Variables...Starting Apply Kernel Variables...
[    8.387080] systemd[1]: Starting Coldplug All udev Devices...Starting Coldplug All udev Devices...
[    8.771729] systemd[1]: Mounted Kernel Debug File System.
[  OK  ] Mounted Kernel Debug File System.
[    8.817476] systemd[1]: Mounted Kernel Trace File System.
[  OK  ] Mounted Kernel Trace File System.
[    9.008706] systemd[1]: Mounted Temporary Directory /tmp.
[  OK  ] Mounted Temporary Directory /tmp.
[    9.064132] systemd[1]: modprobe@configfs.service: Deactivated successfully.
[    9.113865] systemd-journald[115]: Collecting audit messages is disabled.
[    9.121763] systemd[1]: Finished Load Kernel Module configfs.
[  OK  ] Finished Load Kernel Module configfs.
[    9.134054] systemd[1]: modprobe@efi_pstore.service: Deactivated successfully.
[    9.185567] systemd[1]: Finished Load Kernel Module efi_pstore.
[  OK  ] Finished Load Kernel Module efi_pstore.
[    9.212820] systemd[1]: modprobe@fuse.service: Deactivated successfully.
[    9.267227] systemd[1]: Finished Load Kernel Module fuse.
[  OK  ] Finished Load Kernel Module fuse.
[    9.284711] systemd[1]: Finished Generate network units from Kernel command line.
[  OK  ] Finished Generate network units from Kernel command line.
[    9.314765] systemd[1]: Finished Remount Root and Kernel File Systems.
[  OK  ] Finished Remount Root and Kernel File Systems.
[    9.345716] systemd[1]: Finished Apply Kernel Variables.
[  OK  ] Finished Apply Kernel Variables.
[    9.355649] systemd[1]: Reached target Preparation for Network.
[  OK  ] Reached target Preparation for Network.
[    9.378157] systemd[1]: FUSE Control File System was skipped because of an unmet condition check (ConditionPathExists=/sys/fs/fuse/connections).
[    9.436381] systemd[1]: Mounting Kernel Configuration File System...Mounting Kernel Configuration File System...
[    9.517018] systemd[1]: Starting Rebuild Hardware Database...Starting Rebuild Hardware Database...
[    9.520524] systemd[1]: Platform Persistent Storage Archival was skipped because of an unmet condition check (ConditionDirectoryNotEmpty=/sys/fs/pstore).
[    9.591461] systemd[1]: Starting Create System Users...Starting Create System Users...
[    9.769333] systemd[1]: Mounted Kernel Configuration File System.
[  OK  ] Mounted Kernel Configuration File System.
[    9.815172] systemd[1]: Finished Rebuild Hardware Database.
[  OK  ] Finished Rebuild Hardware Database.
[   10.092119] systemd[1]: Started Journal Service.
[  OK  ] Started Journal Service.Starting Flush Journal to Persistent Storage...
[   10.431905] systemd-journald[115]: Received client request to flush runtime journal.
[  OK  ] Finished Create System Users.
[  OK  ] Finished Flush Journal to Persistent Storage.Starting Create Static Device Nodes in /dev...
[  OK  ] Finished Create Static Device Nodes in /dev.
[  OK  ] Reached target Preparation for Local File Systems.Mounting /var/volatile...Starting Rule-based Manage鈥or Device Events and Files...
[  OK  ] Mounted /var/volatile.Starting Load/Save OS Random Seed...
[  OK  ] Reached target Local File Systems.Starting Create Volatile Files and Directories...
[  OK  ] Finished Load/Save OS Random Seed.
[  OK  ] Started Rule-based Manager for Device Events and Files.Starting Network Configuration...
[  OK  ] Finished Create Volatile Files and Directories.Starting Rebuild Journal Catalog...Starting Network Name Resolution...Starting Network Time Synchronization...
[  OK  ] Finished Rebuild Journal Catalog.Starting Update is Completed...
[  OK  ] Finished Update is Completed.
[  OK  ] Started Network Time Synchronization.
[  OK  ] Reached target System Time Set.
[  OK  ] Started Network Name Resolution.
[  OK  ] Reached target Host and Network Name Lookups.
[  OK  ] Started Network Configuration.
[  OK  ] Reached target Network.Starting Wait for Network to be Configured...
[  OK  ] Finished Coldplug All udev Devices.
[   16.916445] ftgmac100 1e680000.ethernet eth1: Link is Up - 100Mbps/Full - flow control rx/tx
[   16.923077] IPv6: ADDRCONF(NETDEV_CHANGE): eth1: link becomes ready
[   17.159974] ftgmac100 1e660000.ethernet eth0: Link is Up - 100Mbps/Full - flow control rx/tx
[   17.169310] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
[  OK  ] Found device /sys/subsystem/net/devices/eth0.
[  OK  ] Reached target System Initialization.
[  OK  ] Started Daily rotation of log files.
[  OK  ] Started Daily Cleanup of Temporary Directories.
[  OK  ] Reached target Timer Units.
[  OK  ] Reached target Hardware activated USB gadget.
[  OK  ] Listening on Avahi mDNS/DNS-SD Stack Activation Socket.
[  OK  ] Listening on BMC Webserver socket.
[  OK  ] Listening on D-Bus System Message Bus Socket.
[  OK  ] Listening on dropbear.socket.
[  OK  ] Listening on Phosphor Host鈥le SSH Per-Connection socket.
[  OK  ] Listening on phosphor-ipmi-net@eth0.socket.
[  OK  ] Reached target Socket Units.Starting D-Bus System Message Bus...
[  OK  ] Created slice Slice /system/xyz.openbmc_project.Hwmon.
[  OK  ] Started D-Bus System Message Bus.
[  OK  ] Reached target Basic System.Starting Avahi mDNS/DNS-SD Stack...
[  OK  ] Started Start bmcweb server.Starting Clear one time boot overrides...Starting SSH Key Generation...Starting Name Service Cache Daemon...Starting LDAP daemon...
[  OK  ] Started Phosphor Dump core monitor..
[  OK  ] Started Phosphor certificate manager for authority.
[  OK  ] Started Phosphor certificate manager for bmcweb.
[  OK  ] Started Phosphor certificate manager for nslcd.Starting BMC health monitoring...
[  OK  ] Started Lightweight SLP Server.Starting OpenBMC ipKVM daemon...Starting Permit User Sessions...Starting Enable Linux trace events in the boot loader...Starting Phosphor Dump Manager...
[  OK  ] Started Fru Device.Starting Phosphor Inventory Manager...Starting Phosphor LED Group Management Daemon...Starting Phosphor Log Manager...Starting Phosphor Network Manager...Starting Phosphor DBus Service Discovery Manager...Starting Phosphor Settings Daemon...Starting OpenBMC Software Update Manager...Starting Phosphor Download Manager...Starting Phosphor Chassis0 State Manager...Starting Rsyslog config updater...Starting Telemetry...Starting Phosphor User Manager...
[  OK  ] Finished Wait for Network to be Configured.
[  OK  ] Started Name Service Cache Daemon.
[  OK  ] Started OpenBMC ipKVM daemon.
[  OK  ] Finished Permit User Sessions.
[  OK  ] Finished Enable Linux trace events in the boot loader.
[  OK  ] Started BMC health monitoring.
[  OK  ] Finished Clear one time boot overrides.
[  OK  ] Started LDAP daemon.
[  OK  ] Started Phosphor Settings Daemon.
[  OK  ] Started Phosphor Inventory Manager.
[  OK  ] Started Phosphor Log Manager.
[  OK  ] Started Rsyslog config updater.
[  OK  ] Started Phosphor DBus Service Discovery Manager.
[  OK  ] Started Telemetry.
[  OK  ] Started Phosphor Download Manager.
[  OK  ] Started Avahi mDNS/DNS-SD Stack.
[  OK  ] Started Phosphor Dump Manager.
[  OK  ] Started OpenBMC Software Update Manager.
[  OK  ] Started Phosphor Chassis0 State Manager.
[  OK  ] Reached target Network is Online.
[  OK  ] Started phosphor systemd target monitor.Starting System Logging Service...
[  OK  ] Started Serial Getty on ttyS4.
[  OK  ] Reached target Login Prompts.Starting Hostname Service...Starting Phosphor Ldap config updater...Starting Wait for /org/openbmc/control/power0...Starting Wait for /xyz/ope鈥/control/host0/auto_reboot...Starting Wait for /xyz/ope鈥ontrol/host0/boot/one_time...Starting Wait for /xyz/ope鈥project/control/host0/boot...Starting Wait for /xyz/ope鈥?/host0/power_restore_policy...Starting Wait for /xyz/ope鈥rol/host0/restriction_mode...Starting Wait for /xyz/ope鈥ject/led/groups/bmc_booted...Starting Wait for /xyz/openbmc_project/state/bmc0...Starting Wait for /xyz/openbmc_project/state/chassis0...Starting Wait for /xyz/openbmc_project/state/host0...Starting Wait for /xyz/ope鈥c_project/time/sync_method...Starting Phosphor Version Software Manager...Starting Phosphor BMC State Manager...
[  OK  ] Started System Logging Service.
[  OK  ] Finished SSH Key Generation.
[  OK  ] Finished Wait for /xyz/ope鈥ct/control/host0/auto_reboot.
[  OK  ] Finished Wait for /xyz/ope鈥/control/host0/boot/one_time.
[  OK  ] Finished Wait for /xyz/ope鈥c_project/control/host0/boot.
[  OK  ] Finished Wait for /xyz/ope鈥l/host0/power_restore_policy.
[  OK  ] Finished Wait for /xyz/ope鈥ntrol/host0/restriction_mode.
[  OK  ] Finished Wait for /xyz/openbmc_project/state/chassis0.
[  OK  ] Finished Wait for /xyz/openbmc_project/time/sync_method.
[  OK  ] Started Hostname Service.
[  OK  ] Started Phosphor Ldap config updater.Stopping LDAP daemon...Starting Phosphor Inband IPMI...Starting Phosphor Time Manager daemon...
[  OK  ] Stopped LDAP daemon.
[  OK  ] Started Phosphor Network Manager.
[  OK  ] Started Phosphor Version Software Manager.
[  OK  ] Started Phosphor User Manager.Phosphor OpenBMC (Phosphor OpenBMC Project Reference Distro) nodistro.0 evb-ast2500 ttyS4evb-ast2500 login:
  1. 登录系统使用的账号密码是root0penBmc。注意密码的首字母是数字的0,而不是大写的O。登录之后就可以进行各种操作:
root@evb-ast2500:~# ls
bmcweb_persistent_data.json
root@evb-ast2500:~# obmcutil state
CurrentBMCState     : xyz.openbmc_project.State.BMC.BMCState.NotReady
CurrentPowerState   : xyz.openbmc_project.State.Chassis.PowerState.Off
CurrentHostState    : xyz.openbmc_project.State.Host.HostState.Off
BootProgress        : xyz.openbmc_project.State.Boot.Progress.ProgressStages.Unspecified
OperatingSystemState: xyz.openbmc_project.State.OperatingSystem.Status.OSStatus.Inactive

到这里一个可用的BMC镜像就已经启动起来了,但是为了在Windows下能够访问这个BMC,还需要联网,为此需要配置QEMU的网络。

  1. 安装OpenVPN,配置生成网桥:

在这里插入图片描述

之后就可以使用这个tap0了。启动BMC的命令改成:

qemu-system-arm -m 256 -M ast2500-evb -nographic -drive file=obmc-phosphor-image-evb-ast2500.static.mtd,format=raw,if=mtd -net nic -net tap,ifname=tap0

启动BMC之后,可以在Windows下与其通信(红框是BMC配置的IP,注意不要跟网桥的一致):

在这里插入图片描述

最重要的是,可以登录到BMC Web:

在这里插入图片描述

Emmm…这显然不是我们要的结果。

进一步查看evb-ast2500对应的配方,发现它默认是不带Web的!因此我们需要自己何如Web。

最简单的方法就是查看别的平台是如何加Web的,比如meta-ampere\meta-jade\recipes-phosphor\packagegroups\packagegroup-obmc-apps.bbappend下有如下的配置:

RDEPENDS:${PN}-extras:append = " \webui-vue \phosphor-image-signing \phosphor-virtual-sensor \phosphor-misc-usb-ctrl \phosphor-gpio-monitor-monitor \"RDEPENDS:${PN}-inventory:append = " \dbus-sensors \entity-manager \"RDEPENDS:${PN}-extras:remove = " phosphor-hwmon"
VIRTUAL-RUNTIME_obmc-sensors-hwmon ?= "dbus-sensors"
RDEPENDS:${PN}-extras:append = " phosphor-virtual-sensor"

为了使用webui-vue,我们也可以创建一个类似的文件,放到meta-aspeed目录下,然后只包含webui-vue:

jw@HOME:~/openbmc$ cat meta-aspeed/recipes-phosphor/packagegroups/packagegroup-obmc-apps.bbappend
RDEPENDS:${PN}-extras:append = "webui-vue"jw@HOME:~/openbmc$

之后再进行bitbake构建,此时会有新的配方(比如nodejs)被构建,所以需要花费一定的时间。使用新的镜像,可以看到Web文件了:

root@evb-ast2500:~# ls /usr/share/www/
DMTF_Redfish_logo_2017.svg  google                      js                          styles
css                         img                         redfish
favicon.ico.gz              index.html.gz               redfish.css

再访问BMC得到如下的结果(由于使用的是私有的证书,所以会有一个拦截,跳过即可):

在这里插入图片描述

账号密码还是root/0penBmc,登录之后进入OpenBMC的Web主界面:

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/15004.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C#,数值计算——对数正态分布(logarithmic normal distribution)的计算方法与源程序

对数正态分布&#xff08;logarithmic normal distribution&#xff09;是指一个随机变量的对数服从正态分布&#xff0c;则该随机变量服从对数正态分布。对数正态分布从短期来看&#xff0c;与正态分布非常接近。但长期来看&#xff0c;对数正态分布向上分布的数值更多一些。 …

Tailwind CSS:基础使用/vue3+ts+Tailwind

一、理解Tailwind 安装 - TailwindCSS中文文档 | TailwindCSS中文网 Installation - Tailwind CSS 1.1、词义 我们简单理解就是搭上CSS的顺风车&#xff0c;事半功倍。 1.2、Tailwind CSS有以下优势 1. 快速开发&#xff1a;Tailwind CSS 提供了一些现成的 class / 可复用…

ARM裸机-4

1、什么是交叉编译 1.1、两种开发模式 非嵌入式开发&#xff0c;A&#xff08;类&#xff09;机编写&#xff08;源代码&#xff09;、编译得到可执行程序&#xff0c;发布给A&#xff08;类&#xff09;机运行。 嵌入式开发&#xff0c;A&#xff08;类&#xff09;机编写&am…

Spring源码(三)Spring Bean生命周期

Bean的生命周期就是指&#xff1a;在Spring中&#xff0c;一个Bean是如何生成的&#xff0c;如何销毁的 Bean生命周期流程图 1、生成BeanDefinition Spring启动的时候会进行扫描&#xff0c;会先调用org.springframework.context.annotation.ClassPathScanningCandidateCompo…

Qt C++实现Excel表格的公式计算

用Qt的QTableViewQStandardItemModelQStyledItemDelegate实现类似Excel表格的界面&#xff0c;在parser 模块中提供解析表格单元格输入的公式。单元格编辑结束后按回车进行计算和更新显示。 效果如下&#xff1a; 支持的公式计算可以深度嵌套&#xff0c;目前parser模块中仅提…

【Java】零基础上手SpringBoot学习日记(day1)

前言 此帖为本人学习Springboot时的笔记&#xff0c;由于是个接触计算机一年左右的新手&#xff0c;也没有网站开发经验&#xff0c;所以有些地方的理解会比较浅显并且可能会出现错误&#xff0c;望大佬们多多包涵和指正。 Web应用开发 在我的理解中&#xff0c;Web应用的开发…

测试|测试分类

测试|测试分类 文章目录 测试|测试分类1.按照测试对象分类&#xff08;部分掌握&#xff09;2.是否查看代码&#xff1a;黑盒、白盒灰盒测试3.按开发阶段分&#xff1a;单元、集成、系统及验收测试4.按实施组织分&#xff1a;α、β、第三方测试5.按是否运行代码&#xff1a;静…

Mysql sql优化

目录 目的 目标 explain 优化 避免使用select * 用union all代替union 小表驱动大表&#xff08;in与exists&#xff09; 批量操作 多使用limit in中值太多 不使用%前缀模糊查询 不在where子句中进行表达式操作 避免隐式类型转换 联合索引遵守最左前缀法则 inne…

【Spring Boot 源码学习】走近 AutoConfigurationImportSelector

AutoConfigurationImportSelector 源码解析 引言主要内容1. ImportSelector 接口2. DeferredImportSelector 接口3. AutoConfigurationImportSelector 功能概述 总结 引言 上篇博文我们了解了 EnableAutoConfiguration 注解&#xff0c;其中真正实现自动配置功能的核心实现者 …

细讲TCP三次握手四次挥手(二)

TCP/IP 协议族 应用层 应用层( application-layer &#xff09;的任务是通过应用进程间的交互来完成特定网络应用。应用层协议定义的是应用进程&#xff08;进程&#xff1a;主机中正在运行的程序&#xff09;间的通信和交互的规则。 对于不同的网络应用需要不同的应用层协议…

C语言字串函数、内存函数介绍以及模拟实现

目录 前言 本期内容介绍&#xff1a; 一、字符串函数 strlen介绍 strlen 模拟实现&#xff08;三种方式&#xff09; 方法一&#xff1a;计数器法 方法二&#xff1a;递归法&#xff08;不创建临时变量法&#xff09; 方法三&#xff1a;指针-指针 strcpy介绍 strcpy模…

速度快\颜色准\功能多,移动端HEIF图片解码实现方案

HEIF图片压缩格式是一种使用HEVC编码技术存储图像数据的方式&#xff0c;在同等质量下相比JPEG可节省50%以上空间&#xff0c;无论是节约包体还是节省带宽&#xff0c;使用HEIF格式都能有所收益。 基于百度智能云音视频处理MCP的自研BD265编码器&#xff0c;百度智能云对象存储…

合并两个有序数组——力扣88

文章目录 题目描述法一 双指针法二 逆向双指针 题目描述 法一 双指针 使用双指针方法&#xff0c;将两个数组看作队列&#xff0c;每次从两个数组头部取出比较小的数字放到结果中。 void merge(vector<int>&nums1, int m,vector<int>&nums2, int n){int p1…

C++ ——STL容器【list】模拟实现

代码仓库&#xff1a; list模拟实现 list源码 数据结构——双向链表 文章目录 &#x1f347;1. 节点结构体&#x1f348;2. list成员&#x1f349;3. 迭代器模板&#x1f34a;4. 迭代器&#x1f34b;5. 插入删除操作&#x1f34c;5.1 insert & erase&#x1f34c;5.2 push_…

15 文本编辑器vim

15.1 建立文件命令 如果file.txt就是修改这个文件&#xff0c;如果不存在就是新建一个文件。 vim file.txt 使用vim建完文件后&#xff0c;会自动进入文件中。 15.2 切换模式 底部要是显示插入&#xff0c;是编辑模式&#xff1b; 按esc&#xff0c;底部要是空白的&#xff0…

微服务契约测试框架Pact-Python实战

Pact是一个契约测试框架&#xff0c;有多种语言实现&#xff0c;本文以基于pact-python探究契约测试到底是什么&#xff1f;以及如何实现 官网&#xff1a;自述文件 |契约文档 (pact.io) 契约测试步骤 1、为消费者写一个单元测试&#xff0c;让它通过&#xff0c;并生成契约…

OS-08-事件驱动:C10M是如何实现的?

08-事件驱动&#xff1a;C10M是如何实现的&#xff1f; 你好&#xff0c;我是陶辉。 上一讲介绍了广播与组播这种一对多通讯方式&#xff0c;从这一讲开始&#xff0c;我们回到主流的一对一通讯方式。 早些年我们谈到高并发&#xff0c;总是会提到C10K&#xff0c;这是指服务…

MIT 6.830数据库系统 -- lab five

MIT 6.830数据库系统 -- lab five 项目拉取引言搜索练习1 BTreeFile.findLeafPage() 插入练习2 Spliting Page 删除练习3 页再分配练习4 合并页 事务小结 项目拉取 原项目使用ant进行项目构建&#xff0c;我已经更改为Maven构建&#xff0c;大家直接拉取我改好后的项目即可: …

Zookeeper入门介绍

Zookeeper在我本次系统的学习之前是已经开始使用了&#xff0c;但是并不理解Zookeeper到底是什么&#xff0c;有什么作用&#xff0c;你或许跟我有一样的疑惑&#xff0c;本专栏将会解决这些疑惑。 目录 Zookeeper介绍&#xff1a; zookeeper特点&#xff1a; 数据结构&#x…

《MySQL 实战 45 讲》课程学习笔记(二)

日志系统&#xff1a;一条 SQL 更新语句是如何执行的&#xff1f; 与查询流程不一样的是&#xff0c;更新流程还涉及两个重要的日志模块&#xff1a;redo log&#xff08;重做日志&#xff09;和 binlog&#xff08;归档日志&#xff09;。 重要的日志模块&#xff1a;redo l…