Vraag Boot Ubuntu vanaf externe USB HDD op Retina MacBookPro 2015


Ik heb Ubuntu 15.04 / x86_64 geïnstalleerd op een externe USB HDD, de schijf heeft een GUID-partitietabel en de Ubuntu is geïnstalleerd met EFI bootmanager.

Ik kan de USB HDD met succes opstarten op sommige Windows-pc's in de UEFI-modus, maar deze werkt niet op mijn nieuwe Retina MacBook Pro 2015-model (MacBookPro11,5), wanneer ik de computer opnieuw opstart met de "Option" -toets ingedrukt, het opstartitem kwam gewoon niet opdagen.

Het is een beetje raar dat mijn RMBP UEFI 2.0 ondersteunt, het kan Windows8 / 10 opstarten vanaf een externe HDD in EFI-modus. Ik heb geen idee waarom Ubuntu niet werkt.


1
2017-07-20 16:46


oorsprong


Ik ken Mac niet. Maar Ubuntu op een pc installeert alleen bootloaders om als sda gezien te worden. Ik heb geprobeerd te installeren op een ESP op mijn sdb-station en zegt dat het naar sdb installeert, maar overschrijft mijn / efi / ubuntu-map in sda. Heeft u een / EFI / ubuntu-map op uw externe schijf? En externe schijven in UEFI gebruiken /EFI/Boot/bootx64.efi. Dat bestand is mogelijk een kopie van Windows eigen /EFI/Microsoft/Boot/bootmfgw.efi-bestand. U kunt shimx64.efi kopiëren naar / EFI / Boot en de naam ervan wijzigen in bootx64.efi. Maar het zal een kleine grub.cfg in / EFI / ubuntu gebruiken, wat slechts een configuratiebestand is om de echte grub.cfg in je installatie te vinden. - oldfred
Dit is het verwachte gedrag. Wanneer u de optietoets ingedrukt houdt tijdens het opstarten, kijkt de firmware niet naar de EFI-partitie. Een reden is dat deze partitie FAT-geformatteerd is. Een andere, is dat de bestanden en mappen de verkeerde namen en mapstructuur hebben. - David Anderson
Als een persoon die al ubuntu op een externe schijf op een Mac heeft geïnstalleerd, wil ik je vragen: Hoe kun je ubuntu opstarten? Wil je Grub 2 gebruiken of direct opstarten naar ubuntu? Wilt u rEFInd gebruiken als opstartmanager? Wil je gewoon gebruiken bless om te schakelen tussen opstarten en ubuntu? Het is geen kwestie van hoe het moet, maar op welke manier heeft u de voorkeur. - David Anderson
@DavidAnderson, ik wil gewoon een EFI Ubuntu-installatie opstarten die ik heb gemaakt op een andere machine op een externe USB HDD, ik wil me niet bezig houden met rEFIt of rEFInd. - Windoze
AFAIK, geen Mac ondersteunt EFI 2.x (ook bekend als UEFI). Dit is verwarrend omdat het interne versienummer van Apple de 2.0 overschrijdt, maar op veel gebieden blijft het de EFI 1.x-normen volgen, dus het is niet echt EFI 2.x / UEFI. Ik heb een MacBook Air van eind 2014 met firmware die zichzelf als "Apple 1.10" meldt. Dat gezegd hebbende, heeft Apple sommige EFI 2.x / UEFI-functies opgenomen in zijn firmware, dus het is echt iets van een hybride. - Rod Smith


antwoorden:


Wanneer Windows 10 - 64 bit opstart in de EFI-modus, bevindt het bestand waarin de firmware wordt geladen zich op /EFI/BOOT/bootx64.efi in de verborgen EFI-partitie. In principe ben je verhuisd en heb je grub 2 hernoemd naar deze locatie en naam. Je Mac denkt dat het Windows opstart, terwijl het eigenlijk boot grub 2 is. Dit komt niet omdat je een nieuw Retina MacBook Pro 2015-model hebt (MacBookPro11,5). Dit werkt ook voor mij en ik heb een iMac 2007-model (iMac7,1).

Update 1:

Ik geef toe dat de bovenstaande post slecht is geformuleerd. Toen ik refereerde aan Windows 10, keek ik naar een installatie in EFI-modus met behulp van VirtualBox op mijn 2007 iMac. Rod's opmerking is correct, beide EFI/BOOT/bootx64.efi en EFI/Microsoft/Boot/bootmgfw.efi bestaan ​​en zijn identiek. Ik weet niet zeker welk bestand VirtualBox gebruikt om de virtuele machine op te starten.

