秒殺SSD,Ubuntu極速開發環境搭建

2 贊 回覆發表於2015-07-27

ubuntu開啟的正確方式(笑)

在這個快節奏的時代。能夠使用最快速度最低代價完成任務具有非常重要的意義,對於現代開發者來說,Linux是生活中必不可少且不可替代的工具,如果我們在開發少或學習中少一些遇到環境的坑,會節省很多時間,潛伏在各種Linux群中數年,發現大家都有手賤(操作失誤,笑),因此在本文中給出終極解決方案: 直接使用Ubuntu Live CD 來完成系統的啟動。

那麼最快的Linux安裝辦法又是什麼呢?其實經過嚴謹的思考之後我個人覺得是不安裝。我們可以準備從grub啟動ubuntu作業系統把系統放到記憶體中,再預製出各種情況的環境包,也就是環境模組化,因為系統是在整個記憶體中所以速度非常非常快,需要模組化的內容並不多,比如說ssh vim tmux 為一組工具,開機後一個命令就可以啟用工具包,不到幾秒鐘的時間即可完成,其他的如Chrome瀏覽器一類的都可以快速完成在記憶體上的安裝。通過這種方式讓環境更加靈活更加快速準備好開發環境。

這是一個思路上的變化,從我需要什麼就安裝什麼一起都準備好給你用->變成了只啟動基礎的系統然後我需要什麼我就後載入什麼。

最後的準備在於容器,Docker 以及RKT與RunC的準備,在團隊內可以秒級推送執行的環境。

秒殺SSD,ubuntu極速開發環境搭建

本文依然有它的缺點: 主要體現在兩個方面

  1. 如果預設驅動不好使會造成很多麻煩。
  2. 對於記憶體小的開發機器還是做快照比較好。最少4G記憶體,我們推薦記憶體在8G以上最好是16G或者32G記憶體的機器上採用此方案。

因為本方案整個作業系統都是載入到記憶體中的,硬碟速度即為記憶體的速度,我這裡實測可以達到4.5Gb/s,所以你準備好屌絲逆襲(買不起SSD)秒殺高富帥了嗎?

ubuntu

對於它的簡單介紹可以參考這裡。當然對於我本人而言選擇Ubuntu主要原因僅僅是對他比較熟悉。並不限制使用什麼發行版本。如果您要是選本方案搭建環境,並且選擇其他發行版本請選擇LiveCD儘量小一點的,如果能自己裁剪LiveCD就更好了,另外儘量選擇64位架構。當然自己越熟悉越好。

雖然Ubuntu有一點不自由,但是我個人覺得包的質量管理還是非常好的,的確適合開發者使用。

Docker

官方:https://www.docker.com/

它對於我來說,幾乎就像是水,如果沒有他就沒有今天的豐富多彩的執行方式,它可以讓程式連同環境一起打包執行,使得部署備份等等非常方便,對於本次環境構建而言我們可以在個人的registry上備份自己的環境,只需要一小段時間就可以克隆回來。再加上現在各種永久免費的國內加速服務這種環境部署就是程式設計師天堂。更多細節請關注這裡

在本文中我們使用單檔案版本的Docker檔案,方便可控。無任何累贅。本人不喜指令碼安裝。

RunC && RKT

這兩種產品是libcontainer的代表。相對於Docker來說,它是一個容器只需要一個程式,對於Docker來說,他需要一個守護程式。在本文中(本博主)不評價任何產品的好壞,只說什麼時候適合用什麼。當然在我們這裡利用了它啟動方便,掛載方便的特性讓我們的工作更方便更方便更方便!

由於現在RunC還沒有釋出1.0版本文件幾乎沒有,因此我這裡會給出我的詳細研究結果。至於RKT還是大家自己摸索,文件已經很全了。

CoreOS

作為專門執行容器的作業系統,穩定性可不屬性都是前所未有,當然我們的容器可以跑在這個上面本文中會提及兩個系統的相容性方案。

  1. Ubuntu適合程式開發的情況。啟動速度可能在1分鐘左右(有點慢)。但是有圖形介面,有定製基礎環境的方案。
  2. CoreOS適合跑程式,啟動速度在10秒以下適合釋放更多記憶體來跑臨時業務,做測試的時候實用此方案。

從Grub開始

什麼是Grub

它可以裝在硬碟上幫助你啟動作業系統,幾乎所有作業系統都可以,當然也包含本次的方案內容。安裝方式有很多種。而且必須得根據自己的情況來安裝。因為每個人電腦上的作業系統情況都不一樣,有的已經有系統了。有的不想給自己裝引導。可能先放到u盤上引導都有可能。因此這裡不做安裝方法上的更多描述可以自己根據情況到搜尋引擎上搜尋。

Grub 的安裝

我之前是安裝了windows,所以我直接安裝了EasyBCD然後安裝NeoGRUB來實現的。具體操作步驟如下:

  1. 下載安裝EasyBCD
  2. 如圖所示秒殺SSD,ubuntu極速開發環境搭建
  3. 安裝重啟電腦之後選擇Grub啟動項可以進入一個類似輸入命令的介面即可確定完成安裝。

Ubuntu 啟動配置

啟動準備

如果想要準備啟動Ubuntu那麼有三個關鍵要素,

  1. ubuntu-14.04.2-desktop-amd64.iso
  2. image中casper/vmlinuz.efi
  3. image中casper/initrd.lz

這三個檔案作為啟動的必要檔案請放到分割槽中容易找到的地方。推薦做法:給自己的硬碟上開個EXT4 分割槽,然後把三個檔案丟到裡面去。

啟動引數除錯

