91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何把Linux移植到M1

Linux愛好者 ? 來源:CSDN ? 作者:CSDN ? 2021-03-03 15:12 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

蘋果 M1 芯片引發(fā)行業(yè)大熱,芯片的發(fā)展也將影響著未來行業(yè)的走向。今天,隨著本文一起來看看如何把 Linux 移植到 M1。

自 2014 年 iPhone 6 發(fā)布以來,蘋果就在集中精力構(gòu)建更快的芯片,相對于在一塊芯片上加載更多核心,他們更加注重單線程性能的提高。他們內(nèi)部的硬件設(shè)計團隊采用了這種方法,并生產(chǎn)出了功能多樣且獨一無二的芯片,從而奠定了他們在架構(gòu)特征方面的行業(yè)領(lǐng)先地位。

2020 年 11 月,蘋果發(fā)布的新品臺式機搭載了 M1 處理器,不少人都為該系統(tǒng)的出色性能而贊不絕口。

事實上,Linux 之父 Linus Torvalds 也曾在國外 Real World Technologies 網(wǎng)站的留言板答網(wǎng)友提出的“如何看待新的(M1 芯片)蘋果電腦”問題時,回應(yīng)稱:

如果它運行 Linux ,我絕對希望擁有一臺。

此前,CSDN 也曾報道過安全顧問 Hector Martin 正在眾籌平臺 Patreon 上啟動了一項向 M1 Mac 移植 Linux 的項目(https://www.patreon.com/marcan),并且得到不少開發(fā)者的響應(yīng)。而本文作者也一直在努力為安全研究人員提供有關(guān)操作系統(tǒng)和程序如何在蘋果 ARM 處理器上運行的深刻見解。因此,當(dāng)蘋果決定允許在帶有M1處理器的 Mac 上安裝自定義內(nèi)核時,他們決定嘗試一番。

開始將 Linux 移植 M1

M1 的許多組件都是與蘋果的移動 SoC 共享的,因此可以從這個地方入手。但是,在編寫 Linux 驅(qū)動程序時發(fā)現(xiàn),實際上蘋果的 SoC 非常不標準。由于筆者的虛擬環(huán)境非常靈活,能夠適應(yīng)多種模型,但在 Linux 上,64 位 ARM 主要依賴于一系列定義良好的組件和固件接口,但 M1 幾乎沒有使用任何這類的組件或固件接口。

首先,蘋果的 CPU 采用了不同的方式來引導(dǎo)操作系統(tǒng)內(nèi)核。引導(dǎo)加載程序(稱為 iBoot)加載一個 Mach-O 格式的可執(zhí)行目標文件,該文件支持壓縮,并封裝在一種經(jīng)過 ASN.1 簽名的 IMG4 格式中。與之相比,正常的 64 位 ARM 上的 Linux 則由一個普通的二進制鏡像引導(dǎo)(支持壓縮,也支持幾種容器格式),或者在 UEFI 平臺上由 Windows 風(fēng)格的“PE”可執(zhí)行文件引導(dǎo)。

CPU 核心啟動之后,真正的問題來了。在其他 64 位 ARM 系統(tǒng)上,這一步通常是通過 PSCI 接口調(diào)用固件(一些系統(tǒng)采用了輪詢表,但依然需要固件)。但在 M1 上,CPU 核心從一個 MMIO 寄存器指定的地址處開始(MMIO 寄存器由內(nèi)核鏡像設(shè)置成某個特定的偏移量,然后由引導(dǎo)程序鎖定),然后直接開始運行內(nèi)核。

除此之外,蘋果還設(shè)計了自己的中斷控制器 Apple Interrupt controller(簡稱 AIC),這個控制器與任何主流 ARM GIC 標準都不兼容。不僅如此,其定時器中斷并沒有像通常的 ARM 那樣連接到每個 CPU 中斷上,而是路由到 FIQ 上。FIQ 是一個很難理解的架構(gòu)特性,在老式的 32 位 ARM 處理器上經(jīng)常使用。很顯然,Linux 內(nèi)核并不支持通過 FIQ 發(fā)送中斷,所以我們必須自己實現(xiàn)。

系統(tǒng)內(nèi)的多個處理器互相通信需要一組處理器間中斷(IPI)。在舊的蘋果 SoC 上,這些中斷的處理方式與 IRQ 相似,即執(zhí)行 MMIO 并訪問 AIC。但在新的處理器上,蘋果使用了一組處理器核心寄存器來分發(fā)并通知 IPI,而且也路由到了 FIQ 上。所以 FIQ 的支持非常重要。

在處理了一些其他的硬件特性之后,筆者團隊添加了一個預(yù)加載器,作為啟動處理器核心的跳板,這樣就可以設(shè)置幀緩沖區(qū),并看到 Linux 啟動時的企鵝了。

需要更多輸入

不幸地是,筆者團隊并沒能用上 M1 Mac 上的 UART 線,所以只能通過其他方式來添加鍵盤(甚至鼠標)。M1 Mac Mini 有三種方式來實現(xiàn)這一點:M1 芯片上內(nèi)置的 USB 宿主(提供 Thunderbolt/USB 接口),PCIe 上的 xHCI USB 宿主(提供 A 類接口),以及藍牙。

團隊并沒有打算深入研究蘋果的藍牙,但大家注意到它使用了一種非標準的 PCIe 協(xié)議,而且不僅需要使用 M1 芯片上的 PCIe 接口,還需要為該協(xié)議編寫自定義的內(nèi)核驅(qū)動程序。這不是個理想的選擇。

也就是說,只能選擇 PCEe 并使用標準的內(nèi)核 xHCI 驅(qū)動,或者使用內(nèi)置的 USB 控制器。蘋果很早以前就在其芯片里使用了 Synopsys DWC3 雙角色 USB 控制器,而且該控制器有 Linux 內(nèi)核驅(qū)動。不幸的是,蘋果又給該控制器添加了自定義的邏輯,所以這里也需要大量工作。

M1 的 PCIe 和內(nèi)置的 DWC3 USB 控制器都使用 IOMMU,稱為 DART。蘋果一直在改進其 DART 設(shè)計,因此 IOMMU 的功能很齊全。最新版甚至支持子頁面內(nèi)存保護,這是在其他控制器中從未有過的。

為了將 M1 中的 USB 端口連接到 Mac Mini 背后的 USB C 口連接器上,團隊需要使用 I2C 上的芯片(意味著需要提供 GPIO 和 I2C 驅(qū)動程序),這兩者都使用了自定義固件。

在研究了幾天 USB 后,大家終于能夠連接到外部的 USB 集線器上并成功地連上了鍵盤、鼠標和閃存盤,從此就可以運行正常的 Linux 桌面版了。

操作指南

下載 Ubuntu rootfs

在 Mac Mini M1 上引導(dǎo) Linux 的第一步就是下載 Ubuntu POC 的 rootfs。我們采用了樹莓派的鏡像,因為它是 live 版本的 USB 啟動鏡像,所以只需要做出細微的修改即可。

解壓縮鏡像

你需要至少 16 G 的外置 USB。執(zhí)行下列命令解壓縮鏡像:

tar-xjvfubuntu-20.10-preinstalled-desktop-arm64+raspi.img.bz2

然后,使用磁盤工具找到外部 USB 的名稱。最后,執(zhí)行下列命令將鏡像復(fù)制到 USB 上:

sudoddif=ubuntu-20.10-preinstalled-desktop-arm64+raspi.imgof=/dev/rYOURUSBDISKbs=1m

連接到 Mac

通過 USB C 口適配器,將 USB 插入 Mac Mini M1 上。目前不支持 A 口。

引導(dǎo)至

為了引導(dǎo)至 1TR(真正的恢復(fù)操作系統(tǒng)),請關(guān)閉 Mac Mini M1,然后按住電源鍵,直到看到“l(fā)oading options”。加載完成之后,從頂端的菜單中選擇終端選項。

安裝自定義內(nèi)核

下一步就是安裝自定義內(nèi)核。筆者團隊編寫了一個腳本來減輕你的負擔(dān)。只需要運行:

/bin/bash-c"$(curl-fsSLhttps://downloads.corellium.info/linuxsetup.sh)"

該腳本會詢問用戶名和密碼。看到“Kernel installed”提示后就可以重啟了。

登錄

系統(tǒng)引導(dǎo)之后就會提示你登錄。用戶名為“pi”,密碼為“raspberry”。root密碼也是“raspberry”。

恢復(fù) MacOS

如果想恢復(fù)至 MacOS,只需在 1TR 中打開終端,執(zhí)行 bputil -n 即可。

責(zé)任編輯:lq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 芯片
    +關(guān)注

    關(guān)注

    463

    文章

    54051

    瀏覽量

    466648
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5611

    瀏覽量

    130065
  • Linux
    +關(guān)注

    關(guān)注

    88

    文章

    11772

    瀏覽量

    219129

原文標題:Linux 在 M1 上跑起來了

文章出處:【微信號:LinuxHub,微信公眾號:Linux愛好者】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    神眸再發(fā)新品!M1智能親情可視通搭起遠程陪伴橋梁

    2月13日,杭州研極微電子有限公司旗下品牌神眸繼發(fā)布DC1停車記錄儀后,緊接再推新品,聚焦老年陪伴市場,正式發(fā)布M1智能親情可視通,搭建子女與年邁父母遠程溝通的橋梁。該產(chǎn)品支持4G免流量、通話永久
    的頭像 發(fā)表于 02-13 11:37 ?449次閱讀
    神眸再發(fā)新品!<b class='flag-5'>M1</b>智能親情可視通搭起遠程陪伴橋梁

    全球首款仿生雙視泳池清潔機器人iGarden M1 Pro Max正式發(fā)布 斬獲CES 2026創(chuàng)新獎

    繼斬獲2026年國際消費電子展(CES)創(chuàng)新獎后,iGarden M1 Pro Max泳池清潔機器人今日全球正式發(fā)布。作為全球首款仿生雙視泳池清潔機器人,該旗艦產(chǎn)品樹立了行業(yè)全新技術(shù)標準,突破傳統(tǒng)
    的頭像 發(fā)表于 02-08 15:44 ?620次閱讀

    Microchip擴展maXTouch? M1觸摸屏控制器系列,實現(xiàn)更廣泛的屏幕尺寸覆蓋

    新型觸摸屏控制器為現(xiàn)代汽車應(yīng)用中超小到超大顯示格式帶來可靠觸摸傳感 ? Microchip Technology (微芯科技公司)再次擴展其 maXTouch ? ?M1 觸摸屏控制器系列,為更廣
    的頭像 發(fā)表于 01-29 10:41 ?6.4w次閱讀
    Microchip擴展maXTouch? <b class='flag-5'>M1</b>觸摸屏控制器系列,實現(xiàn)更廣泛的屏幕尺寸覆蓋

    中興微電子撼域M1芯片與ETAS AUTOSAR軟件完成適配

    近日,中興通訊控股子公司深圳市中興微電子技術(shù)有限公司(下文簡稱“中興微電子”)與全球領(lǐng)先的汽車軟件與服務(wù)提供商ETAS共同宣布,中興微電子車規(guī)級中央計算平臺SOC芯片“撼域”M1與ETAS
    的頭像 發(fā)表于 12-22 14:23 ?665次閱讀

    EVAL - M1 - 101T評估板:電機控制應(yīng)用的理想選擇

    EVAL - M1 - 101T評估板:電機控制應(yīng)用的理想選擇 在電機控制應(yīng)用領(lǐng)域,一款性能出色、功能豐富的評估板能為電子工程師的設(shè)計工作帶來極大便利。今天,我們就來深入探討英飛凌(Infineon
    的頭像 發(fā)表于 12-21 14:45 ?1353次閱讀

    探索Eval - M1 - CM610N3評估板:電機驅(qū)動應(yīng)用的理想之選

    探索Eval - M1 - CM610N3評估板:電機驅(qū)動應(yīng)用的理想之選 在電機驅(qū)動應(yīng)用的設(shè)計領(lǐng)域,擁有一款性能出色且易于評估的開發(fā)板至關(guān)重要。今天,我們就來詳細探討一下英飛凌(Infineon
    的頭像 發(fā)表于 12-21 09:40 ?696次閱讀

    EVAL - M1 - IM523評估板:助力電機驅(qū)動應(yīng)用設(shè)計

    EVAL - M1 - IM523評估板:助力電機驅(qū)動應(yīng)用設(shè)計 在電機驅(qū)動應(yīng)用設(shè)計領(lǐng)域,一款性能優(yōu)良且易于使用的評估板能為工程師們節(jié)省大量時間和精力。今天,我們就來詳細探討一下英飛凌
    的頭像 發(fā)表于 12-19 15:50 ?598次閱讀

    基于 DR1M90 的 Linux-RT 內(nèi)核開發(fā):從編譯配置 GPIO / 按鍵應(yīng)用實現(xiàn)(1

    本手冊由創(chuàng)龍科技研發(fā),針對 DR1M90,詳述 Linux-RT 實時內(nèi)核開發(fā):含實時性測試(LinuxLinux-RT 對比、CPU 空載 / 滿負荷 / 隔離狀態(tài)測試)、內(nèi)核
    的頭像 發(fā)表于 12-02 10:38 ?1201次閱讀
    基于 DR<b class='flag-5'>1M</b>90 的 <b class='flag-5'>Linux</b>-RT 內(nèi)核開發(fā):從編譯配置<b class='flag-5'>到</b> GPIO / 按鍵應(yīng)用實現(xiàn)(<b class='flag-5'>1</b>)

    基于安路DR1M90 FPSoC的Linux系統(tǒng)全流程開發(fā)指南(4)

    本手冊由創(chuàng)龍科技研發(fā),針對安路飛龍 DR1M90,詳述 Linux 系統(tǒng)開發(fā)流程:LinuxSDK 配置編譯、BOOT.bin(FSBL+U-Boot)開發(fā)、Kernel 與 Rootfs 開發(fā)
    的頭像 發(fā)表于 11-30 15:46 ?2212次閱讀
    基于安路DR<b class='flag-5'>1M</b>90 FPSoC的<b class='flag-5'>Linux</b>系統(tǒng)全流程開發(fā)指南(4)

    基于安路DR1M90 FPSoC 的Linux 系統(tǒng)全流程開發(fā)指南(3)

    本手冊由創(chuàng)龍科技研發(fā),針對安路飛龍 DR1M90,詳述 Linux 系統(tǒng)開發(fā)流程:LinuxSDK 配置編譯、BOOT.bin(FSBL+U-Boot)開發(fā)、Kernel 與 Rootfs 開發(fā)
    的頭像 發(fā)表于 11-26 17:01 ?335次閱讀
    基于安路DR<b class='flag-5'>1M</b>90 FPSoC 的<b class='flag-5'>Linux</b> 系統(tǒng)全流程開發(fā)指南(3)

    基于安路DR1M90 FPSoC 的Linux 系統(tǒng)全流程開發(fā)指南(1

    本手冊由創(chuàng)龍科技研發(fā),針對安路飛龍 DR1M90,詳述 Linux 系統(tǒng)開發(fā)流程:LinuxSDK 配置編譯、BOOT.bin(FSBL+U-Boot)開發(fā)、Kernel 與 Rootfs 開發(fā)
    的頭像 發(fā)表于 11-25 14:09 ?398次閱讀
    基于安路DR<b class='flag-5'>1M</b>90 FPSoC 的<b class='flag-5'>Linux</b> 系統(tǒng)全流程開發(fā)指南(<b class='flag-5'>1</b>)

    移植蜂鳥需要在Linux環(huán)境下嗎?

    《手把手教你設(shè)計CPU》書上運行Verilog仿真測試那章說為了重現(xiàn)仿真環(huán)境,最好在Linux環(huán)境下。不知道移植蜂鳥是否需要在Linux環(huán)境下,直接在Windows操作系統(tǒng)可否移植開發(fā)
    發(fā)表于 11-10 07:42

    M1 SMA整流二極管規(guī)格書

    M1 SMA/DO-214AC整流二極管,電流:1A 50V
    發(fā)表于 10-29 17:02 ?0次下載

    如何將 FreeMODBUS 從屬 RTU 模式移植 M032 系列微控制器?

    如何將 FreeMODBUS 從屬 RTU 模式移植 M032 系列微控制器
    發(fā)表于 08-19 07:20

    用于 Cat M1/1/NTN 和 WCDMA HSDPA/HSUPA/HSPA(頻段 1、2、4、5、8)和 CDMA(頻段類別 0、1、6、15)的多模式、多頻段功率放大器模塊 skyworksinc

    、6、15)的多模式、多頻段功率放大器模塊真值表,用于 Cat M1/1/NTN 和 WCDMA HSDPA/HSUPA/HSPA(頻段 1、2、4、5、8)和 CDMA(頻段類別 0、1
    發(fā)表于 05-13 18:35
    用于 Cat <b class='flag-5'>M1</b>/<b class='flag-5'>1</b>/NTN 和 WCDMA HSDPA/HSUPA/HSPA(頻段 <b class='flag-5'>1</b>、2、4、5、8)和 CDMA(頻段類別 0、<b class='flag-5'>1</b>、6、15)的多模式、多頻段功率放大器模塊 skyworksinc