Linux 對 ARM 的支持一團糟

2020-12-17 開源中國

當硬體製造商正在談論基於ARM晶片的伺服器時, 支持ARM的軟體還要繼續努力開發以跟上發展步伐。LINUX越來越普 及,ARM晶片必須讓自己在這個系統上工作得更有效率。

      但是,根據IT WORLDS的編輯Brian Profitt的說法,基於ARM晶片的 Linux 系統已經徹底分化了,並且只有一部分專業的開發者和製造商明白到底發生了什麼。

Linus公開威脅停止添加與ARM相關的改進到 Linux 內核主幹裡去,這聽起來的確很殘忍。他回憶說,幾年前,當ARM晶片製造商開始在他們的設備中添加對linux的支持。他們急於推出嵌入式設備, 不加考慮地針對 Linux 內核做了很多與特定設備相關的改動。他們同樣忽視了GPL v2 licence要求,未能把發布的改動及時提交給linux 內核主幹維護人員。

當他們把代碼送給linus審閱時,很多的改動根本就是垃圾——這些代碼不能保證系統運行在其他設備上。linux內核測試組也不能及時跟進。結 果,linux對arm的支持變得一團糟,但是 Linux 社區內部已經盡了最大的努力將它們整合到一起。首先他們針對ARM的 Linux 內核分支開闢了一個新的git tree,linus也開始親自為這個 Linux 內核分支寫補丁。但是參與進來之後,他逐漸對ARM社區的狀況和生產出的代碼感到憤怒。linus公開抱怨說:大部分代碼在長遠看來就是一堆不可維護的垃圾。當然他指的是那些驅動程序而並非ARM社區。兩個月前他甚至警告說,如果ARM社區不設法改進和修正,他不會再費心去檢查這些代碼。

ARM晶片製造商們表態說他們已經在參與改進——他們成立了非盈利的Linaro組織來解決一團亂麻的狀況。這些製造商的名單中有Freescale、 IBM、Samsung、ST-Ericsson、Texas Instruments 和 ARM。 他們計劃成立一個針對 Linux 內核的 ARM 小組,這跟已經存在的 X86 小組很相似。不過頗具諷刺意味,因為正是X86小組的傢伙們在試圖幫助Linux出主意,清理目前與ARM設計相關的頑疾。
Linaro組織的CTO David Rusling 說還有很多工作需要做。現在每個 linux 內核新版本中,與 ARM相關的代碼更新就有70000行,與此相比,有關X86的代碼更新卻只有5000行左右。

在情況改善以前,Profitt 預測事情會變得更糟。ARM 相關的分支需要鞏固,在這個過程中一些與設備關係密切的特殊軟體將會消失。如果他們不能及時改進,基於ARM晶片的 Linux 系統會給管理帶來相當大的困難。

翻譯者:店小二許 (第一次翻譯啊,大家莫噴)
原文在 http://www.techeye.net/chips/arm-support-is-a-mess-in-linux-land

