怎樣自制Linux系統(tǒng)?
我們假設(shè)主題想要為特定的平臺定制特定的Linux系統(tǒng)。有很多這樣的工具,可以參考這篇文章:
本文介紹了制作Linux系統(tǒng)的七種工具:
Linux基金會已經(jīng)為Rootfs開發(fā)了一個規(guī)范文檔:LinuxFHS,基于這個文檔,社區(qū)可以開發(fā)自己的實現(xiàn)。以下是社區(qū)的一些候選生產(chǎn)方法:
1.Busybox,BusyBox將許多常見UNIX實用程序的微小版本合并成一個小的可執(zhí)行文件。
,一個簡單、高效、易用的工具,通過交叉編譯生成嵌入式Linux系統(tǒng)。
,嵌入式Linux的構(gòu)建框架。
4.Yocto不是一個嵌入式LINUX發(fā)行版,它為您創(chuàng)建了一個自定義發(fā)行版。
5.LFS,一個完全從源代碼為您提供構(gòu)建您自己的定制Linux系統(tǒng)的一步一步的指導(dǎo)的項目。
,這個項目為你提供了一步一步的指導(dǎo),幫助你完全從源代碼開始構(gòu)建你自己的定制Linux系統(tǒng)。
7.發(fā)行版,十大最流行的linux發(fā)行版比較
Busybox小巧輕便,它提供了常見Unix工具集的微小實現(xiàn)。雖然麻雀雖小五臟俱全,但它可以做一個從Linux內(nèi)核開始,稍加調(diào)整的符合FHS標(biāo)準(zhǔn)的文件系統(tǒng),特別適合入門級的嵌入式Linux開發(fā)。它不不要花太多時間去理解Linux文件系統(tǒng)的組織結(jié)構(gòu)和引導(dǎo)過程。
腦攝取指數(shù)Ldroot,名字主要是關(guān)于制作rootfs的,集成了大量的輕量級工具和Busybox、uclibc等代碼庫,可以用大家熟悉的內(nèi)核配置工具進行配置,制作嵌入式環(huán)境的根文件系統(tǒng),所以之前用來制作Linux實驗室的迷你Rootfs。它不僅提供了預(yù)編譯各種架構(gòu)的交叉編譯器工具鏈,還可以用來制作交叉編譯器工具,還可以用來編譯內(nèi)核、Qemu等。為什么不用Buildroot做完整的rootfs?最重要的是,它沒有包管理,需要一個基本的下載編譯過程,有點費時。但是,如果你需要做一個比較小的嵌入式系統(tǒng),這個過程是值得的。第一次編譯后,后面就相對容易了。
Openembedded提供了更加靈活的配置功能,引入了"菜單"以及一個特殊的配置工具:Bitbake,它也增加了可伸縮性,但大大增加了復(fù)雜性和編譯時間。相比之下,Buildroot隱藏了這些細(xì)節(jié)。
Yocto比Openembedded更具可配置性和可擴展性。甚至通過引入bsp,支持真機和開發(fā)板,還可以通過配置添加包管理工具,所以有能力通過大量預(yù)制"食譜"。Yocto和Openembedded共享Bitbake和openembedded-core,這是openembedded的構(gòu)建系統(tǒng),Yocto做了自己的構(gòu)建工具:Poky。關(guān)于Yocto和Buildroot之間更完整的比較,請參見:buildroot項目。
LFS,Linux從無到有,從名字就可以理解。就是做一個Linux,手動的,一步一步的從零開始。相比Busybox,它包含了各種正常大小的包,還做了工具鏈和代碼庫。Busybox有一個很小的代碼庫,但是沒有工具鏈。
CLFS,交叉LFS,這里主要體現(xiàn)為交叉編譯,即在一個架構(gòu)上按部就班地完成另一個架構(gòu)的LFS過程。
發(fā)行,Linux世界的發(fā)行正在開花。不同的主題,不同的桌面,不同的領(lǐng)域,不同的更新頻率,不同的包管理工具,讓人眼花繚亂。目前業(yè)內(nèi)還是普遍采用這種。幾個:Ubuntu,Debian,ArchLinux,CentOS,Android。Ubuntu現(xiàn)在被各大企業(yè)廣泛使用,每年4、10月份發(fā)布一個版本;Debian更新較慢,可能更穩(wěn)定;ArchLinux的包是滾動更新的,單個軟件的新版本可以快速獲得;CentOS基本上是社區(qū)版的Redhat安卓是手機用的。發(fā)行版的好處是有預(yù)編譯的工具鏈、工具和Qemu,還有各種代碼庫,更適合專注于應(yīng)用開發(fā)。然而,并不是所有的發(fā)行版都支持多種架構(gòu)。Ubuntu和Debian是特例。都支持ARM,PowerPC和S390,Debian也支持MIPS。除了CD包,Ubuntu還提供了Ubuntu-base(非常基礎(chǔ))和Ubuntu-cor
新手如何學(xué)習(xí)Java?
作為一名多年的Java程序員,我也出版過Java編程書籍,所以我來回答這個問題。
對于初學(xué)者來說,想要學(xué)好Java,要注意以下幾個方面:
首先,正確理解各種"抽象"爪哇的。學(xué)習(xí)Java意味著學(xué)習(xí)各種"抽象",包括類、接口和抽象類。不同的抽象層次意味著不同的功能。對于初學(xué)者來說,要想正確掌握各種抽象,就要從基本的Java編程流程入手,包括類的設(shè)計,對象的創(chuàng)建,方法的調(diào)用。此外,他們應(yīng)該注重學(xué)習(xí)多態(tài)性的使用。做更多的實驗是理解各種抽象的好方法,因為實驗往往可以建立一個"圖片"對于初學(xué)者的概念,從而幫助理解。
第二,注重知識結(jié)構(gòu)的全面性。在學(xué)習(xí)Java開發(fā)的過程中,要系統(tǒng)的學(xué)習(xí)操作系統(tǒng)、計算機網(wǎng)絡(luò)、數(shù)據(jù)結(jié)構(gòu)、算法設(shè)計、數(shù)據(jù)庫知識。這些計算機基礎(chǔ)內(nèi)容,對于學(xué)習(xí)Java意義重大。想要在Java開發(fā)領(lǐng)域走的更遠(yuǎn),就必須重視基礎(chǔ)知識的學(xué)習(xí)。學(xué)習(xí)期間,建議使用Linux操作系統(tǒng)進行實驗。未來很多Java的開發(fā)都離不開Linux操作系統(tǒng),比如大數(shù)據(jù)應(yīng)用開發(fā),物聯(lián)網(wǎng)平臺開發(fā)。
第三:確定一個主攻方向。目前Java的主要應(yīng)用領(lǐng)域包括Web開發(fā)、Android開發(fā)和大數(shù)據(jù)開發(fā),以及很多網(wǎng)絡(luò)。服務(wù)也需要用Java寫后端函數(shù)。此外,Java也是Rampampd程序員,這涉及到一些平臺和容器的開發(fā)。比如Hadoop這個大數(shù)據(jù)平臺,就是用Java語言寫的。對于Java初學(xué)者來說,要根據(jù)自己的知識結(jié)構(gòu)和興趣愛好選擇一個合適的主攻方向。
最后,在當(dāng)前的大數(shù)據(jù)和云計算時代,對全棧Java程序員的需求很大,所以學(xué)習(xí)全棧Java開發(fā)也是一個不錯的選擇。Java全棧開發(fā)需要重視前端開發(fā)技術(shù)的學(xué)習(xí),重點是Javascript語言的學(xué)習(xí)。
本人從事互聯(lián)網(wǎng)行業(yè)多年,目前在讀計算機專業(yè)研究生。我的主要研究方向是大數(shù)據(jù)和人工智能。我會陸續(xù)寫一些互聯(lián)網(wǎng)技術(shù)方面的文章,有興趣的朋友可以關(guān)注我。我相信我一定會有所收獲。
如果你有關(guān)于互聯(lián)網(wǎng),大數(shù)據(jù),人工智能,或者考研的問題,可以在評論區(qū)留言!