答复: [External] Re: Clarify some questions about BIOS update (phosphor-ipmi-flash)

Andrew MS1 Peng pengms1 at lenovo.com
Thu Aug 8 18:21:16 AEST 2019


Hi Patrick,

1. Following your suggestion to modify the json file, but encountered an error message as "Parsing json failed ". Please help to take a look at it, thanks.
	A part of config-bios.json(default) content and journalctl log was below. 
		"update": {
			"type": "systemd",
			"unit": "phosphor-ipmi-flash-bios-update.target"
		}
        
        Aug 07 06:54:22 hr630 ipmid[507]: Registering OEM:[0X00C2CF], Cmd:[0X80] for Blob Commands
        Aug 07 06:54:22 hr630 ipmid[507]: config loaded: /flash/bios
        Aug 07 06:54:22 hr630 ipmid[507]: config loaded: /flash/image


	A part of config-bios.json(modification) content and journalctl log was below. 
		"update": {
			"type": "fileSystemdUpdate",
			"unit": "phosphor-ipmi-flash-bios-update.target"
			"path": "/tmp/bios.update"
		}

        Aug 07 06:33:12 hr630 ipmid[498]: Registering OEM:[0X00C2CF], Cmd:[0X80] for Blob Commands
        Aug 07 06:33:12 hr630 ipmid[498]: Parsing json failed
        Aug 07 06:33:12 hr630 ipmid[498]: config loaded: /flash/image

2. Which one is the best way to modify json file in OpenBmc, patch or overwrite? I added lenovo-bios-update.bb to handle service and script. I encountered an error message as "file conflicts" when I added new file of json to overwrite original file. What should I do to fix it?
		The error message is below.
			Error: Transaction check error:
			file /usr/share/phosphor-ipmi-flash/config-bios.json conflicts between attempted installs of phosphor-ipmi-flash-1.0+git999-r1.armv6 and lenovo-bios-update-1.0-r0.armv6 

		A part of lenovo-bios-update.bb content is below.
			SRC_URI += " \
			file://bios-verify.service \
            file://bios-verify.sh \
            file://bios-update.service \
            file://bios-update.sh \
            file://config-bios.json \
            "
			DEPENDS += "systemd"
			RDEPENDS_${PN} = "bash"
			SYSTEMD_PACKAGES = "${PN}"
			SYSTEMD_SERVICE_${PN} = "bios-verify.service bios-update.service"
			do_install() {
    			install -d ${D}/usr/sbin
    			install -d ${D}/usr/share/phosphor-ipmi-flash/
    			install -m 0755 ${S}bios-verify.sh ${D}/${sbindir}/
   				install -m 0755 ${S}bios-update.sh ${D}/${sbindir}/
    			install -m 0644 ${S}config-bios.json ${D}/usr/share/phosphor-ipmi-flash/
			}
			FILES_${PN} = " \
    			/usr/share/phosphor-ipmi-flash/config-bios.json \
    			${sbindir}/bios-update.sh \
    			${sbindir}/bios-verify.sh \
    		"
Regards,
Andrew


-----邮件原件-----
发件人: Patrick Venture <venture at google.com> 
发送时间: 2019年8月7日 23:36
收件人: Andrew MS1 Peng <pengms1 at lenovo.com>
抄送: openbmc at lists.ozlabs.org
主题: Re: [External] Re: Clarify some questions about BIOS update (phosphor-ipmi-flash)

On Wed, Aug 7, 2019 at 4:47 AM Andrew MS1 Peng <pengms1 at lenovo.com> wrote:
>
> Hi Patrick,
>
> The triggered "phosphor-ipmi-flash-bios-update.target" seems to been solved, but the BIOS update status has not yet been fixed.
> Could we add checking the contents of the file in SystemdUpdateMechanism::status() function of update_systemd.cpp such as verification mechanism SystemdWithStatusFile::status() of general_systemd.cpp?

You can just use the type "fileSystemdUpdate" which let you check a path for the status.

The three parameters for that update type are the same as the verification type that matches:
 - path - the filesystem path containing the status
 - unit - the target "phosphor-ipmi-flash-bios-update.target"
 - mode - optional job-mode parameter, defaults to "replace"

