BIOS アップデート

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page BIOS Update and the translation is 100% complete.

この記事は、どのようにBIOSのアップデートをGentooシステムに適応するかについて説明します。

ハードウェア製造者はしばしば BIOS やそのほかファームウェアのアップデートを提供しています。GNU/Linux でのアップデートの適用(しばしば「フラッシュ」と呼ばれる)は、すんなり行かず、いくらかの作業が必要なこともあります。

警告
ハードウェアが順調に動作しているならおよそ、BIOS をアップグレードする必要はありません。万が一失敗すると、BIOS やシステム上のファームウェアに原状回復不可能な損傷を来すことがあるうえ、ハードウェアのメーカー保証も失うことがあります。万全の注意をはらって進めてください!
メモ
歴史的に、最もよく目立ち最も広く使用されたシステムは x86 ベースの IBM PC 互換コンピュータとその BIOS であったため、システムファームウェアのことを、DEC Alpha アーキテクチャの AlphaBIOS や、Open Firmware (IEEE-1275) の実装である OpenBIOS などのように、それが IBM PC 互換 BIOS でない場合であっても BIOS と呼ぶことがあります。PC BIOS の後継である EFI/UEFI も、よく "(U)EFI-BIOS" と呼ばれます。そのため、「BIOS アップデート」は、実際には PC BIOS ではないシステムファームウェアのアップデートのことを指すことも多いです。

この記事では PC BIOS と、その後継である EFI/UEFI の初期バージョンに着目します。x86 (U)EFI System Class 1 および Class 2 は、「レガシー BIOS」または「CSM」(Compatiblity Support Module の略) と呼ばれる BIOS 互換モードを持ち、これは UEFI が PC BIOS と同様に振る舞うようにします。UEFI System Class 3 は、2020 年頃から標準的になっていますが、もう CSM を持っていません。

他のファームウェア上では、システムファームウェアの更新プロセスは類似する点を持っているかもしれませんし、まったく異なるかもしれません。

ファームウェアの情報収集

まず、マザーボードの製造業者と該当モデルを調べます。システム添付の取扱説明書を調べましょう。通常は、取扱説明書を見れば必要な情報がわかります。

dmidecode を利用すると、システムのハードウェアに関する情報がさらに得られるかもしれません。dmidecode は、マザーボードの DMI テーブルを調査し、ファームウェアやハードウェア構成部品に関する詳細な情報を提供します。

root #dmidecode -t bios -t baseboard

また、マザーボードを物理的に確認すれば、必要な情報がマザーボード自体から見つかるかもしれません。

警告
マザーボードを確認するためにコンピュータを開けてしまうと、製品保証がなくなることもあります。

つぎに、製造業者のファームウェアの更新を探して、ハードウェアの更新に必要なパッケージをダウンロードします。ファームウェアの更新パッケージは、.zip や .exe、.iso などの形式であることが一般的です。

user $unzip 7235v1A.zip
Archive:  7235v1A.zip
   creating: 7235v1A/
inflating: 7235v1A/7235v1x.txt
inflating: 7235v1A/AWFL865.EXE
inflating: 7235v1A/How to flash the BIOS.DOC
inflating: 7235v1A/W7235IMS.1A0

BIOS 更新方法

多くの BIOS では、外付けのストレージ媒体や内蔵のディスクから新しいバイナリイメージを読み込ませる方法があります。BIOS セットアップ内の記述を見て確認してください。もしもこのような方法がなければ、次のセクションに進んでください。

CDブート

製造業者によっては、CD-ROMのブートイメージで提供しています。このファイルは拡張子が .iso で、空きのCD-R (CD-RW) ディスクに書き込まなければなりません: 例えば cdrecord のようなツールを用いると書き込めます:

root #cdrecord BOOT-CD.iso
メモ
cdrecordapp-cdr/cdrtools によって提供されています。

BIOS のブートメニューで CD からのブートを選び、製造業者のウェブサイトや取扱説明書に記載のある指示に従います。

