在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

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

3天內不再提示

如何把Linux移植到M1

Linux愛好者 ? 來源:CSDN ? 作者:CSDN ? 2021-03-03 15:12 ? 次閱讀

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

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

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

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

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

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

開始將 Linux 移植 M1

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

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

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

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

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

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

需要更多輸入

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

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

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

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

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

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

操作指南

下載 Ubuntu rootfs

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

解壓縮鏡像

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

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

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

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

連接到 Mac

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

引導至

為了引導至 1TR(真正的恢復操作系統),請關閉 Mac Mini M1,然后按住電源鍵,直到看到“loading options”。加載完成之后,從頂端的菜單中選擇終端選項。

安裝自定義內核

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

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

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

登錄

系統引導之后就會提示你登錄。用戶名為“pi”,密碼為“raspberry”。root密碼也是“raspberry”。

恢復 MacOS

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

責任編輯:lq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 芯片
    +關注

    關注

    457

    文章

    51342

    瀏覽量

    428145
  • 寄存器
    +關注

    關注

    31

    文章

    5377

    瀏覽量

    121366
  • Linux
    +關注

    關注

    87

    文章

    11354

    瀏覽量

    210627

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

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

收藏 人收藏

    評論

    相關推薦

    THS8135進行YUV輸出,如何配置M1M2,還有SYNC_T這些信號?

    您好!我現在在使用THS8135的過程中遇到了點小麻煩,我想進行YUV輸出,但是不知道如何配置M1M2,還有SYNC_T這些信號,出來的結果和想要的結果不一樣
    發表于 02-14 06:26

    M1攜手6D Technologies云原生BSS平臺實現轉型

    M1攜手6D Technologies云原生BSS平臺,成功實現數字化轉型 印度班加羅爾2025年1月15日?/美通社/ -- 數字化轉型解決方案的全球領導者6D Technologies欣然宣布
    的頭像 發表于 01-15 15:42 ?138次閱讀

    中軟高科身份證讀取及M1卡讀寫二合一機具開發文檔

    中軟高科這款機具除了二代身份證閱讀功能,還可以對M1卡進行讀寫操作,從而實現身份證識讀與M1制卡二合一。 機具照片 開發文檔
    發表于 01-04 11:25

    【RA8D1試用活動】RA8D1B-CPKCOR開發板移植linux

    【RA8D1試用活動】RA8D1B-CPKCOR開發板移植linux
    的頭像 發表于 11-16 01:02 ?347次閱讀
    【RA8D<b class='flag-5'>1</b>試用活動】RA8D<b class='flag-5'>1</b>B-CPKCOR開發板<b class='flag-5'>移植</b><b class='flag-5'>linux</b>

    TAS5611有M1M2,M3模式設置腳,TAS5611的AD模式 BD模式有什么區別?

    TAS5611有M1M2,M3模式設置腳,請教一下芯片的AD模式BD模式有何區別?
    發表于 10-16 07:55

    飛凌微車規級視覺處理芯片M1系列:高性能、低功耗、小封裝尺寸

    電子發燒友網報道(文/李彎彎)近日,思特威(SmartSens)正式宣布全資子公司品牌——飛凌微電子(Flyingchip,簡稱“飛凌微”)。同時,飛凌微M1車載視覺處理芯片系列正式亮相,包括M1
    的頭像 發表于 08-14 09:11 ?4953次閱讀

    在MAC M1的虛擬機上運行ARM版的windows,ST-LINK的驅動為什么裝不上?

    在MAC M1的虛擬機上運行ARM版的windows,ST-LINK的驅動裝不上
    發表于 04-01 08:24

    怎么將pMCI[M1]-&gt;pSTM-&gt;bState 的 IDLE_START傳遞給STM[M1]-&gt;bState的?

    各位親: 我在5.4的庫里面發現按鍵啟動后,開始電機用的是 pMCI[M1] 這個結構體,如下 __weak bool MC_StartMotor1(void) { return
    發表于 03-27 07:56

    M1芯片和M3芯片相差大嗎

    M1芯片和M3芯片在性能和應用上確實存在一定的差異。
    的頭像 發表于 03-13 16:41 ?3322次閱讀

    m3芯片和m3pro芯片怎么選 蘋果m1芯片和m3芯片區別在哪

    ,具有8核CPU和10核GPU,能夠提供出色的計算能力和圖形處理性能。對于日常使用、輕度游戲和一些基本的圖形處理任務,M3芯片能夠輕松應對,同時保持較低的功耗,為設備提供長久的續航能力。 蘋果m1芯片和m3芯片區別在哪 蘋果
    的頭像 發表于 03-12 17:24 ?4331次閱讀

    M3芯片與M1芯片的比較

    M3芯片與M1處理器相比,在多個方面表現出顯著優勢。首先,M3芯片在架構上采用了更先進的制程技術,如T8103內核和N5P制程,使其具有更高的性能和更低的功耗。
    的頭像 發表于 03-11 18:20 ?3295次閱讀

    M3芯片與M1芯片差別大嗎

    M3芯片與M1芯片在多個方面存在顯著的差異。首先,M3芯片采用了更先進的制程技術,這使得它在性能上有所提升,特別是在處理復雜任務和多線程應用時表現更為出色。
    的頭像 發表于 03-11 16:52 ?2576次閱讀

    M1芯片和M3芯片的區別

    M1芯片和M3芯片都是蘋果自家研發的處理器,它們在性能和設計上各有特點。
    的頭像 發表于 03-11 16:37 ?3705次閱讀

    M1M2和M3芯片是什么意思

    M1M2和M3芯片都是蘋果公司推出的自研處理器芯片,具有不同的特點和發布時間。
    的頭像 發表于 03-08 15:51 ?6340次閱讀

    ELF 1技術貼|如何將Python3.6.9移植開發板上

    在ELF1開發板的Linux4.1.15eMMC鏡像中,默認預裝了Python2.7。為了適應更多應用場景,有些小伙伴可能需要移植其他版本的Python,下面將以Python3.6.9為例詳細介紹
    的頭像 發表于 02-22 14:06 ?490次閱讀
    ELF <b class='flag-5'>1</b>技術貼|如何將Python3.6.9<b class='flag-5'>移植</b><b class='flag-5'>到</b>開發板上
    主站蜘蛛池模板: 在线精品视频成人网 | 亚洲精品久久久久久久蜜桃 | 看黄网站在线看 | 欧美色视频网站 | 天堂色综合 | 91大神精品 | 人人做人人爽人人爱秋霞影视 | 新天堂网 | 成人性生活免费视频 | 韩国三级无遮挡床戏视频 | ts人妖系列在线专区 | 激情久久婷婷 | 日本免费成人 | 婷婷久久精品 | av在线色| 亚洲三级在线视频 | 手机在线看片福利盒子 | www五月天com | 五月婷婷丁香花 | 中文字幕亚洲一区二区va在线 | 禁h粗大太大好爽好涨受不了了 | 色综合天天射 | www.色.com| 亚洲91色| 就要爱综合 | www懂爱 | 一级做a免费视频 | 亚洲婷婷综合网 | 美女被草视频 | 香蕉网影院在线观看免费 | 97福利| 女生扒开尿口让男生舔 | 四虎永久在线日韩精品观看 | 男女交性高清视频无遮挡 | 一区二区三区无码高清视频 | 久久久久久久久女黄 | 女色专区 | 99久久99久久久精品齐齐鬼色 | 椎名空中文字幕一区二区 | 国产亚洲高清在线精品不卡 | 男女视频在线看 |