Running Kali Linux on Medion Akoya (E2221T MD69686add)
TL;DR at the end ;)
I recently acquired a Medion Akoya (E2221T MD69686add) and of course I wanted to boot Kali 2.0 on it. But this was to be a quite challenging task. Here is my story:
I prepared a Kali x64 Live USB as usual and I plugged it. After testing a litte, I found that F10 would bring up the boot menu, so I selected my USB but of course UEFI did not agree with booting an unknown OS. I had to go to the BIOS Setup (F10 has an entry for this as well) and disable Secure Boot. I repeated the process and the GRUB menu showed up this time.
I hit enter on the first entry and the kernel started booting, with the usual log of debug messages. Everything was looking fine until the computer just shutdown just before the GNOME login was about to appear. I was just stunned. I never saw this before. I saw strange errors, kernel panics, but a total shutdown? The power LED was off. Then by total chance I pressed the enter key and the power LED went on again, but unfortunately not the screen. WTF?
This made me think that it actually didn't power off but suspended instead. And this in turn made me think it could be an issue with ACPI. So I searched about kernel ACPI options and this found this excellent article. I got ready to start testing those options, but another annoying issue got in the way: I could not properly edit because the keyboard behaved with the Fn key always pressed, that is, for example when pressing the I key, I got a 5 instead. Holding the Fn key would not solve it, so I had to connect an external keyboard to be able to modify the GRUB entries. Fortunately I have plenty of old keyboards at home :)
Armed with my old and dusty external keyboard, I finally started testing the options and finally I was able to make it to the GNOME Shell desktop using acpi=off.
There I found acpi=off was not without consequences (as expected):
- No battery indicator (of course).
- Trackpad buttons do not work, and tapping is also not working.
- Touchscreen does not work.
- Slow booting.
If "acpi=off" makes the failure goes away, then it is likely an ACPI bug. But if a different failure occurs with ACPI disabled, then the test was inconclusive.So I tried a few of other Kernel parameters, even combinations of them:
If the system boots with "acpi=off", but fails otherwise, there are a number of boot parameters that disable different parts of ACPI that can be used to isolate where the issue lies.
All without success: some will reproduce the same problem, some will get stuck on GRUB, some will get stuck on Starting User Manager with UID 0.
Following the same guide:
If acpi=off works and acpi=ht fails, then the issue is in the ACPI table parsing code itself, or perhaps the SMP code.To get more information about what is happening, I activated Kali persistence (to configure it boot with acpi=off or simply boot the pendrive in another PC or VM) to get the kernel log about ACPI. I booted with live persistence without acpi=off first, rebooted when it got stuck, and then with acpi=off.
Adding ACPI off to GRUB menuTo avoid editing the GRUB entry everytime (and having to use an external keyboard), I decided to duplicate the GRUB menu persistence entry and add acpi=off there. But oh surprise, the parition where GRUB is located in Kali is ISO 9660, which is a read-only filesystem. Since I can't modify GRUB, I'm only left with the option of rolling my own Kali ISO image, following this guide. You can find the grub.conf at live-build-config/kali-config/common/bootloaders/grub-pc/. Then you can proceed with the build (warning: it takes a lot of time).
However the build did fail because the following packages could not be downloaded, specifically these:
E: Failed to fetch http://archive.kali.org/kali/pool/main/r/ruby-librex/ruby-librex_0.0.68-0kali1+build1_all.deb Connection failed E: Failed to fetch http://archive.kali.org/kali/pool/main/b/beef-xss/beef-xss_0.4.7.0-0kali4_all.deb Connection failed E: Failed to fetch http://archive.kali.org/kali/pool/main/u/unicorn-magic/unicorn-magic_2.6-0kali2_all.deb Connection failed E: Failed to fetch http://archive.kali.org/kali/pool/main/e/ettercap/ettercap-common_0.8.2-10_amd64.deb Connection failed E: Failed to fetch http://archive.kali.org/kali/pool/main/a/armitage/armitage_20150812-1kali2_all.deb Connection failed E: Failed to fetch http://archive.kali.org/kali/pool/main/c/cisco-global-exploiter/cisco-global-exploiter_13-1kali3_all.deb Connection failed E: Failed to fetch http://archive.kali.org/kali/pool/main/c/clusterd/clusterd_0.5-0kali2_all.deb Connection failed E: Failed to fetch http://archive.kali.org/kali/pool/main/c/cymothoa/cymothoa_1-beta-1kali1_amd64.deb Connection failed E: Failed to fetch http://archive.kali.org/kali/pool/main/d/davtest/davtest_1.0-1kali3_all.deb Connection failed E: Failed to fetch http://archive.kali.org/kali/pool/main/d/dbd/dbd_1.50-1kali2_amd64.deb Connection failed E: Failed to fetch http://archive.kali.org/kali/pool/main/f/fimap/fimap_1.00-0kali2_all.deb Connection failed E: Failed to fetch http://archive.kali.org/kali/pool/main/f/framework2/framework2_2.0-1kali0_all.deb Connection failed E: Failed to fetch http://archive.kali.org/kali/pool/main/g/golismero/golismero_2.0-beta6+git20150114-0kali1_all.deb Connection failed E: Failed to fetch http://archive.kali.org/kali/pool/main/k/keimpx/keimpx_0.3+git20150318-0kali3_all.deb Connection failed E: Failed to fetch http://archive.kali.org/kali/pool/main/l/laudanum/laudanum_1.0+r36-0kali1_all.deb Connection failed E: Failed to fetch http://archive.kali.org/kali/pool/main/m/mimikatz/mimikatz_2.1.1-20171219-0kali1_all.deb Connection failed E: Failed to fetch http://archive.kali.org/kali/pool/main/n/nishang/nishang_0.7.6-0kali1_all.deb Connection failed E: Failed to fetch http://archive.kali.org/kali/pool/main/p/powersploit/powersploit_2.2-1kali1_all.deb Connection failed E: Failed to fetch http://archive.kali.org/kali/pool/main/r/responder/responder_18.104.22.168-0kali1_all.deb Connection failed E: Failed to fetch http://archive.kali.org/kali/pool/main/s/sbd/sbd_1.37-1kali1_amd64.deb Connection failed E: Failed to fetch http://archive.kali.org/kali/pool/main/s/set/set_7.7.4-0kali2_all.deb Connection failed E: Failed to fetch http://archive.kali.org/kali/pool/main/s/sqlninja/sqlninja_0.2.6-r1-1kali0_all.deb Connection failed E: Failed to fetch http://archive.kali.org/kali/pool/main/u/u3-pwn/u3-pwn_2.0-1kali3_all.deb Connection failed E: Failed to fetch http://archive.kali.org/kali/pool/non-free/w/wce/wce_1.42-beta-0kali0_all.deb Connection failed E: Failed to fetch http://archive.kali.org/kali/pool/main/w/webshells/webshells_1.1-0kali0_all.deb Connection failed E: Failed to fetch http://archive.kali.org/kali/pool/non-free/w/windows-binaries/windows-binaries_0.6.1_all.deb Connection failed
I reported this issue in the Kali forum but unfortunately got no answer as of writing this.
Fixing the keyboard at GRUB
So back to square one again. Fortunately, showing the problem to a coworker he suggested to Fn+NumLock, and oh man, that did the trick! I can finally write acpi=off as kernel parameter without any external keyboard. It's annoying to have to pass this parameter everytime I boot Kali, but it is better than having to use an external keyboard.
TL;DREnter BIOS with F2 and disable Secure Boot under Security menu. F10 brings up the boot menu, select the USB drive. GRUBS show up. Press e to edit your favorite Kali Linux entry. Pass acpi=off as a parameter to the kernel.
Now I'm going to try to understand what is happening with Medion's ACPI tables. Until then, have fun!