工作中我們講求流程,當然我們也需要一定的路程,我們不可能一次調整就成功把ISO啟動起來。因此我們先加一個除錯流程。

root (hd0,1)
kernel (hd0,1)/casper/vmlinuz.efi boot=casper iso-scan/filename=/ubuntu-14.04.2-desktop-amd64.iso ro quiet splash locate=en_US.UTF-8
initrd (hd0,1)/casper/initrd.lz
  1. 你需要看清楚把檔案放到了第幾塊硬碟上,第幾塊分割槽上。組成引數為(hd0,1)(我的是0號硬碟第二個分割槽)。如果你實在分不清可以參考這裡
  2. root (hd0,1) 設定GRUB的root裝置
  3. kernel 命令套格式,變化引數 vmlinuz.efi 和 ubuntu-14.04.2-desktop-amd64.iso 要與你放到硬碟上的位置對應,可以使用Tab自動補全非常實用。
  4. initrd 依然是套格式找到對應硬碟傻姑娘的initrd.lz的位置。
  5. 如果出現錯誤了按↑會出現剛才的命令,多加修改直到成功啟動。

啟動引數放到硬碟中

如果是NeoGrub配置檔案路徑C:/NST/menu.lst,其他的請參考說明文件,一般都會有的。

配置檔案寫法:

timeout 3
default 0

title Ubuntu
root (hd0,1)
kernel (hd0,1)/casper/vmlinuz.efi boot=casper iso-scan/filename=/ubuntu-14.04.2-desktop-amd64.iso ro quiet splash locate=en_US.UTF-8
initrd (hd0,1)/casper/initrd.lz

3秒等待自動選擇第一項,名稱ubuntu 別的剩下的就是剛才除錯內容的命令了。

完成剛需配置

剛醒需求配置是指在容器之外的剛醒需求配置,比如說編輯器,SSH等等工具箱。配置方法: APT。

  1. 修改安裝源:sed -i ‘s/archive.ubuntu.com/mirrors.aliyun.com/g’ /etc/apt/sources.list && apt-get update
  2. 安裝你需要的軟體包:apt-get install -y vim screen tmux ssh-server等等
  3. 除錯你的環境看看是否好使,然後複製資料夾/var/cache/apt/archives中所有deb檔案即為您剛才所有的安裝包。複製到一個可以持久化的資料夾中等待使用。
  4. 回撥環境: 每當您重新啟動之後這些安裝包即消失,想恢復,進入到上一步中複製到的資料夾中執行如下命令dpkg -i *即可安裝預先準備好的軟體
  5. 靈活使用,此步驟為發揮組合拳威力的一步。當您反覆定製凝練您的安裝包之後,會根據個人情況選擇不同的目錄來初始化您的環境,其結果是,又小又輕,非常可靠。再也不怕手賤導致環境崩壞,再加上外部的git服務保證工作內容的安全性基本上可以肯定的說:我們的環境與硬體與工作耦合度降低不少.
  6. 對於APT無法安裝的內容,比如說JDK 與定製版本的Eclipse您可以通過下載完之後持久化儲存到硬碟中,寫一個指令碼解壓後放到硬碟中至於環境直接寫入到profile中即可。
  7. 使用此方法之後假如您使用IDE真的會有一個非常非常大的速度提升,我開啟Eclipse C/C++ 5秒鐘即可。

容器安裝配置

一般情況下我們安裝Docker都是通過網上下載指令碼安裝,但是這種情況下我們推薦使用直接下載單檔案版本的來完成安裝安裝指令碼如下:

curl -sSL -O https://get.daocloud.io/docker/builds/Linux/x86_64/docker-latest
chmod +x docker-latest
mv docker-latest /usr/bin/docker
docker -d &

在第三行中複製docker程式到任何Path下的資料夾內備用。在配置上,還是要吧/var/lib/docker放到可持久化的軟連線下面。比如說按照下面的操作:

rm -rf /var/lib/docker
ln -s /isodevice/docker /var/lib/docekr

按照這種方法操作可以讓docker image 持久化儲存在硬碟中。重啟也能找回來。這裡注意,如果您之前就實踐了CoreOS 171.3 版本上的Docker它使用的是1.6版本他的儲存檔案格式與1.7的不同因此不通用。我就踩到這個坑了。接下來的操作就與Docker一樣了。

注意:這個安裝包: cgroup-lite_1.9_all.deb 一定要裝,預設的光碟中就差這一個依賴,在下面的安裝包中有要不就apt安裝儲存下來都可以。

材料準備

我在百度雲盤中準備了三個檔案,第一個是docker 1.7.1 第二個準別了vim screen ssh-server tmux CGroup的安裝包。最後一個把我常用的Docker images 打包放出來了。其實在準備這個方案花最多時間就是在於精簡依賴,最後發現只需要一個CGroup安裝包。

總結

在本段文件中,我們給出了一個全新的使用Linux作業系統的思路不安裝。並且做了一定的前期準備工作。啟動了Linux作業系統做到本步驟如果您是新手就可以開始Linux的學習旅程了,如果您是需要此方案工作已經可以展開一般性質的工作了。
最後我真的拆掉我的三爽垃圾ssd(越用越慢)直接上記憶體。

方案合理要素:

  1. root許可權過大。有時導致無法挽回的誤操作。
  2. 現在的電腦記憶體不是很貴。大部分Linux電腦記憶體都在閒置。
  3. Linux作業系統如果每次執行的任務如果比較單一(一臺物理機只給一個人用)真的不會很大。
  4. 給重新啟動計算機賦予了新的意義。
  5. 真正超過SSD的速度,成本更低。(實測啟動Eclipse C/C++ 僅需要5s)

相關文章