feat: add to vendor and update docs
This commit is contained in:
@@ -2,13 +2,204 @@
|
|||||||
|
|
||||||
## Update firmware to specific version
|
## Update firmware to specific version
|
||||||
|
|
||||||
1- Download frimware version: [n24ur39w](https://download.lenovo.com/pccbbs/mobiles/n24ur39w.iso) or download from vendor
|
This section explains how to convert a vendor BIOS update `.iso` into a bootable USB image using `geteltorito`, and then write that generated `.img` to a USB drive using `dd`.
|
||||||
|
|
||||||
2- Install `[geteltorito](https://github.com/rainer042/geteltorito)`
|
> **WARNING**
|
||||||
|
>
|
||||||
|
> The `dd` command will completely overwrite the selected USB device.
|
||||||
|
> Always write to the whole USB disk, for example `/dev/sdb`, **not** to a partition such as `/dev/sdb1`.
|
||||||
|
> Double-check the target device before running `dd`.
|
||||||
|
|
||||||
3- Generate .img from .iso `geteltorito -o t480_bios_n24ur39w.img /home/lb/Downloads/n24ur40w.iso`.
|
### 1- Download the vendor BIOS update ISO
|
||||||
|
|
||||||
4- Flash iso to USB `sudo dd if=t480_bios_n24ur39w.img of=/dev/sdX bs=4M conv=fsync status=progress`
|
Download the required firmware version from Lenovo or from the vendor support page.
|
||||||
|
|
||||||
|
Example for ThinkPad T480:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
mkdir -p ~/Downloads/firmware/t480
|
||||||
|
cd ~/Downloads/firmware/t480
|
||||||
|
|
||||||
|
wget https://download.lenovo.com/pccbbs/mobiles/n24ur39w.iso
|
||||||
|
```
|
||||||
|
|
||||||
|
If you downloaded a different version, adjust the ISO filename in the following commands.
|
||||||
|
|
||||||
|
### 2- Install `geteltorito`
|
||||||
|
|
||||||
|
`geteltorito` extracts the El Torito boot image from a bootable vendor ISO.
|
||||||
|
|
||||||
|
#### Debian / Ubuntu / Linux Mint
|
||||||
|
|
||||||
|
On Debian-based systems, `geteltorito` is provided by the `genisoimage` package:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
sudo apt update
|
||||||
|
sudo apt install genisoimage
|
||||||
|
```
|
||||||
|
|
||||||
|
Check that it is available:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
command -v geteltorito
|
||||||
|
geteltorito --help || true
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Arch / Manjaro
|
||||||
|
|
||||||
|
On Arch-based systems, install it from the AUR:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
yay -S geteltorito
|
||||||
|
```
|
||||||
|
|
||||||
|
or:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
paru -S geteltorito
|
||||||
|
```
|
||||||
|
|
||||||
|
Without an AUR helper:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
cd /tmp
|
||||||
|
git clone https://aur.archlinux.org/geteltorito.git
|
||||||
|
cd geteltorito
|
||||||
|
makepkg -si
|
||||||
|
```
|
||||||
|
|
||||||
|
Depending on the package, the command may be installed as `geteltorito` or `geteltorito.pl`. Check which one exists:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
command -v geteltorito || command -v geteltorito.pl
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3- Extract the bootable `.img` from the vendor `.iso`
|
||||||
|
|
||||||
|
Go to the folder where the ISO was downloaded:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
cd ~/Downloads/firmware/t480
|
||||||
|
```
|
||||||
|
|
||||||
|
If your system provides the command as `geteltorito`:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
geteltorito -o t480_bios_n24ur39w.img n24ur39w.iso
|
||||||
|
```
|
||||||
|
|
||||||
|
If your system provides the command as `geteltorito.pl`:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
geteltorito.pl -o t480_bios_n24ur39w.img n24ur39w.iso
|
||||||
|
```
|
||||||
|
|
||||||
|
Verify that the `.img` file was created:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
ls -lh n24ur39w.iso t480_bios_n24ur39w.img
|
||||||
|
file t480_bios_n24ur39w.img
|
||||||
|
```
|
||||||
|
|
||||||
|
### 4- Insert the USB and identify the correct device
|
||||||
|
|
||||||
|
Insert the USB drive and run:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
lsblk -o NAME,SIZE,MODEL,TRAN,FSTYPE,MOUNTPOINTS
|
||||||
|
```
|
||||||
|
|
||||||
|
Example output:
|
||||||
|
|
||||||
|
```text
|
||||||
|
NAME SIZE MODEL TRAN FSTYPE MOUNTPOINTS
|
||||||
|
sda 476.9G Samsung SSD sata /
|
||||||
|
sdb 14.6G USB Flash Disk usb vfat /run/media/user/USB
|
||||||
|
```
|
||||||
|
|
||||||
|
In this example, the USB is:
|
||||||
|
|
||||||
|
```text
|
||||||
|
/dev/sdb
|
||||||
|
```
|
||||||
|
|
||||||
|
Do **not** use the internal disk. Do **not** use a partition like `/dev/sdb1`.
|
||||||
|
|
||||||
|
Set a variable with the USB disk you identified:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
USB=/dev/sdX
|
||||||
|
```
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
USB=/dev/sdb
|
||||||
|
```
|
||||||
|
|
||||||
|
### 5- Unmount all mounted USB partitions
|
||||||
|
|
||||||
|
Before writing the image, unmount any mounted partitions from the USB:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
lsblk "$USB"
|
||||||
|
sudo umount "${USB}"* 2>/dev/null || true
|
||||||
|
```
|
||||||
|
|
||||||
|
### 6- Prepare / wipe the USB before flashing the image
|
||||||
|
|
||||||
|
For an image generated by `geteltorito`, you do **not** need to format the USB as FAT32, exFAT or ext4.
|
||||||
|
|
||||||
|
The correct preparation is to remove old filesystem signatures and partition metadata so the firmware image can be written cleanly with `dd`.
|
||||||
|
|
||||||
|
Recommended:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
sudo wipefs -a "$USB"
|
||||||
|
```
|
||||||
|
|
||||||
|
Optional stronger wipe of the first part of the USB:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
sudo dd if=/dev/zero of="$USB" bs=1M count=16 status=progress conv=fsync
|
||||||
|
sudo blockdev --rereadpt "$USB" || true
|
||||||
|
```
|
||||||
|
|
||||||
|
If `blockdev --rereadpt` fails because the device is busy, unplug and reinsert the USB, then set `USB=/dev/sdX` again after checking with `lsblk`.
|
||||||
|
|
||||||
|
### 7- Flash the generated `.img` to the USB with `dd`
|
||||||
|
|
||||||
|
Write the `.img` to the **whole USB disk**:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
sudo dd if=t480_bios_n24ur39w.img of="$USB" bs=4M status=progress conv=fsync
|
||||||
|
sync
|
||||||
|
```
|
||||||
|
|
||||||
|
Alternative using `oflag=sync`:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
sudo dd if=t480_bios_n24ur39w.img of="$USB" bs=4M status=progress oflag=sync
|
||||||
|
sync
|
||||||
|
```
|
||||||
|
|
||||||
|
### 8- Verify and eject the USB
|
||||||
|
|
||||||
|
Check how the USB looks after writing:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
lsblk -o NAME,SIZE,MODEL,TRAN,FSTYPE,MOUNTPOINTS "$USB"
|
||||||
|
```
|
||||||
|
|
||||||
|
Eject it safely:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
sudo eject "$USB"
|
||||||
|
```
|
||||||
|
|
||||||
|
The USB should now be bootable. Insert it into the ThinkPad, boot from USB, and follow the vendor BIOS update instructions.
|
||||||
|
|
||||||
|
On many ThinkPads, press `F12` during boot to open the boot menu.
|
||||||
|
|
||||||
## Prepare flahser
|
## Prepare flahser
|
||||||
|
|
||||||
|
|||||||
Vendored
BIN
Binary file not shown.
Reference in New Issue
Block a user