FreeDOS 環境

メモ
上手く機能し、多くの労力を節約しさらにこのセクションを飛ばすことができる、SystemRescue 上で起動する FreeDOS が存在します。FreeDOS を起動するために SystemRescue を使用するのセクションの最後にある注意を参照してください。

FreeDOS を用いると、DOSベースのBIOS更新ユーティリティの実行が可能です。そのためには、必要な BIOS 更新ツールを含む「カスタム」 FreeDOS イメージを作成しなければなりません。カスタムイメージ作成後は、以下の方法のいずれかでイメージをブートしましょう。

FreeDOS とツール類のダウンロードは:

  • FreeDOS - fdboot.img ファイルをダウンロード
  • FreeDOS ブートセクタ - sys-freedos-linux.zip ファイルをダウンロード
  • DOSベースのBIOS更新用プログラムと新しいBIOSを、製造業者のウェブサイトからダウンロード

カスタム FreeDOS イメージの作成

まず、必要なソフトウェアのダウンロードと、カーネルのループバックデバイスの有効化:

カーネル enable loopback device
Device Drivers  --->
    [*] Block devices  --->
        <M>   Loopback device support

もしもモジュールがまだロードされていなければ、modprobe を用いてロード:

root #modprobe loop

必要なソフトウェアをインストール:

root #emerge --ask dev-lang/nasm app-arch/unzip sys-fs/dosfstools

20MB以下のイメージファイルを dd コマンドで作成します。SystemRescue のものと置き換えるには、ファイル名が freedos.img である必要があります。

root #dd if=/dev/null of=freedos.img bs=1024 seek=20480

ファイルシステムにイメージを書き込みます:

root #mkfs.fat freedos.img

ブートセクタをイメージファイルに書き込みます:

root #unzip sys-freedos-linux.zip && ./sys-freedos.pl --disk=freedos.img

それから、FreeDOS のファイルを新たなイメージにコピーします。

マウントポイントを作成します:

root #mkdir -p /mnt/freedos /mnt/freedos_new

オリジナルのイメージをマウントします:

root #mount -o loop fdboot.img /mnt/freedos

新たなイメージをマウントします:

root #mount -o loop freedos.img /mnt/freedos_new

FreeDOS のシステムファイルを、新たなイメージにコピーします:

root #cp -ar /mnt/freedos/* /mnt/freedos_new/

次に、書込み用プログラムと新たな BIOS を、イメージファイルにコピーします:

root #cp -ar FLASH-PROGRAM BIOS-UPDATE /mnt/freedos_new

イメージを2つともアンマウントします:

root #umount /mnt/freedos_new /mnt/freedos
メモ
DOS では、8 文字(および拡張子3文字)の長さまでしかファイル名を表示不可能です。この制限を超えるファイルがあれば、制限を満たすようにファイル名を変更するとよいでしょう。

FreeDOS を起動するために SystemRescue を使用する

SystemRescue は、FreeDOS から作られています。オリジナルのイメージから置き換えて、ファームウェア更新に必要なプログラムを含むブート可能フラッシュメモリスティックを作成可能です。

SystemRescue のダウンロードと LiveUSBメモリの作成

  • SystemRescue - 通常の ISO イメージをダウンロード

ブート可能なメモリスティックの作成

デフォルトの手段で、SystemRescue の起動ディスクを作成します。usb_inst.sh のスクリプトを実行すれば、インストールの案内があります。

警告
メモリスティック内のデータがすべて消去されます! この作業の前に、メモリスティック内の全てのデータがバックアップ済であることを確かめてください!

/mnt の作成:

root #mkdir /mnt/SysRescue

CD イメージのマウント:

root #mount -o loop systemrescue-x86-VERSION.iso /mnt/SysRescue

インストールスクリプトの実行:

root #/mnt/SysRescue/usb_inst.sh

CD イメージのアンマウント:

