HP BIOSアップデート(rpmでパッケージ化)

HP BIOSアップデート(rpmでパッケージ化)

それで、HP Z230ワークステーションのBIOSをアップデートしようとしています(理由は尋ねないでください...)。

これは1-2の組み合わせです。 「xwbios」カーネルモジュールはhp-lxbios-mod..src.rpmというソースrpmとして機能し、「lxbios」アプリケーションrpm hp-lxbios..rpmは実際の更新を実行します。

rpmダウンロードリンクです sp97093.tgzファイルは、このページのBIOSタブの下にあります。解凍すると、lxbiosフォルダの下に2つのrpmとrpmのインストールプロセスを説明する追加情報ファイルがあります。

私はArchを使用しており、いくつかのrpmツールの使用を放棄してソフトウェアを手動でインストールしたい(または少なくともコンパイル)(後でPKGBUILDをビルドすることもできます)。

カーネルモジュール

rpm .specファイルと実際の内容を含む別の.tzファイルを含むhp-lxbios-mod..src.rpmを解凍しました。

hp-lxbios-mod/mymod.c
hp-lxbios-mod/mymod.mod.c
hp-lxbios-mod/xwbios.c
hp-lxbios-mod/xwbios.mod.c
hp-lxbios-mod/xwbios.h
hp-lxbios-mod/Makefile
hp-lxbios-mod/mkit

Makefileは(...)単純に見えます。

#obj-m := mymod.o
obj-m := xwbios.o

clean:
    rm -f *.o *.ko

install:
    mkdir -p /opt/hp/hp-lxbios/xwkernel
    cp xwbios.ko /opt/hp/hp-lxbios/xwkernel/

これはmkit、カーネルのソースコードがどこにあるかを探してmakeを起動するbashスクリプトです。

 #!/bin/bash

if [ -d /lib/modules/`uname -r`/build ]; then
    ksrc=/lib/modules/`uname -r`/build
elif [ -d /lib/modules/`uname -r`/source ]; then
    ksrc=/lib/modules/`uname -r`/source
else
    echo "*** mkit: Error - unable to define kernel source location"
    exit -1
fi
echo "Kernel source dir is $ksrc"
# Setup kernel build of xwkernel module
rm -f $ksrc/xwkernel
ln -s /opt/hp/hp-lxbios/xwkernel $ksrc/xwkernel 
make -C $ksrc M=$PWD modules 

makeはうまく起動しますが、すぐにコンパイルエラーが発生します。

Kernel source dir is /lib/modules/5.3.6-arch1-1-ARCH/build
make: Entering directory '/usr/lib/modules/5.3.6-arch1-1-ARCH/build'
  CC [M]  /home/gls/Downloads/bios_iupdate/lxbios/hp-lxbios-mod/xwbios.o
/home/gls/Downloads/bios_iupdate/lxbios/hp-lxbios-mod/xwbios.c:125:23: error: initialization of ‘long int (*)(struct file *, unsigned int,  long unsigned int ’ from incompatible pointer type ‘int (*)(struct inode *, struct file *, unsigned int,  long unsigned int)’ [-Werror=incompatible-pointer-types]
  125 |     .unlocked_ioctl = xwbios_ioctl,
      |                       ^~~~~~~~~~~~
/home/gls/Downloads/bios_iupdate/lxbios/hp-lxbios-mod/xwbios.c:125:23: note: (near initialization for ‘xwbios_fops.unlocked_ioctl’)
/home/gls/Downloads/bios_iupdate/lxbios/hp-lxbios-mod/xwbios.c: In function ‘xwbios_exit’:
/home/gls/Downloads/bios_iupdate/lxbios/hp-lxbios-mod/xwbios.c:666:5: warning: this ‘if’ clause does not guard... [-Wmisleading-indentation]
  666 |     if (pReqPwdBuffer)
      |     ^~
/home/gls/Downloads/bios_iupdate/lxbios/hp-lxbios-mod/xwbios.c:668:2: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the ‘if’
  668 |  if (pRepsetGetInfo != NULL)
      |  ^~
cc1: some warnings being treated as errors
make[1]: *** [scripts/Makefile.build:281: /home/gls/Downloads/bios_iupdate/lxbios/hp-lxbios-mod/xwbios.o] Error 1
make: *** [Makefile:1626: _module_/home/gls/Downloads/bios_iupdate/lxbios/hp-lxbios-mod] Error 2
make: Leaving directory '/usr/lib/modules/5.3.6-arch1-1-ARCH/build'

私はそれを解決する方法を本当に知りません。互換性の問題があるようですが、そこに欠落しているフラグを入れることができますか?

物理BIOSフラッシュ

すぐに来る..

ベストアンサー1

カスタムカーネルモジュールが必要であることと、そのモジュールがどれほど古いかを知ったとき、私はそれを最新のカーネルにコンパイルしようとしました。

FreeDOS USBドライブからインストールしてみることにしましたが、やはり時間の無駄でした。

代わりに、不必要に起動ディスクを組み立てた後、システム設定ユーティリティのオプションを使用するようになりました。

  1. 圧縮パッケージを抽出します。tar xvf sp100126.tgz
  2. DOS Flash/J61_0396.binFATでフォーマットされたUSBドライブのルートディレクトリにフラッシュイメージ(たとえば)を配置します。 (実際にはディレクトリ全体をサムドライブのルートにコピーしたので、他のファイルが必要かどうかDOS Flash/はわかりません。)flshuefi.cpu
  3. システム設定ユーティリティから起動します(F10起動時またはESC初めてメニューを表示)。
  4. File-> に移動Flash System ROM
  5. USBドライブを選択します。少なくともZ620では、USBドライブを黒いUSB 2.0ポートの1つに接続する必要があります。さらに便利な場合は、内蔵ハードドライブでFATフォーマットパーティションを使用することもできます。
  6. 一杯のコーヒーを飲んで戻ってきてください。 スクリーンショット

おすすめ記事