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. mit efibootmgr oder wie mit cat /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 mit load 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.efi

    https://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 = VS2019

    In der EFI-Shell brauchte ich bisher diese Befehle:
    map -r oder map -u
    connect -r und auch reconnect -r
    Dh -d wobei ich dazu empfehlen würde Dh -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 ich C:\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 von config.txt lässt sich build 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 auf auto 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!


Log in to reply