相關焦點

  • gcc、arm-linux-gcc和arm-elf-gcc的關係?
    從gcc源目錄下的config/arm中的t-linux和t-arm-elf中可以看出,不同的--target也影響gcc連接C語言庫,t-linux(--target=arm-linux)默認使用Glibc,-arm-elf(--target=arm-elf)使用- Dinhibit_libc禁止連接Glibc,這時我們就可以使用newlib等其他C語言庫編譯GCC工具鏈。
  • Linux Lab 發布 v0.4 rc3,新增 ARM64 Uboot 支持
    /docker/run linux-lab已經下載過的,請更新到最新版本並重啟 Linux Lab:$ cd cloud-lab && git pull$ tools/docker/update linux-lab$ tools/docker/rerun linux-lab進去以後,打開控制臺
  • 一次搞定 Arm Linux 交叉編譯
    為了讓這個流程變得簡單,開發者們為不同的晶片開發了不同的編譯器,比如針對 Arm 平臺的 arm-linux-gcc,針對 mips 平臺的 mips-linux-gnu-gcc,這些編譯器都是基於 GCC 針對具體的架構指令集進行對應配置,所以它們在運行的時候就就會生成和該目標平臺對應的可執行文件。
  • ARM-linux-gcc交叉編譯工具提示arm-linux-gcc can not find
    在Ubuntu12.04下安裝了arm-linux-gcc後,編譯Linux內核發現提示arm-linux-gcc can not find,查找了相關的網絡資料找到了答案
  • Arm linux內核構建關於.config的問題
    我們這裡使用arch/arm/configs/xxx_defconfig默認的配置文件。使用如下命令。make ARCH=arm xxx_defconfig然後使用make menuconfig 這裡可以根據需要更改配置。
  • CMake設置arm-linux-gcc交叉編譯器
    主機:Ubuntu10.04交叉編譯器:EABI-4.3.3本文引用地址:http://www.eepw.com.cn/article/201611/319327.htmCMake在ubuntu系統下默認使用系統的gcc、g++編譯器,編譯arm
  • ARM Linux根文件系統Root Filesystem的製作
    另外,udev也需要「proc文件系統」的支持。/sys用於掛載「sysfs文件系統」,「sysfs文件系統」在內核裡面可以選。目前我認為它就是給udev提供支持的,。「sysfs文件系統」也需要使用初始化腳本掛載。
  • 淺談分析Arm linux 內核移植及系統初始化的過程二
    core_initcall(fn)static int __init consistent_init(void) linux/arch/arm/mm/consistent.cstatic int __init v6_userpage_init(void) linux/arch/arm/mm/copypage-v6.cstatic int __init init_dma
  • 嵌入式ARM-Linux平臺上的編譯、配置和運行使用
    /configure配置編譯環境;執行make進行編譯export ARCH=armexport CROSS_COMPILE=arm-linux-gnueabi-.執行make進行編譯,完成後執行make install,編譯好的openssl庫和頭文件等被安裝在目錄/usr/local/ssl下export ARCH=armexport CROSS_COMPILE=arm-linux-gnueabi-.
  • arm-linux-ld命令 ld連結腳本
    我們看它是如何編譯的,注意我們這裡使用的不是arm-linux-gcc而是arm-elf-gcc,二者之間沒有什麼比較大的區別,arm-linux-gcc可能包含更多的庫文件,在命令行的編譯上面是沒有區別。
  • ARM Linux異常處理之data abort
    這裡所說的其它模式在linux正常運行過程中是不應該存在的,所以如果進入__dabt_invalid函數,那就代表Linux內核應該崩潰了。如果fn函數為空,或者函數返回不為0,則調用arm_notify_die函數。
  • OpenCV ffmpeg移植到ARM平臺
    = ar rc 該成 AR= /root/arm-none-linux-gnueabi/bin/arm-none-linux-gnueabi-ar rc(同上)# second step in .a creation (use "touch" if not needed)AR2= ranlib 該成 AR2= /root/arm-none-linux-gnueabi/bin/
  • ARM Linux內核啟動要求
    arm.linux.org.uk/developer/booting.php本文引用地址:http://www.eepw.com.cn/article/201611/316973.htmAuthor: Russell KingInitial date: May 18, 2002Revision:1 - 17 September 20042
  • Virbox 加密上線,支持保護安卓及ARM-Linux程序
    北京深思數盾推出Virbox Protector 加密工具以來,不斷延伸支持範圍,目前,IOT領域的軟體保護也能通過Virbox 加密了。目前,Virbox Protector已支持Android 程序和 ARM-Linux 程序,通過對函數動態加密或指令混淆,有效實現反跟蹤,並且可以隱藏 ELF 代碼和保護數據,有效對抗反編譯。
  • Linux下diff的操作詳解
    _lyn/arch/arm/boot/compressed/ashldi3.o and linux-4.19-rc3/arch/arm/boot/compressed/ashldi3.o differdiff -ruN linux-4.19-rc3_lyn/arch/arm/boot/compressed/.ashldi3.o.cmd linux-4.19-rc3/arch/arm/boot
  • Kali-Linux 2020.2,深、淺色主題,PowerShell元支持,ARM升級
    這意味著,如果在系統安裝配置過程中選擇安裝這個元包,或者在Kali啟動並運行後,通過命令:sudo apt install -y kali-linux-large安裝 kali-linux-large 軟體包;如果PowerShell與當前的系統架構兼容,就可以直接跳轉到pwsh。
  • 用OpenEmbedded構建嵌入式Linux系統
    創建一個名為xxxx_env.sh的腳本文件:這裡的xxxx代表板子的名稱,比如為pxa300寫的pxa300_env.sh內容如下:unset TOOLCHAIN_PREFIXexport BOARD_NAME=pxa300export TOOLCHAIN=/usr/local/arm-linux-4.1.1env.sh arm
  • linux基礎複習(5)建立linux開發環境
    onload=if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';} border=0>其中:- arm-linux-gcc
  • Linux 系統內核的調試
    儘管在一些資料中說明使用工具鏈arm-elf-tools-20040427.sh ,但是由於arm-elf-xxx與arm-linux-xxx對宏及連結處理的不同,經驗證明使用arm-elf-xxx工具鏈在連結vmlinux的最後階段將會出錯。
  • 基於嵌入式Linux的MapInfo格式地圖顯示
    引言農田信息採集裝置,車載導航儀和PDA等機載和手持式小型設備都需要GPS定位和地圖顯示功能的支持。而市場上實現這種功能的大部分平臺都是基於WINCE這種作業系統,可以採用EVC開發,開發流程明確,驅動支持較豐富,但總體開發成本較高。