feat: add to vendor and update docs

This commit is contained in:
2026-06-07 13:41:12 +02:00
parent e56837fc47
commit 9336497c60
2 changed files with 195 additions and 4 deletions
+195 -4
View File
@@ -2,13 +2,204 @@
## 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
BIN
View File
Binary file not shown.