Skip to content

Macbook

Статья будет об установке ALT Regular Gnome, как завести все устройства и настроить систему, чтобы она жила на уровне с MacOS (никакой магии нет, есть только настройки) Статья охватывает только установку автора на Macbook 11,1 он же Macbook Pro 13" Late 2013

Установка

Настоятельно рекомендую, возьми диск, nas или ещё что-либо равное объёму диска макбука и сделай Time Machine резервную копию. Линукс это круто и безвозвратный прыжок в этот мир, может помочь бороться с трудностями, но лучше иметь бэкап, чем не иметь. Восстановиться можно будет в тот же день, в котором начали - синяя таблетка Нео и ты никогда не узнаешь суровой реальности Linux.

  1. Качаем образ и пишем на флешку
  2. Выключаем мак и подключаем флешку
  3. Включаем мак с зажатой клавишей Alt/Option
  4. На этапе выбора нам нужен жёлтый диск со странным названием EFI, это наш
  5. Далее устанавливаем, как на обычным PC, никакой разницы.

Настройка

Настраивать нам нужно многое, но всё не так страшно. Нам понадобится доступ в сеть. Перед всеми манипуляциями обнови систему:

shell
su -
apt-get update && apt-get dist-upgrade

Wi-Fi

Прошли те времена, когда это вызывало боль, на сегодня Broadcom даёт свои драйвера под распространение, нам нужно их только установить:

shell
su -
apt-get install kernel-modules-bcmwl-un-def
apt-get install bcmwl-kernel-conf
reboot

Внимание

Данные по поддержке в таблице устарели, не смотрите туда

После перезагрузки появится возможность подключиться и использовать Wi-Fi.

Улучшаем энергосбережение

  1. Перво-наперво - заходим в меню в правом верхнем углу и выбираем энергосбережение.

  2. PC6/PC7 состояния CPU Для начала, нам нужно сказать маку, что мы не притворяемся linux или windows, мы вообще macos, ну почти. И это разблокирует возможности переключаться в состояния PC6 и PC7, то что даст нам 5-7W потребления и почти 10ч от батареи, как на MacOS

shell
su -
mcedit /etc/sysconfig/grub2

Добавляем в параметр GRUB_CMDLINE_LINUX_DEFAULT значение в конец acpi_osi= прям вот так, пустой. И сохраняем.

grub-mkconfig -o /boot/grub/grub.cfg обновляем GRUB с новой конфигурацией и перезагружаемся

  1. Powertop нам друг
shell
su -
powertop

Табом дойти до tunable вкладки, заодно можете полюбоваться Idle State в левом столбце Pkg(HW) должны быть проценты не нулевые у C6/C7 Дойдя до Tunable - пробелом протыкиваем всё Bad в Good кроме клавиатуры и трекпадом иначе может не выходить из сна.

Так мы уже разительно снизили потребление

Facetime Camera

Запуск камеры в пару простых действий

  1. Установка всего необходимого
shell
su -
apt-get install git kernel-headers-un-def kernel-headers-modules-un-def
  1. Создадим bash скрипт, который сделает всё по красоте за нас. Например пусть будет facetimehd.sh
bash
#!/bin/bash
set -e

export CONFIG_MODULE_SIG=n
export CONFIG_MODULE_SIG_ALL=n
# For current kernel
export KERNELRELEASE=$(cat /proc/version | awk '{print $3}')

temp_dir=$(mktemp -d)
echo "Installing FacetimeHD camera for $KERNELRELEASE"
cd $temp_dir
git clone https://github.com/patjak/facetimehd-firmware.git
git clone https://github.com/patjak/bcwc_pcie.git

cd $temp_dir/facetimehd-firmware
pwd
make
make install
cd $temp_dir/bcwc_pcie
pwd
make
make install
rm -rf $temp_dir

if [ ! -d "/etc/modules-load.d" ]; then
  mkdir -p "/etc/modules-load.d"
fi

cat > "/etc/modules-load.d/facetimehd.conf" << EOL
videobuf2-core
videobuf2_v4l2
videobuf2-dma-sg
facetimehd
EOL


# Workaround for depmod being skipped above with error:
# Warning: modules_install: missing 'System.map' file. Skipping depmod
echo "Generate modules.dep and map files"
sudo depmod

echo "Adding kernel modules"
sudo modprobe -r bdc_pci
sudo modprobe facetimehd

