UEFI erkennt SSD an USB nicht
-
Hallo,
Da ich mich gestern den ganzen Tag damit vergeblich befasste, dachte ich frage hier noch.
Also ich habe ein Arch-Linux auf einem 128 GB USB-Stick. Da anscheinend die Datenübertragung des Sticks sehr langsam ist, wurde das ganze System sehr langsam, nehme ich an. Wusste nicht, dass Speichergeräte derart ein Flaschenhals sein können. Also ein virtuelles Linux in VirtualBox war schneller. Der Grund nicht VirtualBox zu verwenden war, dass VirtualBox den CardReader (SD-Karte) meines Laptops nicht erkennen konnte.
Deshalb dachte ich spontan, ich kaufe schnelleren Speicher und kaufte spontan eine SSD mit USB-Anschluss.
Also Voraussetzung, dass UEFI von einem Speichermedium booten kann, ist u.a. eine GPT-Partition (nicht MBR) mit FAT32 angegeben.
Um eine EFI-Shell zu bekommen, genügte es https://github.com/tianocore/edk2/blob/UDK2018/ShellBinPkg/UefiShell/X64/Shell.efi auf die EFI-Partition des Speichersticks zu kopieren und beim booten diese Datei zu starten.
Dies klappte nicht, wenn die Datei auf der EFI-Partition von Windows gestartet wurde.Soweit ich es bemerkt habe, muss die Shell mit X64 kompiliert und gelinkt (gebuildet, erstellt) sein, sonst startete es den "normalen" bootvorgang.Wenn ich Linux vom USB-Speicherstick boote, wird das USB-SSD-Speichermedium erkannt.
Ausgabe von
lsblk -a
lsblk -O
(--output-all)NAME KNAME PATH MAJ:MIN FSAVAIL FSSIZE FSTYPE FSUSED FSUSE% FSVER MOUNTPOINT LABEL UUID PTUUID PTTYPE PARTTYPE PARTTYPENAME PARTLABEL PARTUUID PARTFLAGS RA RO RM HOTPLUG MODEL SERIAL SIZE STATE OWNER GROUP MODE ALIGNMENT MIN-IO OPT-IO PHY-SEC LOG-SEC ROTA SCHED RQ-SIZE TYPE DISC-ALN DISC-GRAN DISC-MAX DISC-ZERO WSAME WWN RAND PKNAME HCTL TRAN SUBSYSTEMS REV VENDOR ZONED sda sda /dev/sda 8:0 36684c6d-61d7-45b1-957e-772c27ff8941 gpt 128 0 0 0 ST1000LM014-1EJ164-SSHD W770WMNR 931.5G running root disk brw-rw---- 0 4096 0 4096 512 1 mq-deadline 64 disk 0 0B 0B 0 0B 0x5000c5007d4d732a 1 0:0:0:0 sata block:scsi:pci HPP1 ATA none ├─sda1 sda1 /dev/sda1 8:1 ntfs Wiederherstellung 4C5CEEF45CEED7AA 36684c6d-61d7-45b1-957e-772c27ff8941 gpt de94bba4-06d1-4d40-a16a-bfd50179d6ac Windows recovery environment Basic data partition 48081067-8bac-441c-ab1b-2136b6a94329 0x8000000000000001 128 0 0 0 450M root disk brw-rw---- 0 4096 0 4096 512 1 mq-deadline 64 part 0 0B 0B 0 0B 0x5000c5007d4d732a 1 sda block:scsi:pci none ├─sda2 sda2 /dev/sda2 8:2 vfat FAT32 02F1-96EB 36684c6d-61d7-45b1-957e-772c27ff8941 gpt c12a7328-f81f-11d2-ba4b-00a0c93ec93b EFI System EFI system partition 4ef696ad-0bfa-4ef9-b511-02364d302c5a 0x8000000000000000 128 0 0 0 100M root disk brw-rw---- 0 4096 0 4096 512 1 mq-deadline 64 part 0 0B 0B 0 0B 0x5000c5007d4d732a 1 sda block:scsi:pci none ├─sda3 sda3 /dev/sda3 8:3 36684c6d-61d7-45b1-957e-772c27ff8941 gpt e3c9e316-0b5c-4db8-817d-f92df00215ae Microsoft reserved Microsoft reserved partition 3c2721f1-d4c7-4940-939d-3af2e9e701dd 0x8000000000000000 128 0 0 0 16M root disk brw-rw---- 0 4096 0 4096 512 1 mq-deadline 64 part 0 0B 0B 0 0B 0x5000c5007d4d732a 1 sda block:scsi:pci none ├─sda4 sda4 /dev/sda4 8:4 ntfs Volume BCDAFC6ADAFC21F6 36684c6d-61d7-45b1-957e-772c27ff8941 gpt ebd0a0a2-b9e5-4433-87c0-68b6b72699c7 Microsoft basic data Basic data partition d0309d54-b516-45f1-abc6-32219633ce1a 128 0 0 0 734.8G root disk brw-rw---- 0 4096 0 4096 512 1 mq-deadline 64 part 0 0B 0B 0 0B 0x5000c5007d4d732a 1 sda block:scsi:pci none ├─sda5 sda5 /dev/sda5 8:5 ntfs Volume 78CC35DCCC35957A 36684c6d-61d7-45b1-957e-772c27ff8941 gpt ebd0a0a2-b9e5-4433-87c0-68b6b72699c7 Microsoft basic data Basic data partition f32bb8e6-9dfa-4ffb-a211-0398e766a322 128 0 0 0 195.3G root disk brw-rw---- 0 4096 0 4096 512 1 mq-deadline 64 part 0 0B 0B 0 0B 0x5000c5007d4d732a 1 sda block:scsi:pci none └─sda6 sda6 /dev/sda6 8:6 ntfs 12EE8877EE8854BF 36684c6d-61d7-45b1-957e-772c27ff8941 gpt de94bba4-06d1-4d40-a16a-bfd50179d6ac Windows recovery environment 12eb51cc-e672-4c34-baae-d1500e6bf3fc 0x8000000000000001 128 0 0 0 916M root disk brw-rw---- 0 4096 0 4096 512 1 mq-deadline 64 part 0 0B 0B 0 0B 0x5000c5007d4d732a 1 sda block:scsi:pci none sdb sdb /dev/sdb 8:16 iso9660 Joliet Extension Debian 10.3.0 amd64 n 2020-02-08-12-10-07-00 40b6a5a7-6d65-46d0-ad7f-98a59bce865c gpt 128 0 1 1 Flash_Disk B1970AC4 117.2G running root disk brw-rw---- 0 512 0 512 512 1 mq-deadline 2 disk 0 0B 0B 0 0B 1 4:0:0:0 usb block:scsi:usb:pci 8.07 Generic none ├─sdb1 sdb1 /dev/sdb1 8:17 91G 113.9G ext4 17.1G 15% 1.0 / 82423e3e-8f12-4f39-bf72-5ce4c1312a99 40b6a5a7-6d65-46d0-ad7f-98a59bce865c gpt 0fc63daf-8483-4772-8e79-3d69d8477de4 Linux filesystem linux 7eb1af36-78ae-466e-8789-aa0cabe26930 128 0 1 1 116.2G root disk brw-rw---- 0 512 0 512 512 1 mq-deadline 2 part 0 0B 0B 0 0B 1 sdb block:scsi:usb:pci none └─sdb2 sdb2 /dev/sdb2 8:18 973.4M 1022M vfat 48.6M 5% FAT32 /boot 8FAB-AB22 40b6a5a7-6d65-46d0-ad7f-98a59bce865c gpt c12a7328-f81f-11d2-ba4b-00a0c93ec93b EFI System efi_boot ba303d18-32b3-4627-b1a5-233bb8f0414a 128 0 1 1 1G root disk brw-rw---- 0 512 0 512 512 1 mq-deadline 2 part 0 0B 0B 0 0B 1 sdb block:scsi:usb:pci none sdc sdc /dev/sdc 8:32 bb475823-7dcb-469f-9f85-f022a65b4292 gpt 128 0 0 1 Extreme_SSD 31393439364D343030373434 931.5G running root disk brw-rw---- 0 512 33553920 512 512 0 mq-deadline 60 disk 0 0B 0B 0 32M 0 5:0:0:0 usb block:scsi:usb:pci 0111 SanDisk none ├─sdc1 sdc1 /dev/sdc1 8:33 vfat FAT32 08A0-4851 bb475823-7dcb-469f-9f85-f022a65b4292 gpt c12a7328-f81f-11d2-ba4b-00a0c93ec93b EFI System efi_boot fca17704-e13f-418e-825e-0dd766f58867 128 0 0 1 1G root disk brw-rw---- 0 512 33553920 512 512 0 mq-deadline 60 part 0 0B 0B 0 32M 0 sdc block:scsi:usb:pci none └─sdc2 sdc2 /dev/sdc2 8:34 ext4 1.0 44a0eb26-1664-4fb9-8df0-29d6e9b0019a bb475823-7dcb-469f-9f85-f022a65b4292 gpt 0fc63daf-8483-4772-8e79-3d69d8477de4 Linux filesystem linux f828596d-6f5a-4741-9716-866f31db82ba 128 0 0 1 250G root disk brw-rw---- 0 512 33553920 512 512 0 mq-deadline 60 part 0 0B 0B 0 32M 0 sdc block:scsi:usb:pci none sr0 sr0 /dev/sr0 11:0 128 0 1 1 hp_DVDRW_DU8A6SH 4C6504932323 1024M running root optical brw-rw---- 0 512 0 512 512 1 mq-deadline 64 rom 0 0B 0B 0 0B 0 1:0:0:0 sata block:scsi:pci DH61 hp none
Weiss jemand wie UEFI das Laufwerk erkennen kann?
Vielen Dank im voraus
-
Ausgabe von
map > mapout.txt
in der EFI-Shell:Mapping table FS0: Alias(s):HD0a0c:;BLK2: PciRoot(0x0)/Pci(0x14,0x0)/USB(0x0,0x0)/HD(2,GPT,BA303D18-32B3-4627-B1A5-233BB8F0414A,0x800,0x200000) FS1: Alias(s):HD1a0a1:;BLK4: PciRoot(0x0)/Pci(0x1F,0x2)/Sata(0x0,0x0,0x0)/HD(1,GPT,4EF696AD-0BFA-4EF9-B511-02364D302C5A,0xE1800,0x32000) BLK0: Alias(s): PciRoot(0x0)/Pci(0x14,0x0)/USB(0x0,0x0) BLK1: Alias(s): PciRoot(0x0)/Pci(0x14,0x0)/USB(0x0,0x0)/HD(1,GPT,7EB1AF36-78AE-466E-8789-AA0CABE26930,0x200800,0xE85F7DF) BLK3: Alias(s): PciRoot(0x0)/Pci(0x1F,0x2)/Sata(0x0,0x0,0x0) BLK5: Alias(s): PciRoot(0x0)/Pci(0x1F,0x2)/Sata(0x0,0x0,0x0)/HD(2,GPT,3C2721F1-D4C7-4940-939D-3AF2E9E701DD,0x113800,0x8000) BLK6: Alias(s): PciRoot(0x0)/Pci(0x1F,0x2)/Sata(0x0,0x0,0x0)/HD(3,GPT,D0309D54-B516-45F1-ABC6-32219633CE1A,0x11B800,0x5BD80648) BLK7: Alias(s): PciRoot(0x0)/Pci(0x1F,0x2)/Sata(0x0,0x0,0x0)/HD(4,GPT,F32BB8E6-9DFA-4FFB-A211-0398E766A322,0x5BE9C000,0x1869F800) BLK8: Alias(s): PciRoot(0x0)/Pci(0x1F,0x2)/Sata(0x0,0x0,0x0)/HD(5,GPT,12EB51CC-E672-4C34-BAAE-D1500E6BF3FC,0x7453C000,0x1CA000) BLK9: Alias(s): PciRoot(0x0)/Pci(0x1F,0x2)/Sata(0x1,0x0,0x0)
Ausgabe von
devtree > devtreeout.txt
in der EFI-Shell:Ctrl[04] MemoryMapped(0xB,0xFFAEE000,0xFFE5CFFF) Ctrl[05] MemoryMapped(0xB,0xFFA40000,0xFFA77FFF) Ctrl[06] MemoryMapped(0xB,0x8A0D8000,0x8A8A4FFF) Ctrl[75] MemoryMapped(0xB,0xFFA00000,0xFFFFFFFF) Ctrl[80] PciRoot(0x0) Ctrl[199] PciRoot(0x0)/Pci(0x0,0x0) Ctrl[19A] Intel(R) Graphics Controller Ctrl[1AD] EDP1 Ctrl[163] Primary Console Output Device Ctrl[19B] PciRoot(0x0)/Pci(0x3,0x0) Ctrl[19C] Usb eXtensible Host Controller Ctrl[1AE] Generic Usb Mouse Ctrl[162] Primary Simple Pointer Device Ctrl[1B7] Generic Flash Disk Ctrl[1B8] PciRoot(0x0)/Pci(0x14,0x0)/USB(0x0,0x0)/HD(1,GPT,7EB1AF36-78AE-466E-8789-AA0CABE26930,0x200800,0xE85F7DF) Ctrl[1B9] FAT File System Ctrl[19D] PciRoot(0x0)/Pci(0x16,0x0) Ctrl[19E] PciRoot(0x0)/Pci(0x16,0x1) Ctrl[19F] PciRoot(0x0)/Pci(0x1B,0x0) Ctrl[1A0] PciRoot(0x0)/Pci(0x1C,0x0) Ctrl[1A1] PciRoot(0x0)/Pci(0x1C,0x1) Ctrl[1A2] PciRoot(0x0)/Pci(0x1C,0x1)/Pci(0x0,0x0) Ctrl[1A3] PciRoot(0x0)/Pci(0x1C,0x2) Ctrl[1A4] PciRoot(0x0)/Pci(0x1C,0x2)/Pci(0x0,0x0) Ctrl[1A5] PciRoot(0x0)/Pci(0x1C,0x3) Ctrl[1A6] PciRoot(0x0)/Pci(0x1C,0x3)/Pci(0x0,0x0) Ctrl[1A7] PciRoot(0x0)/Pci(0x1C,0x4) Ctrl[1A8] PciRoot(0x0)/Pci(0x1C,0x4)/Pci(0x0,0x0) Ctrl[1A9] PciRoot(0x0)/Pci(0x1F,0x0) Ctrl[1AF] PS/2 Keyboard Device Ctrl[162] Primary Simple Pointer Device Ctrl[1B0] PS/2 Mouse Device Ctrl[162] Primary Simple Pointer Device Ctrl[1B1] PciRoot(0x0)/Pci(0x1F,0x0)/Serial(0x0) Ctrl[1B2] PciRoot(0x0)/Pci(0x1F,0x0)/Serial(0x1) Ctrl[1B3] PciRoot(0x0)/Pci(0x1F,0x0)/Acpi(PNP0200,0x0) Ctrl[1AA] PCH Serial ATA Controller Ctrl[1BC] PCH Serial ATA Controller Ctrl[1BD] FAT File System Ctrl[1BE] PciRoot(0x0)/Pci(0x1F,0x2)/Sata(0x0,0x0,0x0)/HD(2,GPT,3C2721F1-D4C7-4940-939D-3AF2E9E701DD,0x113800,0x8000) Ctrl[1BF] PciRoot(0x0)/Pci(0x1F,0x2)/Sata(0x0,0x0,0x0)/HD(3,GPT,D0309D54-B516-45F1-ABC6-32219633CE1A,0x11B800,0x5BD80648) Ctrl[1C0] PciRoot(0x0)/Pci(0x1F,0x2)/Sata(0x0,0x0,0x0)/HD(4,GPT,F32BB8E6-9DFA-4FFB-A211-0398E766A322,0x5BE9C000,0x1869F800) Ctrl[1C1] PciRoot(0x0)/Pci(0x1F,0x2)/Sata(0x0,0x0,0x0)/HD(5,GPT,12EB51CC-E672-4C34-BAAE-D1500E6BF3FC,0x7453C000,0x1CA000) Ctrl[1C4] PCH Serial ATA Controller Ctrl[1AB] PciRoot(0x0)/Pci(0x1F,0x3) Ctrl[88] VenHw(2A3DB560-D8EA-4CF6-B74B-D0694986FD6D) Ctrl[120] VenHw(0F0B1735-87A0-4193-B266-538C38AF48CE,00000000187F668E00000000) Ctrl[194] VenHw(3EBFA8E6-511D-4B5B-A95F-FB38260F1C27) Ctrl[195] VenHw(F76E0A70-B5ED-4C38-AC9A-E5F54BF16E34) Ctrl[196] VenHw(847BC3FE-B974-446D-9449-5AD5412E993B) Ctrl[197] VenHw(AA1305B9-01F3-4AFB-920E-C9B979A852FD) Ctrl[198] VenHw(9E0C30BC-3F06-4BA6-8288-09179B855DBE) Ctrl[1C8] VenHw(642237C7-35D4-472D-8365-12E0CCF27A22) Ctrl[1C9] VenHw(1F2D63E1-FEBD-4DC7-9CC5-BA2B1CEF9C5B)
Also wenn z.B. der Speicherstick oder sogar die Maus angeschlossen oder nicht angeschlossen ist, dann ändert sich auch die Ausgabe entsprechend. Ausser beim USB-SSD-Speichermedium.
Edit: Kurz habe ich noch versucht zu schauen, ob ein anderer Speicherstick (ohne GPT und EFI-Partition) von UEFI erkannt wird. Und tatsächlich wurde er erkannt.
-
Also weiss jemand wo der Grund liegt und wie sich das Problem lösen lässt?Hat die SSD zu viel Speicherkapazität? Wenn ja, ist irgendwo eine betreffende Variable die sich z.B. mitefibootmgr
oder wie mitcat /sys/firmware/efi/fw_platform_size
abrufen oder gar ändern lässt? EFISTUB, Unified_Extensible_Firmware_Interface
Werden USB-SSD sowieso nicht erkannt? Oder ist an meine USB-SSD irgendetwas anders oder speziell?
Ist das UEFI verbauten in einem ROM oder Flash-Speicher im Laptop?
Ist eine "workaround" mit der EFI-Shell möglich? (Also zum Beispiel stiess ich auf driver für filesystem https://efi.akeo.ie/)
-
Update: Es hat glaube ich noch mit NVMe zu tun.
Fand zwar noch www.win-raid.com und unter www.win-raid.com einen UEFI-Treiber (NvmExpressDxe-64.efi) der sich mitload
in der EFI-Shell auch laden liess, brachte aber gar nichts, das Laufwerk wurde trotzdem nicht erkannt.Zudem hätte ich genauer lesen sollen, da es sich bei Clover um ein Bootloader-Programm handelt, das auf mich einen dubiosen Eindruck macht. Um an den Treiber zu kommen, musste ich zuerst ein russisches Programm ausführen.https://www.insyde.com/press_news/blog/uefi-24-review-part-8-nvme-device-paths
Habe inzwischen NvmExpressDxe.efi gemäss Erstellungs-Anleitung erstellt, auf die EFI-Partition kopiert und die EFI-Shell geladen und mit
load NvmExpressDxe.efi
den Treiber geladen. (Reicht anscheinend bei meinem Laptop nicht aus, um das SSD zu erkennen).
https://github.com/tianocore/edk2/tree/master/MdeModulePkg/Bus/Pci/NvmExpressDxe
https://github.com/tianocore/edk2/blob/UDK2018/ShellBinPkg/UefiShell/X64/Shell.efihttps://github.com/tianocore/tianocore.github.io/wiki/Getting-Started-with-EDK-II
https://github.com/tianocore/tianocore.github.io/wiki/UDK2018@titan99_ sagte in UEFI erkennt SSD an USB nicht:
Um eine EFI-Shell zu bekommen, genügte es Shell.efi auf die EFI-Partition des Speichersticks zu kopieren und beim booten diese Datei zu starten.
Dies klappte nicht, wenn die Datei auf der EFI-Partition von Windows gestartet wurde.Es klappte auf einmal auch in die Shell zu gelangen, wenn ich die Shell.efi Datei von der Windows-EFI-Partition ladete. Beim letzten mal wurde einfach Windows gestartet oder ich habe irgendetwas verwechselt. Anders ist noch zusätzlich, dass ich über aur uefi-shell-git die Shell kompilierte.Soweit ich es bemerkt habe, muss die Shell mit X64 kompiliert und gelinkt (gebuildet, erstellt) sein, sonst startete es den "normalen" bootvorgang.
Also beim erstellen von EDK II wird ein Conf Verzeichnis angelegt. Dort gibt es die Datei
target.txt
. Dort lässt sich das Target (ACTIVE_PLATFORM) wählen (relativer Pfad zu *.dsc Datei),
TARGET = RELEASE
TARGET_ARCH = X64
#TOOL_CHAIN_TAG = VS2015x86
TOOL_CHAIN_TAG = VS2019In der EFI-Shell brauchte ich bisher diese Befehle:
map -r
odermap -u
connect -r
und auchreconnect -r
Dh -d
wobei ich dazu empfehlen würdeDh -d > dhoutput.txt
zu verwenden und die Datei später aus der EFI-Partition zu holen.
load
(unload
gibt es glaube ich auch noch)
drivers
,devices
,devtree
Dazu braucht es u. a. NASM Assembler. (Machte zuerst Fehler bei
C:\edk2\> set NASM_PREFIX=C:\nasm\
da ichC:\edk2\> set NASM_PREFIX=C:\nasm
(fehlendes backslash) tippte, was dann zu einem Fehler führte. Beim Anschauen der Fehlermeldung ist mir dann aber aufgefallen, dass anscheinend ein backslash fehlt und Leerräume darf es glaube ich auch keine haben. Habe eine *.bat geschrieben, mit weiterem.Nachdem Ausführen von
edksetup.bat
und dem anschliessenden Anpassen vonconfig.txt
lässt sichbuild
ausführen. Macht aber Fehlermeldung. Ja..
edksetup.bat Rebuild
muss noch ausgeführt werden. Macht immer noch Fehlermeldung, aber mit#ACTIVE_PLATFORM = EmulatorPkg/EmulatorPkg.dsc ACTIVE_PLATFORM = MdeModulePkg/MdeModulePkg.dsc
Kam keine Fehlermeldung.
-
Habe alles viel zu kompliziert gemacht. Habe die BIOS/UEFI-Einstellung
USB3.0 Configuration in Pre-OS
aufauto
gestellt, also auf USB2.0 oder so etwas. Jetzt erkennt UEFI das USB-SSD Laufwerk ohne dass ich einen Treiber laden musste. Werde später es in der EFI-Shell nochmals anschauen versuchen, wie es eingebunden wurde. Also ein xHCI-Treiber hatte es glaube ich zwar, aber Hauptsache es geht jetzt!