>
> Regards,
> Andrew
>
> -----邮件原件-----
> 发件人: Patrick Venture <venture at google.com>
> 发送时间: 2019年8月6日 4:39
> 收件人: Andrew MS1 Peng <pengms1 at lenovo.com>
> 抄送: openbmc at lists.ozlabs.org; Duke KH Du <dukh at lenovo.com>; Yonghui 
> YH21 Liu <liuyh21 at lenovo.com>; Lisa YJ19 Liu <liuyj19 at lenovo.com>
> 主题: [External] Re: Clarify some questions about BIOS update 
> (phosphor-ipmi-flash)
>
> On Mon, Aug 5, 2019 at 10:39 AM Patrick Venture <venture at google.com> wrote:
> >
> > On Mon, Aug 5, 2019 at 9:39 AM Patrick Venture <venture at google.com> wrote:
> > >
> > > On Mon, Aug 5, 2019 at 9:32 AM Patrick Venture <venture at google.com> wrote:
> > > >
> > > > On Mon, Aug 5, 2019 at 9:17 AM Patrick Venture <venture at google.com> wrote:
> > > > >
> > > > > On Mon, Aug 5, 2019 at 4:56 AM Andrew MS1 Peng <pengms1 at lenovo.com> wrote:
> > > > > >
> > > > > > Hi Patrick,
> > > > > >
> > > > > >
> > > > > >
> > > > > > I have some questions about BIOS update via phosphor-ipmi-flash with L2A, please help to clarify. Thanks.
> > > > > >
> > > > > >
> > > > > >
> > > > >
> > > > > Thanks for giving it a shot!  I don't have any systems using 
> > > > > this for BIOS update, so I'm curious where there may be issues 
> > > > > lurking :)
> > > > >
> > > > >
> > > > > > 1. How can I update the status (success or failure) after upgrade BIOS firmware? Currently, the update status only appear "running".
> > > > > >
> > > > >
> > > > > I see, the update mechanism doesn't have a verification option.
> > > > > A bit of an oversight.  I'll have something up for review 
> > > > > later today.  Then it'll be something you configure similarly 
> > > > > to the verifySystemd json entry.
> > > > >
> > > > > > 2. It was failed when triggered "phosphor-ipmi-flash-bios-update.target" since the job-mode is null string. It can work well when I add string "replace" to job-mode. How can I config (json file or configure parameter) to support it?
> >
> > This patch will enable you to specify "mode" in the json. *** note: 
> > i will set some time aside shortly to document writing json 
> > configurations.
> >
> > https://gerrit.openbmc-project.xyz/c/openbmc/phosphor-ipmi-flash/+/2
> > 41
> > 67
> >
> > > > >
> > > > > I'll take a look!  The parameter for job-mode, I thought, was 
> > > > > optional?  Since we don't specify it for other jobs 
> > > > > (verification, etc).  The string should be empty by default 
> > > > > and then not added as a
> > > > > null-string:
> > > > >
> > > > > https://github.com/openbmc/phosphor-ipmi-flash/blob/f0c71df251
> > > > > 49
> > > > > 27e933f6fc33d9669ab0663a0706/bmc/update_systemd.cpp#L49
> > > >
> > > > I see it is required!  Since I always configure with reboot, I 
> > > > never saw this failure. I'll default it to "replace"
> > >
> > > First patch in the series generated from your email:
> > >
> > > https://gerrit.openbmc-project.xyz/c/openbmc/phosphor-ipmi-flash/+
> > > /2
> > > 4165
> > >
> > > Next: json configuration option to control the job-mode.
> > > Then merge verification and update objects, s.t. you can specify 
> > > the status path.
>
> This patchset adds support for a new update configuration that lets you read the status from a file.
>
> https://gerrit.openbmc-project.xyz/24171
>
> > >
> > > *** A later patchset can have the status be not a path, but a dbus 
> > > property or dbus path -- if someone wants to implement a new 
> > > object for this, it's somewhat trivial.
> > >
> > > >
> > > > >
> > > > > I don't think I have a unit-test that verifies the parameters 
> > > > > are sent down properly, so I'll also add that today AND I'll 
> > > > > add an optional mode parameter to the json.
> > > > >
> > > > > Sending for review today.
> > > > >
> > > > > ...
> > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > > Regards,
> > > > > > Andrew


More information about the openbmc mailing list