BIOS: add OptiPlex 7080 (1.37.0)
Models.txt entry maps "7080" substring (matches WMI csproduct name "OptiPlex 7080") to OptiPlex_7080_1.37.0.exe. BIOS .exe already deployed to /srv/samba/winpeapps/_shared/BIOS/ on the live PXE server via download-drivers.py. Also adds docs/geastandardpbr-overrides.md tracking the local geastandardpbr/ edits (user_selections.json + HardwareDriver.json get a 7080 entry under "D11 OptiPlex Family") that the gitignore prevents from being tracked directly. Includes a Python snippet to idempotently re-apply after a fresh USB import. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
111
docs/geastandardpbr-overrides.md
Normal file
111
docs/geastandardpbr-overrides.md
Normal file
@@ -0,0 +1,111 @@
|
||||
# geastandardpbr/ overrides
|
||||
|
||||
`geastandardpbr/` is gitignored (USB-imported GE deployment package). Edits made
|
||||
locally to support new hardware models do not survive a fresh import.
|
||||
|
||||
This file tracks the local edits so they can be re-applied after a re-import.
|
||||
Apply by hand or via the snippet at the bottom.
|
||||
|
||||
## OptiPlex 7080 (added 2026-05-08)
|
||||
|
||||
Reason: a 7080 arrived on the floor; check-bios.cmd was returning
|
||||
"no update in catalog" because no 7080 entry existed in the catalog files.
|
||||
|
||||
### `geastandardpbr/Tools/user_selections.json`
|
||||
|
||||
Add to `HardwareModelSelection` (insert before the existing `7090 / D12 OptiPlex Family` entry):
|
||||
|
||||
```json
|
||||
{
|
||||
"Model": "7080",
|
||||
"Id": "D11 OptiPlex Family"
|
||||
}
|
||||
```
|
||||
|
||||
### `geastandardpbr/Deploy/Control/HardwareDriver.json`
|
||||
|
||||
Add a new entry (insert before the existing `D12 OptiPlex Family / 7090` entry):
|
||||
|
||||
```json
|
||||
{
|
||||
"manufacturer": "Dell",
|
||||
"manufacturerfriendlyname": "Dell",
|
||||
"family": "D11 OptiPlex Family",
|
||||
"models": "OptiPlex 7080",
|
||||
"modelsfriendlyname": "7080",
|
||||
"FileName": "",
|
||||
"DestinationDir": "*destinationdir*\\Deploy\\Out-of-box Drivers\\Dell_11\\OptiPlex\\D11 OptiPlex Family",
|
||||
"url": "",
|
||||
"hash": "",
|
||||
"size": 0,
|
||||
"modifiedDate": "0001-01-01T00:00:00",
|
||||
"osId": "20,21",
|
||||
"aOsIds": [
|
||||
"20",
|
||||
"21"
|
||||
],
|
||||
"imagedisk": 0
|
||||
}
|
||||
```
|
||||
|
||||
`FileName`, `url`, `hash`, `size` left empty. `scripts/download-drivers.py` resolves
|
||||
the actual driver pack from Dell's catalog by model name (`extract_model_ids`
|
||||
matches "7080") and downloads the latest pack at run time.
|
||||
|
||||
### Side artifacts already on the live PXE server (10.9.100.1)
|
||||
|
||||
- `\\10.9.100.1\winpeapps\_shared\BIOS\OptiPlex_7080_1.37.0.exe` (39.8 MB, BIOS update)
|
||||
- `\\10.9.100.1\image-upload\Deploy\Out-of-box Drivers\Dell_11\OptiPlex\D11 OptiPlex Family\win11_70809ntr8_a09.zip` (Win11 driver pack, 2.6 GB)
|
||||
- `\\10.9.100.1\winpeapps\_shared\BIOS\models.txt` includes the 7080 line.
|
||||
|
||||
These persist regardless of `geastandardpbr/` rebuilds. Only the model-registry
|
||||
edits need to be re-applied after a USB re-import.
|
||||
|
||||
## Re-applying after a fresh `geastandardpbr/` import
|
||||
|
||||
Either edit the two JSON files by hand following the snippets above, or run:
|
||||
|
||||
```bash
|
||||
cd /home/camp/projects/pxe
|
||||
python3 - <<'PY'
|
||||
import json, sys
|
||||
us = 'geastandardpbr/Tools/user_selections.json'
|
||||
hd = 'geastandardpbr/Deploy/Control/HardwareDriver.json'
|
||||
|
||||
data = json.load(open(us))
|
||||
add = {"Model": "7080", "Id": "D11 OptiPlex Family"}
|
||||
for d in data:
|
||||
if "HardwareModelSelection" in d:
|
||||
if not any(m.get("Model") == "7080" for m in d["HardwareModelSelection"]):
|
||||
for i, m in enumerate(d["HardwareModelSelection"]):
|
||||
if m.get("Id") == "D12 OptiPlex Family":
|
||||
d["HardwareModelSelection"].insert(i, add)
|
||||
break
|
||||
json.dump(data, open(us, 'w'), indent=2)
|
||||
|
||||
data = json.load(open(hd))
|
||||
add = {
|
||||
"manufacturer": "Dell",
|
||||
"manufacturerfriendlyname": "Dell",
|
||||
"family": "D11 OptiPlex Family",
|
||||
"models": "OptiPlex 7080",
|
||||
"modelsfriendlyname": "7080",
|
||||
"FileName": "",
|
||||
"DestinationDir": "*destinationdir*\\Deploy\\Out-of-box Drivers\\Dell_11\\OptiPlex\\D11 OptiPlex Family",
|
||||
"url": "",
|
||||
"hash": "",
|
||||
"size": 0,
|
||||
"modifiedDate": "0001-01-01T00:00:00",
|
||||
"osId": "20,21",
|
||||
"aOsIds": ["20", "21"],
|
||||
"imagedisk": 0
|
||||
}
|
||||
if not any(e.get("models") == "OptiPlex 7080" for e in data):
|
||||
for i, e in enumerate(data):
|
||||
if e.get("family") == "D12 OptiPlex Family" and e.get("models") == "7090":
|
||||
data.insert(i, add)
|
||||
break
|
||||
json.dump(data, open(hd, 'w'), indent=2)
|
||||
print("done")
|
||||
PY
|
||||
```
|
||||
@@ -6,6 +6,7 @@
|
||||
16 Plus MB16250|Dell_Pro_Max_MB16250_MB18250_2.2.2.exe|2.2.2
|
||||
24250|Dell_Pro_Plus_QB24250_QC24250_QC24251_1.9.2.exe|1.9.2
|
||||
5430|Latitude_5430_7330_Rugged_1.41.0.exe|1.41.0
|
||||
7080|OptiPlex_7080_1.37.0.exe|1.37.0
|
||||
7090|OptiPlex_7090_1.40.0.exe|1.40.0
|
||||
7220 Rugged|Latitude_7220_Rugged_Extreme_Tablet_1.50.0.exe|1.50.0
|
||||
7230 Rugged Extreme Tablet|Latitude_7230_1.30.1.exe|1.30.1
|
||||
@@ -24,7 +25,9 @@ Latitude 5540|Precision_5540_1.42.0.exe|1.42.0
|
||||
Latitude 7430|Latitude_7X30_1.38.0.exe|1.38.0
|
||||
Latitude 7440|Latitude_7X40_1.28.1.exe|1.28.1
|
||||
Latitude 7450|OptiPlex_7450_1.34.0.exe|1.34.0
|
||||
Micro 7010|OptiPlex_7010_1.33.0_SEMB.exe|1.33.0
|
||||
Micro 7010|OptiPlex_7010_1.34.0_SEMB.exe|1.34.0
|
||||
SFF Plus 7010|OptiPlex_7010_1.34.0_SEMB.exe|1.34.0
|
||||
Tower Plus 7010|OptiPlex_7010_1.34.0_SEMB.exe|1.34.0
|
||||
Micro QCM1250|Dell_Pro_QBT1250_QBS1250_QBM1250_QCT1250_QCS1250_QCM1250_SEMB_1.12.2.exe|1.12.2
|
||||
OptiPlex 3000|OptiPlex_3000_1.38.0.exe|1.38.0
|
||||
OptiPlex 7000|OptiPlex_7000_1.38.0.exe|1.38.0
|
||||
|
||||
Reference in New Issue
Block a user