From 3823984df667a529779fff02cc18f15467f70b7e Mon Sep 17 00:00:00 2001 From: PROTechThor Date: Fri, 13 Nov 2020 21:54:48 +0100 Subject: [PATCH] Edit Macbook Troubleshooting --- troubleshooting/macbook-troubleshooting.md | 211 +++++++++++++++++++++ 1 file changed, 211 insertions(+) create mode 100644 troubleshooting/macbook-troubleshooting.md diff --git a/troubleshooting/macbook-troubleshooting.md b/troubleshooting/macbook-troubleshooting.md new file mode 100644 index 0000000..bb74047 --- /dev/null +++ b/troubleshooting/macbook-troubleshooting.md @@ -0,0 +1,211 @@ +--- +layout: doc +title: Apple MacBook Troubleshooting +permalink: /doc/macbook-troubleshooting/ +--- + +# Apple MacBook Troubleshooting + +## Boot freezes at "Setting up networking" + +After installing Qubes 3.2 on a MacBook Air 13" mid-2011 (MacBookAir 4,2), it may freeze at "Setting up networking" during booting. This issue is caused by the Broadcom Wireless adapter, if you have one. + +To fix the problem, you need to [remove the Wi-Fi card from your Mac][bluetooth-replacement] or put the Wi-Fi adapter into PCI passthrough, as explained below: + +1. Run in a terminal: + ~~~ + # diskutil list + (find your usb device) + # bless –device /dev/diskX –legacy –setBoot –nextonly # bless the disk not the partition + # reboot + ~~~ + +2. Insert your Qubes 3.2 USB flash drive. The ISOLINUX boot screen should come up. +Select Troubleshooting and Boot the Rescue image. Enter your disk password when +prompted. Select continue and after mounting the HD filesystem and launching a +shell, `chroot` as instructed. + +3. Find your Wi-Fi card: + ~~~ + # lspci + ... + 02:00.0 Network controller: Broadcom Corporation BCM43224 802.11a/b/g/n (rev 01) + ~~~ +In the above example, the device has a BDF of `02:00.0`. +To assign this device to the sys-net VM: + ~~~ + # qvm-pci -a sys-net 02:00.0 + ~~~ + +4. Create `/etc/systemd/system/qubes-pre-netvm.service` with: + ~~~ + [Unit] + Description=Netvm fix for Broadcom + Before=qubes-netvm.service + + [Service] + ExecStart=/bin/sh -c 'echo 02:00.0 > /sys/bus/pci/drivers/pciback/permissive' + Type=oneshot + RemainAfterExit=yes + + [Install] + WantedBy=multi-user.target + ~~~ + +5. To enable the `qubes-pre-netvm` services, run: + + ~~~ + systemctl enable qubes-pre-netvm.service + ~~~ + +6. After reboot, boot Mac OS X again by running in a terminal: + + ~~~ + # diskutil list + (find the HD device where you installed Qubes) + # bless –device /dev/diskX –legacy –setBoot # bless the disk not the partition + # reboot + ~~~ + +## Can't boot the installer + +You can install Qubes 3.2 on a MacBook Pro Retina, 15 inch, Mid-2015 (MacBookPro 11,5) using BIOS or UEFI (If one method fails, try the other): +* BIOS/CSM/Legacy +* UEFI plain: Here, the grub menu appears, but any gives a quick flash and returns the main menu. Then, you can boot it manually and fix the `grub.cfg` file by adding the commands `linuexefi` and `initrdefi` and pointing to the proper files in `/efi/boot`. After boot, you may end up with no root file system. +* UEFI, using rEFInd: This method may prove successful, but there are some issues to be fixed manually after the installation is complete. + 1. Download [rEFInd] refind-bin-0.10.4.zip. Note that this file is not signed, so decide if you trust it or not. The SHA1 sum is 3d69c23b7d338419e5559a93cd6ae3ec66323b1e + 2. Unzip it and run the installer, which installs rEFInd on the internal SSD + 3. If installation fails due to SIP, reboot in recovery mode, open a terminal and run the command: + ~~~ + csrutil disable + ~~~ + 4. Reboot. You will see some icons. + 5. Choose Boot EFI\BOOT\xen.efi from ANACONDA. After a while, the graphical installer is up (keyboard and touchpad working) + +## Can't boot using GRUB2 + +After installing Qubes 3.2 on a MacBook Mid-2015, you may be unable to boot using `EFI/qubes/xen.efi` because the [XEN bootloader configuration is broken](/doc/macbook-troubleshooting/#cant-boot-using-xen-bootloader). +You can't also boot using GRUB2 without XEN support because the GRUB configuration is broken as well. + +To start fixing this issue manually, switch to the console by pressing Fn+CTRL+ALT+F2. + +It can be very useful – during troubleshooting – to have a rescue system at hand. It could help you boot Qubes, even without XEN support. This troubleshoot assumes you are performing a [UEFI boot, using rEFInd](/doc/macbook-troubleshooting/#cant-boot-the-installer). + +At this point, the GRUB configuration file is using some wrong commands, which are not compatible with grub2-efi + +~~~ +chroot /mnt/sysimage +sed -i.bak -e "s/multiboot/chainloader/" -e "s/module.*--nounzip/initrdefi/" -e "s/module/linuxefi/" /etc/grub.d/20_linux_efi +exit +~~~ + +Now, despite XEN configuration is still broken, you have a rescue system booting vmlinux from rEFInd screen. +TBV1: chainloading XEN does not work, unless you specify the right disk prefix, eg: (hd1,gpt4) +TBV2: grub.cfg set the wrong disk in "set root" command +TBV3: in case you reach grub shell, you can +~~~ +ls +~~~ +and also reload config file and change it manually before booting +~~~ +configfile /EFI/qubes/grub.cfg +~~~ +Then press "e", edit `grub.cfg` and boot by pressing Fn+F10. + + +## Can't boot using XEN bootloader + +You may be unable to boot Qubes 3.2 using `EFI/qubes/xen.efi` on a MacBook Mid-2015 because the XEN bootloader configuration is broken. This issue is accompanied by the GRUB2 configuration being broken as well. After [fixing the GRUB configuration](/doc/macbook-troubleshooting/#cant-boot-using-grub2), follow the following steps to fix the bootloader. This troubleshoot assumes you are performing a [UEFI boot, using rEFInd](/doc/macbook-troubleshooting/#cant-boot-the-installer). + +* Fix grub2 configuration, which uses wrong command for EFI boot +* Analyzing `/mnt/sysimage/var/log/anaconda/program.log`, you may find the faulty commands issued by the Anaconda installer. + ~~~ + chrooot /mnt/sysimage + ~~~ +* Edit the `/boot/efi/EFI/qubes/xen.cfg` file to add the following content: + ~~~ + [global] + default=4.4.14-11.pvops.qubes.x868_64 + + [4.4.14-11.pvops.qubes.x868_64] + options=loglvl=all dom0_mem=min:1024M dom0_mem=max:4096M + kernel=vmlinuz-4.4.14-11.pvops.qubes.x86_64 + ramdisk=initramfs-4.4.14-11.pvops.qubes.x86_64.img + ~~~ + +* The main mistake is that `efibootmgr` needs the right commands. Just in case, reapply all the commands, adapting them to your own disk layout (`-d /dev/sdxxx -p partition_number`) + +~~~ +grep Running /mnt/sysimage/var/log/anaconda/program.log | tail -n 20 +efibootmgr -b 0000 -B +efibootmgr -c -w -L Qubes -d /dev/sda -p 4 -l \\EFI\\qubes\\xen-4.6.1.efi +/usr/libexec/mactel-boot-setup +kernel-install add 4.4.14-11.pvops.qubes.x86_64 /boot/vmlinuz-4.4.14-11.pvops.qubes.x86_64 +systemctl disable qubes-netvm +reboot +~~~ + +At the rEFInd screen, choose Boot EFI/qubes/xen-4.6.1.efi. +Everything should now be ok, Qubes OS boots using EFI and you will get the last setup screen. +Select "Qubes OS", do not change anything and click on "Done". +VMs are created, including NetVM. + +## System freezes often for 20 seconds + +Using Qubes 3.2 on the MacBook Mid-2015 was reported to have frequent freezes, which lasts for 20 seconds. Upon looking at the `journalctl` output, you may see that pulseaudio locks the CPU for 20 seconds, very often. + +To fix this issue, kill audio support with this quick workaround: +1. Open a dom0 terminal as root +2. Edit `/etc/pulse/client.conf` and add `autospawn = no` +3. As normal user, kill pulseaudio with the command `pulseaudio --kill` + +## System freezes after attaching Broadcom BCM43602 Wi-Fi card + +You may experience system freezes or crashes after attaching a Broadcom Wi-Fi adapter to the sys-net VM. This issue has been reported to exist on both Qubes 3.2 and 4.0. For Qubes 4.0, you may have to replace the Wi-Fi card, as described in the [PCI Troubleshooting](/doc/pci-troubleshooting/#broadcom-bcm43602-wi-fi-card-causes-system-freeze) guide. + +The following troubleshoot is known to work on Qubes 3.2: + +1. During VM setup, force a reboot and press `OPTION` key. + +2. You will reach the grub shell + ~~~ + configfile /EFI/qubes/grub.cfg + ~~~ + +3. Press Fn+F10 to boot without XEN support. + +4. Once booted, press Fn+CTRL+ALT+F4 to open a shell. + +5. Log into the system + ~~~ + sudo su - + systemctl disable qubes-netvm + ~~~ + +6. Press Fn+F2 and complete the setup. +7. Reboot Qubes. +8. DO NOT launch the sys-net qube. +Rather, open its setting and remove the Wi-Fi adapter from the Selected devices using the Qubes Manager. +You can also remove it from the command line, if you know the BDF of the adapter. +You can see the list of devices attached to sys-net and their associated BDFs by running: + ~~~ + qvm-pci -l sys-net + ~~~ +For a device with a BDF of `04:00.0`, you can remove it with: + ~~~ + qvm-pci -d sys-net 04:00.0 + ~~~ +9. In a dom0 terminal, run: + ~~~ + sudo su - + xl pci-assignable-list + echo 04:00.0 > /sys/bus/pci/drivers/pciback/permissive + qvm-start sys-net + xl pci-attach sys-net DEVICE_BDF + ~~~ +Be sure to replace "DEVICE_BDF" with the actual BDF of the Wi-Fi adapter. + +After following the above steps, you should be able to launch sys-net with Wi-Fi access. These steps can be automated in a custom `systemd` service. + +[bluetooth-replacement]: https://www.ifixit.com/Guide/MacBook+Air+13-Inch+Mid+2011+AirPort-Bluetooth+Card+Replacement/6360 +[rEFInd]: http://www.rodsbooks.com/refind/getting.html