Ik heb Windows 8.1 - 64 bit geïnstalleerd op mijn iMac, ook al is de website van Apple "Systeemvereisten om Windows op uw Mac te installeren met Boot Camp"geeft alleen Windows 7 - 32 bit aan. Deze installatie maakt gebruik van het oude BIOS / MBR-schema.

Het punt dat ik probeerde te maken was dat Windoze's oplossing om Ubuntu op te starten (via GRUB 2) niets te maken heeft met het hebben van een UEFI-compatibele Mac. Ik heb zijn methode met succes getest om Ubuntu te starten die op mijn interne harde schijf is geïnstalleerd. Dit feit is interessant voor andere Mac-gebruikers.

Wat betreft een gedetailleerde uitleg van waarom deze methode werkt voor Windoze's geval, verwijs ik naar de Uniform Uitbreidbare Firmware-interface Specificatie, Versie 2.5, april 2015. Sectie 3.5.1.1 Bootgedrag verwijderbare media, op pagina's 88-89, specificeert voor de x64-architectuur die de firmware zal proberen op te starten vanaf verwijderbare media met behulp van het bestand op \EFI\BOOT\BOOTx64.EFI.

Update 2:

Dit is het antwoord op Ron's opmerking dat Mac's niet compatibel zijn met UEFI.

Bij het bepalen of een Mac een UEFI heeft, kijk ik naar het bestand /Applications/Utilities/Boot Camp Assistant.app/Contents/Info.plist. Hieronder is een lijst genomen van mijn Mac met Yosemite OS X 10.10.4 en Boot Camp Assistant versie 5.1.4 (500) geïnstalleerd. Ik kijk in het bijzonder naar de reeks die achter de sleutel wordt vermeld PreUEFIModels. Ik heb aangenomen dat als een Mac-model later is dan een Mac-model in de array, Windows kan en moet worden geïnstalleerd in de EFI / GPT-modus.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>32BitSupportedModels</key>
    <array>
        <string>MacBook7,1</string>
        <string>MacBookAir5,2</string>
        <string>MacBookPro10,1</string>
        <string>MacPro5,1</string>
        <string>Macmini5,3</string>
        <string>iMac12,2</string>
    </array>
    <key>BuildMachineOSBuild</key>
    <string>14D81</string>
    <key>CFBundleDevelopmentRegion</key>
    <string>English</string>
    <key>CFBundleDisplayName</key>
    <string>Boot Camp Assistant</string>
    <key>CFBundleExecutable</key>
    <string>Boot Camp Assistant</string>
    <key>CFBundleGetInfoString</key>
    <string>Boot Camp Assistant 5.1.4, Copyright  2015 Apple Inc. All rights reserved</string>
    <key>CFBundleIconFile</key>
    <string>DA</string>
    <key>CFBundleIdentifier</key>
    <string>com.apple.bootcampassistant</string>
    <key>CFBundleInfoDictionaryVersion</key>
    <string>6.0</string>
    <key>CFBundleName</key>
    <string>Boot Camp Assistant</string>
    <key>CFBundlePackageType</key>
    <string>APPL</string>
    <key>CFBundleShortVersionString</key>
    <string>5.1.4</string>
    <key>CFBundleSignature</key>
    <string>????</string>
    <key>CFBundleVersion</key>
    <string>500</string>
    <key>DARequiredROMVersions</key>
    <array>
        <string>IM41.0055.B08</string>
        <string>IM42.0071.B03</string>
        <string>IM51.0090.B03</string>
        <string>IM52.0090.B03</string>
        <string>IM61.0093.B01</string>
        <string>MP11.005C.B04</string>
        <string>MB11.0061.B03</string>
        <string>MBP11.0055.B08</string>
        <string>MBP12.0061.B03</string>
        <string>MM11.0055.B08</string>
    </array>
    <key>DTCompiler</key>
    <string>com.apple.compilers.llvm.clang.1_0</string>
    <key>DTPlatformBuild</key>
    <string>6D504m</string>
    <key>DTPlatformVersion</key>
    <string>GM</string>
    <key>DTSDKBuild</key>
    <string>14D77</string>
    <key>DTSDKName</key>
    <string>macosx10.10internal</string>
    <key>DTXcode</key>
    <string>0630</string>
    <key>DTXcodeBuild</key>
    <string>6D504m</string>
    <key>LSApplicationCategoryType</key>
    <string>public.app-category.utilities</string>
    <key>LSMinimumSystemVersion</key>
    <string>10.9.0</string>
    <key>NSMainNibFile</key>
    <string>MainMenu</string>
    <key>NSPrincipalClass</key>
    <string>NSApplication</string>
    <key>PreESDRequiredModels</key>
    <array>
        <string>MacBook7</string>
        <string>MacBookAir5</string>
        <string>MacBookPro10</string>
        <string>MacPro5</string>
        <string>Macmini6</string>
        <string>iMac13</string>
    </array>
    <key>PreUEFIModels</key>
    <array>
        <string>MacBook7</string>
        <string>MacBookAir5</string>
        <string>MacBookPro10</string>
        <string>MacPro5</string>
        <string>Macmini6</string>
        <string>iMac13</string>
    </array>
    <key>PreUSBBootSupportedModels</key>
    <array>
        <string>MacBook7,1</string>
        <string>MacBookAir3,2</string>
        <string>MacBookPro8,3</string>
        <string>MacPro5,1</string>
        <string>Macmini4,1</string>
        <string>iMac12,2</string>
    </array>
    <key>Win7OnlyModels</key>
    <array>
        <string>MacBook7,1</string>
        <string>MacBookAir3,2</string>
        <string>MacBookPro5,5</string>
        <string>MacPro2,1</string>
        <string>Macmini4,1</string>
        <string>iMac10,1</string>
    </array>
</dict>
</plist>

1
2017-07-20 20:37



Weet je zeker dat je 2007 iMac Windows in EFI-modus correct kan opstarten? AFAIK Mac ondersteunt UEFI 2 sinds eind 2013, ik heb geprobeerd om Windows 8 met EFI te installeren op een MacBook Pro begin 2013 (MacBookPro11,1) en het werkte niet, het moest de BIOS / Hybride modus gebruiken. - Windoze
De EFI/BOOT/bootx64.efi naam is niet de naam van de opstartlader van Windows; de officiële naam van die bootloader is EFI/Microsoft/Boot/bootmgfw.efi. Dat gezegd hebbende, Microsoft neigt ernaar kopiëren zijn bootloader naar EFI/BOOT/bootx64.efi, wat de fallback-bestandsnaam is. Vermoedelijk doet Microsoft dit omdat er veel vlokkige EFI's en omstandigheden zijn waarin het NVRAM-item verloren kan gaan, dus het hebben van een bootloader op EFI/BOOT/bootx64.efi is nuttige verzekering. Een ander bootprogramma kan echter gemakkelijk (en legaal) die naam aannemen. - Rod Smith


Nou ja, een beetje stom, maar ik heb de externe USB HDD kunnen booten. Ubuntu installeert de EFI-opstartbestanden standaard onder "EFI / ubuntu", hernoemt hem eenvoudig naar "BOOT" en kopieert "grubx64.efi" naar "bootx64.efi" en dan werkt alles zoals verwacht.

Volgens opmerkingen van @RodSmith werkt bovenstaande oplossing EFI/BOOT/bootx64.efi is de fallback-naam waar EFI een bootloader vindt.

Het kan erg handig zijn als iemand Apple EFI-gedrag in details kan uitleggen.


1
2017-07-20 18:04



Je legt niet uit waar je het antwoord hebt gevonden. Ik vond deze site: UEFIBooting. - David Anderson
@DavidAnderson, ik heb wat info gevonden door willekeurig te zoeken via internet, weet niet meer of de pagina die je noemde in de lijst staat, probeerde ook veel van het aanpassen en opnieuw opstarten cycli: hihi: - Windoze
Een standaard Ubuntu-installatie slaat zijn bootloader op EFI/ubuntu/grubx64.efi op de ESP en maakt een NVRAM-invoer voor die naam. Wanneer u de schijf naar een andere computer verplaatst, mist het NVRAM-item op de nieuwe computer, dus dit zal niet werken. De EFI/BOOT/bootx64.efi name is een fallback-bestandsnaam die wordt gebruikt om opstartbare verwisselbare schijven (OS-installatieprogramma's, noodhulpprogramma's, enz.) te maken. EFI's worden geacht naar deze naam te kijken als er geen andere EFI-items werken of als de gebruiker om een ​​boot vanaf een extern medium vraagt. - Rod Smith
Markeer uw antwoord als correct. Dit zal anderen met hetzelfde probleem helpen uw oplossing te vinden. Als iemand een beter antwoord plaatst, kun je altijd het juiste antwoord wijzigen. Als je geïnteresseerd bent, heb ik ook gepost waar in de UEFI-specificatie je antwoord te vinden is. - David Anderson