代码准备
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.org
For more information about OpenEmbedded see the website:
https://www.openembedded.org/
Common targets are:
obmc-phosphor-image: Includes OpenBMC Phosphor userspace and Web UI
core-image-minimal: A small image just capable of allowing a device to boot
core-image-full-cmdline: A small image with more Linux functionality
installed, 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 dependencies
Build 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 dependencies
Build 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。
-
在Windows下安装QEMU,确定qemu-system-arm可用。
-
将构建的BMC从WSL子系统拿出来,放到指定的位置:
Windows PowerShell
版权所有(C) Microsoft Corporation。保留所有权利。
安装最新的 PowerShell,了解新功能和改进!https://aka.ms/PSWindows
PS 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
设定网路参数。
- 在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=mtd
U-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 environment
In: 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 verbs
0
## Loading kernel from FIT Image at 20080000 ...
Using 'conf-aspeed-ast2500-evb.dtb' configuration
Trying 'kernel-1' kernel subimage
Description: Linux kernel
Type: Kernel Image
Compression: uncompressed
Data Start: 0x2008012c
Data Size: 3081352 Bytes = 2.9 MiB
Architecture: ARM
OS: Linux
Load Address: 0x80001000
Entry Point: 0x80001000
Hash algo: sha256
Hash value: d1d96902a9f4d8cd71d35cb030c13d935dd6ed8773aa45e0a34ea356e347b83f
Verifying Hash Integrity ... sha256+ OK
## Loading ramdisk from FIT Image at 20080000 ...
Using 'conf-aspeed-ast2500-evb.dtb' configuration
Trying 'ramdisk-1' ramdisk subimage
Description: obmc-phosphor-initramfs
Type: RAMDisk Image
Compression: uncompressed
Data Start: 0x20377244
Data Size: 1083876 Bytes = 1 MiB
Architecture: ARM
OS: Linux
Load Address: unavailable
Entry Point: unavailable
Hash algo: sha256
Hash value: f24d14b2d517b5ee3ef8f7c1031a8ff1dfacaf727eb474a79aeb9b0c1924f6e5
Verifying Hash Integrity ... sha256+ OK
## Loading fdt from FIT Image at 20080000 ...
Using 'conf-aspeed-ast2500-evb.dtb' configuration
Trying 'fdt-aspeed-ast2500-evb.dtb' fdt subimage
Description: Flattened Device Tree blob
Type: Flat Device Tree
Compression: uncompressed
Data Start: 0x203706c8
Data Size: 27311 Bytes = 26.7 KiB
Architecture: ARM
Hash algo: sha256
Hash value: dd954d39662a2217b3b1b835554d5e22d8e8729174f8c53532327f425eb55a7e
Verifying Hash Integrity ... sha256+ OK
Booting using the fdt blob at 0x203706c8
Loading Kernel Image ... OK
Loading Ramdisk to 89e8a000, end 89f929e4 ... OK
Loading Device Tree to 89e80000, end 89e89aae ... OK
Starting 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 ttyS4
evb-ast2500 login:
- 登录系统使用的账号密码是
root
和0penBmc
。注意密码的首字母是数字的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的网络。
- 安装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主界面: