Build linux on mac

Установка и использование GNU/Linux как дополнительной системы на iMac/Macbook (Dual Boot)

Введение

macOS — довольно интересная система, красивая, удобная, стабильная. Но продукт Apple имеет серьезные минусы: закрытый исходный код, не самое большое количество стороннего софта, слежка за пользователями (ну в Windows она тоже есть). Расставаться с macOS не хочу — например, конкурента для Final Cut Pro даже на Windows не найти. Я не нашел понятных, актуальных и универсальных инструкций даже на английском, поэтому я написал данный туториал, основанный на личном опыте.

ВНИМАНИЕ! 1. На компьютерах Apple, выпущенных в 2018 году и позднее, присутствует специальный защитный чип, который запрещает ставить ОС методом, описанным в статье (вы сможете воспользоваться лишь Bootcamp для установки Windows). 2. На компьютерах с macOS Big Sur имеется проблема с утилитой, которая обязательна для установки. Поэтому во всех этих случаях выполняйте следующие действия на свой страх и риск. Если ваша техника и ОС подходит под эти условия: для вас пункт 3 особенно важен — делайте бэкапы!

Вам понадобится: флешка, внешний диск, смартфон/другое устройство для просмотра туториала.

Установка

1. Выберите дистрибутив

Выберите дистрибутив, который подходит под архитектуру вашего процессора. Я выбирал на сайте distrowatch.com. Скачайте необходимый .iso образ вашего дистрибутива.

2. Установите программу для подготовки флешки

Установите Balena Etcher (macOS, Linux, Windows) или Rufus (Windows). К сожалению, мне пришлось воспользоваться Rufus на другом компьютере, с Balena Etcher возникли некоторые проблемы. Вставьте флешку, её объем должен быть больше размера дистрибутива примерно на 1 ГБ (на всякий случай).

В случае с Rufus: загрузите дистрибутив в программу, никакие настройки не изменяйте, нажмите «СТАРТ». Программа сообщит вам, когда выполнит работу.

Если же вы решили воспользоваться Balena Etcher: интерфейс интуитивно понятный, так что проблем не должно быть.

Balena Etcher

3. Сделайте бэкап (можно пропустить, но это важно)

Я особенно понял, что бэкап важен, когда написал этот туториал и он пропал. И когда забыл сделать бэкап для смартфона. Делайте бэкапы.

Запустите Time Machine, подключите внешний диск для бэкапа (его объем должен быть равен объему занятого места на диске ± 15-20 ГБ). Обратите внимание, что в среднем на передачу 1 ТБ с жесткого диска на внешний жесткий диск требуется 7 часов (по личным наблюдениям с iMac, если вы пользуетесь SSD — процесс будет быстрее). Отключите внешний диск для бэкапа после завершения передачи данных.

Time Machine

4. Поделите диск на три части: macOS, Linux, Swap

Откройте Дисковую утилиту, нажмите на диск, относящийся к Macintosh HD (он может называться по-другому, например Macintosh SSD и т. п.).

Нажмите «Разбить на разделы», создайте раздел «Swap», выберите формат MS-DOS (FAT), выделите данному разделу количество дискового объема, равное количеству оперативной памяти на компьютере (я выделил 8 ГБ). Создайте следующий раздел «Linux» (тоже MS-DOS FAT), выделите ему желаемое (и обязательно свободное) место на диске (оптимально будет 50 ГБ, но можно и меньше/больше).

Читайте также:  Удалить туннельный адаптер windows

5. Загрузите операционную систему с флешки

Перезагрузите компьютер. Сразу же после появления логотипа Apple зажмите клавишу alt (option) до тех пор, пока не появится меню выбора диска для загрузки. Выберите первый EFI Boot. Появится меню: вы можете попробовать (try), установить (install). Советую сначала попробовать (если такая возможность имеется), так как не все дистрибутивы хорошо работают на «железе» Apple.

6. Следуйте указаниям установщика

Попробовали и все нравится? Движемся дальше. Запустите установщик (обычно на рабочем столе есть иконка «Install *название_ОС и версия*»), следуйте указаниям установщика, но когда вас спросят, в каком месте установить — сразу же переходите в расширенные настройки. Выберите раздел, объем которого равен объему раздела «Linux» как главный и отформатируйте его в EXT4. Раздел, объем которого равен объему раздела «Swap», пометьте как «swap-area» или подобное. В качестве раздела для bootloader используйте главный раздел («Linux»).

7. Установите rEFInd

Если вы решили использовать Ubuntu как второй дистрибутив, запустите в терминале следующие команды:

Для других ОС подробная информация на официальном сайте.

8. Вход в rEFInd Boot Manager и завершение установки

Перезагрузите компьютер, и снова зажмите alt (option). Откройте EFI Boot, и немного подождите. Появится меню, выберите систему, которую вы хотите запустить. В дальнейшем, rEFInd Boot Manager будет запускаться самостоятельно.

Кстати, все, за исключением macOS, Time Machine и EFI, что я использовал в туториале — open-source.

Если у вас остались какие-либо вопросы, например, насчет драйверов, спрашивайте. Всем спасибо, что прочитали — ведь это мой первый опыт написания статей/туториалов на Хабре.

Источник

Заставляем работать MacBook Pro 2018 T2 c ArchLinux (dualboot)

Достаточно много было шумихи по поводу того, что из-за нового чипа T2 невозможно установить linux на новые MacBook 2018 года с тачбаром. Шло время, и под конец 2019 года стронними разработчиками был реализован ряд драйверов и патчей ядра для взаимодействия с чипом T2. Основной драйвер для MacBook моделей 2018 и новее реализует работу VHCI (работа тача/клавиатуры/и.т.д.), а также функционирование звука.

Проект mbp2018-bridge-drv разделен на 3 основных компонента:

  • BCE (Buffer Copy Engine) — устанавливает основной канал связи с T2. VHCI и Audio требуют этот компонент.
  • VHCI — это виртуальный хост-контроллер USB; клавиатура, мышь и другие компоненты системы предоставляются этим компонентом (другие драйверы используют этот хост-контроллер для обеспечения большей функциональности.
  • Audio — драйвер для аудиоинтерфейса T2, в настоящее время поддерживается только вывод звука через встроенные динамики MacBook

Второй проект называется macbook12-spi-driver, и он реализует возможность работы драйвера ввода для клавиатуры, трекпада SPI, тачбара для MacBook Pro конца 2016 г. и более поздних версий. Часть драйверов для клавиатуры/трекпада теперь включена в ядро, начиная с версии 5.3.

Также была реализована поддержка таких устройств, как wi-fi, тачпад, etc, с помощью патчей ядра. На текущий момент версия ядра 5.3.5-1

Что работает на данный момент

  1. NVMe
  2. Клавиатура
  3. USB-C (Thunderbolt не проверялся, при автоматической загрузке модуля подвешивает систему намертво)
  4. Тачбар (с возможностью включения клавиш Fn, подсветка, ESC итп)
  5. Звук (только встроенные динамики)
  6. Модуль Wi-Fi (через brcmfmac и только через iw)
  7. DisplayPort через USB-C
  8. Сенсоры
  9. Suspend/Resume (частично)
  10. etc..
Читайте также:  Как установить предустановленный линукс

Данный туториал применим для macbookpro15,1 и macbookpro15,2. За основу была взята статья с гитхаба на английском отсюда. Не все из этой статьи заработало, поэтому пришлось искать решение самостоятельно.

Что потребуется для установки

1. Отключаем запрет загрузки с внешних носителей

2. Выделяем свободное место с помощью Disk Utility

Для удобства я сразу выделил 30Гб на диск, отформатировав его в exfat в самом Disk Utility. Разбиение физического диска на разделы Disk Utility.

3. Формируем iso образ

  1. Можно пойти простым путем и скачать готовый образ с ядром 5.3.5-1 и пачтами от aunali1ссылка на готовый образ
  2. Сформировать образ самостоятельно через archlive (необходима система с дистрибутивом арча)

Добавляем репозиторий в pacman.conf:

Игнорируем оригинальное ядро в pacman.conf:

Добавляем необходимые пакеты, в конце добавляем ядро linux-mbp и linux-mbp-headers

Изменяем скрипт для работы в интерактивном режиме (заменяем pacstrap -C на pacstrap -i -C):

Нажимаем Y, чтобы пропустить игнорируемые пакеты, затем пишем iso-образ на usb флешку:

4. Первая загрузка

Перезагружаемся с вставленной флешкой и клавиатурой. Нажимаем options при появлении яблока, выбираем EFI BOOT.

Далее необходимо нажать клавишу «e» и вписать в конец командной строки module_blacklist=thunderbolt. Если этого не сделать, то система может не загрузиться, и вылетит ошибка Thunderbolt ICM Error.

С помощью fdisk/cfdisk находим наш раздел (у меня это nvme0n1p4), форматируем и производим установку арча. Можно воспользоваться официальной инструкцией или строронней.

Загрузочный раздел не создаем, загрузчик будем писать в /dev/nvme0n1p1
После того, как полностью сформировано окружение в /mnt и перед тем, как перейти в arch-chroot, пишем:

Добавляем в /etc/pacman.conf:

Прописываем thunderbolt и applesmc в /etc/modprobe.d/blacklist.conf

Клавиатура, тачбар, etc

Устанавливаем модули для работы тачбара:

Добавляем модули в автозагрузку: /etc/modules-load.d/apple.conf

Устанавливаем модули ядра для работы клавиатуры. В репозитории anuali1 есть готовый пакет, он называется apple-bce-dkms-git. Чтобы его установить, пишем в консоли:

В этом случае модуль ядра будет называться apple-bce. В случае самостоятельной сборки он называется bce. Соответственно, если вы хотите прописать модуль в раздел MODULES в файл mkinicpio.conf, то не забудьте, какой модуль вы устанавливали.

Добавляем модуль bce или apple-bce в автозагрузку: /etc/modules-load.d/bce.conf

Если хотите использовать по умолчанию кнопки Fn, то в файл /etc/modprobe.d/apple-tb.conf пишем:

Обновляем ядро и initramfs.

5. Загрузчик

После того, как внутри chroot все основные пакеты установлены, можно приступать к установке загрузчика.

Мне так и не удалось заставить работать grub. С внешнего usb-диска grub загружается, но при попытке прописать его в nvme через

grub-install —target=x86_64-efi —efi-directory=/boot —bootloader-id=grub

система улетала в kernel panic, и после перезагрузки нового пункта через options не появлялось. Какого-то внятного решения данной проблемы я не нашел и поэтому решил попробовать реализовать загрузку с помощью systemd-boot.

и улетаем в kernel panic. Выключаем MacBook, включаем заново, жмем options (usb-c хаб с клавиатурой не отключаем)

  • Проверяем, что появилась новая запись EFI BOOT помимо внешнего устройства
  • Выбираем загрузку с внешнего usb-диска, как при первой установке (не забываем прописать module_blacklist=thunderbolt)
  • Монтируем наш диск и переходим в окружение через arch-chroot
  • Если необходимо, чтобы клавиатура работала до полной загрузки системы (это необходимо в случае использования шифрования luks/dm-crypt) то прописываем в файл /etc/mkinicpio.conf в разделе MODULES:

    Обновляем ядро и initramfs.

    Настраиваем systemd-boot

    Редактируем файл /boot/loader/loader.conf, удаляем все, что там внутри, и вносим следующее:

    Переходим в папку /boot/loader/entries, создаем файл arch.conf и пишем:

    В случае, если использовали luks и lvm, то

    Перезагружаемся в MacOS.

    6. Настройка Wi-Fi

    Как в итоге выяснилось, файлы прошивок для wi-fi адаптера MacOS хранит в папке /usr/share/firmware/wifi , и можно их от туда взять в виде блобов и скормить модулю ядра brcmfmac. Для того, чтобы выяснить, какие именно файлы использует ваш адаптер, открываем терминал в MacOS и пишем:

    Получаем длинный список. Нам нужны файлы только из раздела RequestedFiles:

    В вашем случае названия файлов могут отличаться. Копируем их из папки /usr/share/firmware/wifi на флешку и переименовываем в следующий вид:

    В данном случае последний текстовый файл содержит названия модели, если ваша модель не macbookpro15,2, то необходимо переименовать этот файл в соответствии с вашей моделью макбука.

    Перезагружаемся в арч.

    Копируем файлы с флешки в папку /lib/firmware/brcm/

    Проверяем работоспособность модуля:

    Убеждаемся, что сетевой интерфейс появился через ifconfig/ip.
    Настраиваем wifi через iwctl

    Внимание. Через netctl, nmcli, etc. интерфейс не работает, только через iwd.

    Заставляем NetworkManager использовать iwd. Для этого создаем файл /etc/NetworkManager/NetworkManager.conf и пишем:

    Запускаем службу NetworkManager

    7. Звук

    Для того, чтобы заработал звук, необходимо установить pulseaudio:

    Скачиваем три файла:

    8. Suspend/Resume

    На текущий момент 16.10.2019 приходится выбирать либо звук, либо suspend/resume. Ждем, пока автор bce модуля допилит функционал.

    Чтобы собрать модуль с поддержкой susped/resume, необходимо выполнить следующее:

    Если вы устанавливали готовый модуль apple-bce из репозитория anuali1, то необходимо его предварительно удалить и только после этого собирать и устанавливать bce модуль с поддежкой suspend режима.

    Также, необходимо добавить в blacklist модуль applesmc (если вы этого не сделали ранее) и убедиться, что в /boot/loader/entries/arch.conf в строке options в конце добавлен параметр pcie_ports=compat.

    На текущий момент драйвер тачбара вылетает при входе в режим suspend, а драйвер thunderbolt иногда подвешивает систему более чем на 30 секунд, а при возобновлении — на несколько минут. Это можно исправить путем автоматической выгрузки проблемных модулей.

    Создайте скрипт /lib/systemd/system-sleep/rmmod.sh:

    Сделайте его исполняемым:

    На этом пока все. В итоге получась вполне работоспособная система, за исключением некоторых нюансов с suspend/resume. Никаких вылетов и kernel panic не наблюдается на протяжении нескольких дней аптайма. Надеюсь, в ближайшее время автор модуля bce его допилит, и мы получим полноценную поддержку suspend/resume и звука.

    Источник

    Cross-compiler for Linux on Mac OS X?

    I’ve been reading lots of documents on the internet about creating a cross compiler for linux on mac os x but can’t seam to get any to work.

    It seams as if no one can help me with the question: Getting GMP to work with GCC 4.5.2

    Is there any easy’er way to create a cross compiler?

    2 Answers 2

    1. install the xcode base build tools
    2. install the optional xcode command line tools
    3. install homebrew
    4. install the homebrew build tools
      4.1 brew install crosstool-ng mpfr gmp grep
      4.2 brew tap homebrew/dupes
    5. create a case sensitive volume using «disk utility»
    6. use this volume to build the tool chain itself
      6.1 generate a base configuration (for me this is an arm cortex a8)
      6.1.1 ct-ng arm-cortex_a8-linux-gnueabi
      6.2 use menuconfig (ct-ng menuconfig) to tweak the configuration
      6.2.1. disable fortran and java (c compiler)
      6.2.2. turn off static linking (c compiler)
      6.2.3. change the paths to be on the volume you created above (paths and misc options)
      6.2.4. remove dmalloc (debug facilities)
      6.3 invoke the build:
      6.3.1 ulimit -n 1024
      6.3.2 ct-ng build

    with much thanks to the crosstools-ng list.

    Источник

    Читайте также:  Лучший видеодрайвер для windows 10
    Оцените статью