echo "Install complete"
  1. Делаем его исполняемым chmod +x facetimehd.sh
  2. Собираем и устанавливаем sudo ./facetimehd.sh
  3. Если будет ошибка modprobe: FATAL: Module bdc_pci not found. не паримся и делаем так sudo modprobe facetimehd

Ну всё, вот камера и работает 😃

Включаем двойную графику и собираем GPU-Switch

Предисловие

В Macbook Pro 11,3 по умолчанию для Linux разрешена только дискретная карта Nvidia GT 750M, однако для обычной работы её слишком много, как много и потребления питания при её работе.

Чтобы исправить это положение дел предлагается следующее решение:

GPU switcher

Для переключения режима достаточно скачать приложение gpu-switch с репозитория

Эта программа позволяет переключить видеокарту на требуемую.

Информация

Переключение происходит непосредственно после перезагрузки

bash
su -

git clone https://github.com/0xbb/gpu-switch.git
cd gpu-switch

# для интегрированной карты (Intel)
./gpu-switch -i

# или для дискретной карты (NVidia)
./gpu-switch -d

Включаем Intel

Однако на этом ноутбуке требуется дополнительные действия для включения видеокарты Intel. Самое простое это собрать EFI модуль для обхода ограничения Apple. Модуль можно собрать следующим образом:

bash
su -

apt-get install gcc gnu-efi
git clone https://github.com/0xbb/apple_set_os.efi apple-set-os
cd apple-set-os
git apply ./alt-linux-lib64.patch
make

Сохраните патч ниже, как alt-linux-lib64.patch для команды выше в папку apple-set-os

bash
commit 7f29a978c13de7cacc6d4d1c00bb160bf3bc51ae
Author: iTux <itux@idev.pro>
Date:   Sun Oct 29 17:13:43 2023 +0300

    Fix libdir

diff --git a/Makefile b/Makefile
index 31e1982..77b4d5d 100644
--- a/Makefile
+++ b/Makefile
@@ -1,4 +1,5 @@
 ARCH	= x86_64
+LIBDIR	= /usr/lib64

 TARGET	= apple_set_os.efi
 FORMAT 	= efi-app-$(ARCH)
@@ -9,8 +10,8 @@ CFLAGS	= -I$(INC) -I$(INC)/$(ARCH) \
 		 -fno-stack-protector -maccumulate-outgoing-args \
 		 -Wall -D$(ARCH) -Werror -m64 -mno-red-zone

-LDFLAGS	= -T /usr/lib/elf_$(ARCH)_efi.lds -Bsymbolic -shared -nostdlib -znocombreloc \
-		  /usr/lib/crt0-efi-$(ARCH).o
+LDFLAGS	= -T $(LIBDIR)/elf_$(ARCH)_efi.lds -Bsymbolic -shared -nostdlib -znocombreloc \
+		  $(LIBDIR)/crt0-efi-$(ARCH).o

 %.efi: %.so
 	objcopy -j .text -j .sdata -j .data -j .dynamic -j .dynsym -j .rel \
@@ -18,7 +19,7 @@ LDFLAGS	= -T /usr/lib/elf_$(ARCH)_efi.lds -Bsymbolic -shared -nostdlib -znocombr

 %.so: %.o
 	$(LD) $(LDFLAGS) -o $@ $^ $(shell $(CC) $(CFLAGS) -print-libgcc-file-name) \
-	/usr/lib/libgnuefi.a
+	$(LIBDIR)/libgnuefi.a

 all: $(TARGET)

Далее надо подключить этот модуль

  • Копируем
bash
mkdir /boot/efi/EFI/custom
cp apple_set_os.efi /boot/efi/EFI/custom
  • Включаем модуль
bash
nano -w /etc/grub.d/40_custom
# в конец файла добавляем
 search --no-floppy --set=root --label EFI
 chainloader (${root})/EFI/custom/apple_set_os.efi
 boot
# сохраняем и выходим из редактора
  • Обновляем конфигурацию
bash
grub-mkconfig -o /boot/grub/grub.cfg
update-grub

И перезагружаемся...

Проверка

Чтобы проверить работает или нет, достаточно взглянуть на результат команды inxi -G

bash
inxi -G

#Graphics:
#  Device-1: Intel Crystal Well Integrated Graphics driver: i915
#  Device-2: NVIDIA GK107M [GeForce GT 750M Mac Edition] driver: nouveau

Полезные ссылки:

ToDo

  • Табличку поддержки может добавить, что работает, а что нет
  • ToDo tune kernel - стабильно дойти до PC7
  • ToDo tune планировщиков для улучшения жизни от батареи

Авторы

История изменений