root #umount /mnt/SysRescue
メモ
あなたが単に BIOS をアップデートしたいだけなら、SystemRescue の FreeDOS イメージをいじくる必要はありません。前に説明したようにしてブート可能な SystemRescue スティックを作成したら、USB スティックをディレクトリにマウントします。BIOS アップデートをそこにコピーします。これで終わりです! USB スティックでブートして、SystemRescue のスタートアップメニューから DOS tools ---> FREEDOS を選択してください。A: ディレクトリで BIOS アップデートファイルの DOS 用に切り詰められた名前が見つかるはずです。なければ、C: を試してみてください。この方法が USB スティックの SystemRescue インスタンスに害を及ぼすことはないとは思いますが、もしそうなっても、アップデートが終了した後に再作成するのは容易なことです。

FreeDOS イメージの置換

SystemRescue のメモリスティックにあるオリジナルの FreeDOS イメージを置き換えます。

SystemRescue のメモリスティックをマウント (/dev/sdX1 は、実際のメモリスティックのブロックデバイス名に置き換えて読んでください):

root #mount /dev/sdX1 /mnt/SysRescue

freedos.img ファイルの置換:

root #cp freedos.img /mnt/SysRescue/bootdisk/

SystemRescue のメモリスティックのアンマウント:

root #umount /mnt/SysRescue

GRUB から直接に、FreeDOS イメージを起動する

もし外部メディアを使用せずに FreeDOS をブートするならば、syslinux 内の memdisk ツールを利用して、grub (あるいは他のブートローダ)で FreeDOS イメージを直接ブート可能にします。

root #emerge --ask sys-boot/syslinux

(必要ならば)/boot パーティションをマウント:

root #mount /boot

/boot に、memdisk バイナリと FreeDOS イメージをコピー:

root #cp /usr/share/syslinux/memdisk /boot
root #cp freedos.img /boot

/boot/grub/grub.conf を編集し、FreeDOS のエントリを追加:

ファイル /boot/grub/grub.confgrub.conf のエントリ例
title FreeDOS (BIOS update)
kernel /boot/memdisk floppy
initrd /boot/freedos.img

BIOS の更新

マシンを再起動させ、USB メモリスティックあるいは新たな grub エントリを選んで、ブートします。SystemRescue を使用している場合には、GRUB のコマンドラインで以下を入力:

freedos

新たに作成した FreeDOS イメージが起動し、DOS プロンプトが出迎えてくれるでしょう:

C:\>_

そこで、製造業者の説明に従ってBIOSの更新を始めます。ちなみに、DOS では以下のコマンドが役にたちます:

cd <dir>
ディレクトリの変更
dir
現在のディレクトリ内のファイルの一覧表示
type [drive][path]filename
ファイルの内容を表示

flashrom

マザーボードによっては、システム起動中に(sys-apps/flashrom を通じて)直接に更新することができます。この場合に必要なのは BIOS イメージだけです。この場合はまず対応ハードウェアのリストを確認してください。

ハードウェアが対応していれば、新たな BIOS イメージをチェック:

root #flashrom -v W7235IMS.1A0

すべて確認したら、これを書き込みましょう:

root #flashrom -vw W7235IMS.1A0

UEFI ファームウェアカプセル

メモ
x86 では EFI/UEFI は PC BIOS の後継なので、初期の (U)EFI システムでは BIOS 更新のためのものと同じツールがよく使用されていました。

現代的な UEFI では、ファームウェア更新は UEFI カプセルを使用してアップグレードすることができます (UEFI 2.0 で導入されました[1])。この方法は Linux および Windows 上で利用可能です。[2] ベンダが Linux で使用するためのファームウェア更新を提供している必要があり、これは Linux Vendor Firmware Service (LVFS) を介して行われます。[3]

さらなる詳細については fwupd を参照してください。

関連項目

  • BIOS — the standard firmware of IBM-PC-compatible computers until it was phased out in 2020.
  • Bootable DOS USB stick — describes how to prepare a bootable USB stick which loads DOS using tools available in Gentoo.

参照