注意:安裝子系統需要預留C:盤30G左右的空間,這個應用是不支持往其他硬盤移動的。不要移動,會出錯的。
打開win10商店,搜索linux,然后選擇Ubuntu 20.04 LTS進行安裝。
按win+s,輸入“windows功能”,然后打開下圖這個選項。
設置完重啟電腦。
接下來找到已經安裝好的 Ubuntu 20.04 LTS,設置一個賬號名和密碼,就可以打開了,就是這么簡單。
將Linux shell改為bash。在終端運行如下命令,然后選擇 no。
sudo dpkg-reconfigure dash
# 安裝前,先更新源
sudo apt-get update
sudo apt-get install binutils git-core git-lfs gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip m4 python3.8 python3-setuptools python3-pip -y
sudo pip3 install --upgrade pip
# 設置python和python3軟鏈接為python3.8
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.8 1
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 1
# 使用華為源安裝requests
pip3 install -i https://repo.huaweicloud.com/repository/pypi/simple requests
注意:可以整段復制全部安裝。
# 為了方便管理,新建一個文件夾存放這些工具
mkdir BuildTools && cd BuildTools
# 下載llvm,解壓,添加環境變量配置文件
wget https://repo.huaweicloud.com/harmonyos/compiler/clang/10.0.1-53907/linux/llvm.tar.gz
tar -xvf llvm.tar.gz
echo "export PATH=~/BuildTools/llvm/bin:$PATH" >> ~/.bashrc
# 下載gn,解壓,添加環境變量配置文件
wget https://repo.huaweicloud.com/harmonyos/compiler/gn/1717/linux/gn-linux-x86-1717.tar.gz
tar -xvf gn-linux-x86-1717.tar.gz
echo "export PATH=~/BuildTools:$PATH" >> ~/.bashrc
# 下載ninja,解壓,添加環境變量配置文件
wget https://repo.huaweicloud.com/harmonyos/compiler/ninja/1.9.0/linux/ninja.1.9.0.tar
tar -xvf ninja.1.9.0.tar
echo "export PATH=~/BuildTools/ninja:$PATH" >> ~/.bashrc
# 下載hc-gen,解壓,添加環境變量配置文件
wget https://repo.huaweicloud.com/harmonyos/compiler/hc-gen/0.65/linux/hc-gen-0.65-linux.tar
tar -xvf hc-gen-0.65-linux.tar
echo "export PATH=~/BuildTools/hc-gen:$PATH" >> ~/.bashrc
# 下載repo,用來同步碼倉,并添加權限
curl https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 > repo
chmod a+x repo
# 生效環境變量
source ~/.bashrc
# 返回主目錄,新建文件夾
cd && mkdir OpenHarmony && cd OpenHarmony
# 配置git用戶信息
git config --global user.name "yourname"
git config --global user.email "your-email-address"
git config --global credential.helper store
# repo初始化
repo init -u https://gitee.com/openharmony/manifest.git -b master --no-repo-verify
# 更新代碼
repo sync -c
# 更新二進制
repo forall -c 'git lfs pull'
獲取prebuilts
# 下載腳本。
curl https://gitee.com/landwind/script-tools/raw/master/Shell/OpenHarmony/OpenHarmony_2.0_canary_prebuilts_download.sh >./prebuilts_download.sh
# 下載并解壓prebuilts壓縮包到指定位置。
bash ./prebuilts_download.sh
# 二進制默認存放在與OpenHarmony同目錄下的OpenHarmony_2.0_canary_prebuilts下,如需修改默認位置,請編輯prebuilts_download.sh修改bin_dir值。
# 切換到之前的目錄。
cd -
下面這兩部分,按照官方文檔來就可以。
配置NodeJS環境和獲取Node_modules依賴包
為了編譯JS Framework,開發者需要在Linux服務器下載配置NodeJS(注意:步驟中OpenHarmony目錄指代當前工程的根目錄,可自定義),具體操作如下:
# 創建nodejs目錄
mkdir -p OpenHarmony/prebuilts/build-tools/common/nodejs
# 進入nodejs目錄
cd OpenHarmony/prebuilts/build-tools/common/nodejs
# 下載nodejs
wget --no-check-certificate https://nodejs.org/download/release/v12.18.4/node-v12.18.4-linux-x64.tar.gz
# 解壓nodejs壓縮包
tar -zxvf node-v12.18.4-linux-x64.tar.gz
# 切換到之前的目錄
cd -
cd OpenHarmony/third_party/jsframework #進入jsframework目錄
export PATH=../../prebuilts/build-tools/common/nodejs/node-v12.18.4-linux-x64/bin:${PATH} #設置NodeJS環境變量
npm install #下載node_modules包
cd - #切換到之前的目錄
#創建js-framework目錄
mkdir -p OpenHarmony/prebuilts/build-tools/common/js-framework
cp -rp OpenHarmony/third_party/jsframework/node_modules OpenHarmony/prebuilts/build-tools/common/js-framework/
./build.sh --product-name Hi3516DV300
目前,計算機市場提供了大量以數字形式存儲信息的機會,現有的存儲設備包括內部和外部硬盤驅動器、照片/攝像機的存儲卡、USB 閃存驅動器、RAID 集以及其他復雜存儲。數據片段以文件的形式保存在它們上,如文檔、圖片、數據庫、電子郵件等,這些數據必須在磁盤上有效地組織并在需要時輕松檢索。
以下文章提供了文件系統的一般概述,這是任何存儲上數據管理的主要手段,并描述了其不同類型的特性。
任何計算機文件都存儲在具有給定容量的存儲介質上。實際上,每個存儲器都是用于讀取或讀寫數字信息的線性空間,它上的每個信息字節都有其與存儲開始的偏移量,稱為 地址 ,并由該地址引用。存儲可以表示為具有一組 編號單元格的網格 (每個單元格是一個字節)。保存到存儲中的任何項目都有自己的單元格。
通常,計算機存儲使用扇區和扇區內偏移對來引用存儲上的任何信息字節。 扇區 是一組字節(通常為 512 字節),是物理存儲的最小可尋址單元。 例如, 硬盤驅動器上的 字節 1040將被稱為扇區#3 , 偏移量為扇區 16 字節 ([扇區]+[扇區]+[16 字節])。該方案用于優化存儲尋址并使用較小的數字來引用位于存儲上的任何信息部分。
為了省略地址的第二部分(扇區內偏移),文件通常 從扇區開始存儲 并 占據整個扇區 (例如:一個10字節的文件占據整個扇區,一個512字節的文件也占據整個扇區)扇區,同時,一個 514 字節的 1 占用了兩個完整的扇區)。
每個文件都存儲在“未使用的”扇區 中,以后可以通過其已知位置和大小讀取。但是,我們如何知道哪些扇區被占用,哪些扇區空閑?文件的大小、位置和名稱存儲在哪里?這正是文件系統 所負責的。
作為一個整體, 文件系統(通常縮寫為 FS)是數據的結構化表示和 描述該數據的一組元數據。它在格式化操作期間應用于存儲。這種結構用于整個存儲的目的,也是隔離存儲段的一部分—— 磁盤分區。通常,它在 塊而不是扇區中運行。 FS 塊 是優化存儲尋址的扇區組。現代類型通常使用從 1 到 128 個扇區(512-65536 字節)的塊大小。文件通常存儲在塊的開頭并占據整個塊。
存儲中的持續 寫入/刪除操作 會導致其 碎片化。因此,文件不是作為整個單元存儲的,而是被分割成片段的。例如,一個卷完全被大小約為 4 個塊的文件(例如一組照片)占據。用戶想要存儲一個占用 8 個塊的文件,因此刪除了第一個和最后一個文件。通過這樣做,他或她釋放了 8 個塊的空間,但是,第一段位于存儲起點附近,而第二段位于存儲終點附近。在這種情況下,8 塊文件被分成兩部分(每部分 4 塊)并占用空閑空間“孔”。關于這兩個片段的信息作為其組成部分存儲在文件系統中。
除了用戶的數據,文件系統還包含自己的 參數 (如塊大?。?文件描述符 (包括其大小、位置、片段等)、 名稱 和 目錄層次結構。它還可以存儲安全信息、 擴展屬性 和其他參數。
為了滿足不同用戶的存儲性能、穩定性和可靠性等需求,我們開發了大量的 FS 類型(或格式),以便能夠更有效地服務于不同的用途。
Microsoft Windows 使用兩種主要的文件系統: NTFS,該操作系統的大多數現代版本默認使用的主要格式,以及 FAT,它繼承自舊 DOS 并具有 exFAT 作為其后來的擴展名。ReFS也被 Microsoft 引入,作為從 Windows Server 2012 開始的新一代服務器計算機格式。由 Microsoft 與 IBM 共同開發的HPFS只能在運行 Windows NT 至 3.5 的極舊機器上找到。
FAT (文件分配表)是最簡單的 FS 類型之一,自 1980 年代以來一直存在。它由 FS 描述符扇區 (引導扇區或超級塊)、 塊分配表 (簡稱文件分配表)和 用于存儲數據的普通存儲空間組成。FAT 中的文件存儲在目錄中。每個目錄都是一個32 字節的記錄數組 ,每個記錄定義一個文件或其擴展屬性(例如一個長名稱)。記錄屬于文件的第一個塊。通過將其用作鏈表,可以通過塊分配表找到任何下一個塊。
塊分配表包含一個塊描述符數組。零值表示該塊未被使用, 非零值與文件的下一個塊或文件末尾的特殊值有關。
FAT12、 FAT16、 FAT32中的數字 代表用于尋址 FS 塊的位數。這意味著 FAT12 最多可以使用 4096 個不同的塊引用,而 FAT16 和 FAT32 最多可以使用 65536 和 4294967296。實際的最大塊數甚至更少,并且取決于 FS驅動程序的實現。
FAT12 和 FAT16 曾經應用于舊的 軟盤 ,現在沒有廣泛的應用。 FAT32 仍然廣泛用于 存儲卡 和 USB 記憶棒。智能手機、數碼相機和其他便攜式設備支持該格式。
FAT32 可用于Windows兼容的外部存儲或使用 該操作系統的內置工具格式化的大小在32 GB以下的磁盤分區上,或者在使用其他方式格式化存儲時最大2 TB。文件系統也不允許創建大小超過 4 GB的文件。為了解決這個問題, 引入了exFAT ,它在大小方面沒有任何實際限制,并且經常用于現代外部硬盤驅動器和 SSD。
NTFS(新技術文件系統) 于 1993 年隨 Windows NT 一起推出,目前是基于 Windows 的最終用戶計算機最常用的文件系統。Windows Server 系列的大多數操作系統也使用這種格式。
由于日記功能,這種 FS 類型非??煽?,并且支持許多功能,包括 訪問控制、 加密 等。NTFS 中的每個文件都作為描述符存儲在 主文件表 及其數據內容中。主 文件表 包含有關它們的所有信息的條目:大小、分配、名稱等。表的前 16 個條目為 BitMap 保留,它記錄所有空閑和使用的集群,日志用于日志記錄和BadClus 包含有關壞集群的信息。文件系統的第一個和最后一個扇區包含其設置 (引導記錄或 超級塊)。這種格式使用 48 和 64位 值引用文件,因此能夠支持極高容量的數據存儲。
ReFS(彈性文件系統) 是微軟在 Windows 8 中引入的最新開發,現在可用于 Windows 10。它的架構與其他 Windows 格式完全不同,主要以 B+-tree的形式組織。 由于其中包含新功能,ReFS對故障具有很高的容忍度。其中最值得注意的是 Copy-on-Write (CoW):元數據不被復制就不會被修改;數據不會覆蓋現有數據 - 它被放置到磁盤上的另一個區域。在進行任何修改后,元數據的新副本會保存到存儲上的空閑區域,然后系統會創建從舊元數據到新副本的鏈接。因此,大量較舊的備份存儲在不同的位置,除非該存儲空間被覆蓋,否則可以輕松恢復數據。
HPFS(高性能文件系統) 由 Microsoft 與 IBM 合作創建,并于 1989 年與 OS/2 1.20 一起推出,作為服務器的文件系統,與 FAT 相比可以提供更好的性能。與 FAT 不同,FAT 只是為文件片段分配磁盤上的任何第一個空閑簇,HPFS 試圖將文件排列在連續的塊中,或者至少確保其片段(稱為 extents)彼此盡可能靠近. HPFS 開始時有 3 個控制塊占用 18 個扇區: 引導塊、 超級塊 和 備用塊。剩余的存儲空間被劃分為稱為 帶 的連續扇區的部分每個占用 8 MB。一個頻段有自己的 扇區分配位圖 ,顯示其中哪些扇區被占用(1 - 占用,0 - 空閑)。每個文件和目錄都有自己的 F 節點 ,位于磁盤上靠近它的位置——這個結構包含有關文件位置及其擴展屬性的信息。 位于磁盤中心的特殊 目錄帶用于存儲目錄,而目錄結構本身是具有字母條目的平衡樹。
提示:有關 Windows 使用的 FS 類型的數據恢復角度的信息可以在有關不同操作系統的數據恢復特性和數據恢復機會的文章中找到。有關詳細說明和建議,請閱讀專門用于從 Windows 恢復數據的手冊。
Apple 的 macOS 應用了兩種 FS 類型: HFS+是舊 Macintosh 計算機上使用的傳統 HFS 的擴展,以及 APFS是運行 macOS 10.14 及更高版本的現代 Mac 所采用的格式。
在 macOS High Sierra 中被 APFS 取代之前, HFS+ 曾經是 Apple 桌面產品的主要格式,包括 Mac 電腦、iPod 以及 Apple X Server 產品。高級服務器產品還使用 Apple Xsan,這是一種 源自 StorNext 和 CentraVision的集群文件系統。
HFS+使用 B 樹來放置和定位文件。卷被劃分為扇區,通常大小為 512 字節,然后將它們分組為分配塊,分配塊的數量取決于整個卷的大小。有關空閑和已用分配塊的信息保存在分配文件中。作為擴展分配給每個文件的所有分配塊都記錄在擴展溢出文件中。最后,所有文件屬性都列在 Attributes 文件中。通過日志記錄提高了數據可靠性,這使得跟蹤系統的所有更改成為可能,并在發生意外事件時迅速將其恢復到工作狀態。其他支持的功能包括目錄硬鏈接、邏輯卷加密、訪問控制、數據壓縮等。
Apple 文件系統旨在解決其前身存在的基本問題,其開發目的是有效地與現代閃存和固態驅動器配合使用。這種 64 位格式使用寫時復制方法來提高性能,允許在應用更改之前復制每個塊,并提供大量數據完整性和節省空間的功能。有關文件、文件夾以及其他 APFS 結構的所有內容和元數據都保存在 APFS 容器中。 Container Superblock 存儲有關 Container 中的塊數、塊大小等信息。有關 Container 的所有已分配和空閑塊的信息在 Bitmap Structures 的幫助下進行管理。Container 中的每個卷都有自己的 卷超級塊 它提供了有關此卷的信息。卷的所有文件和文件夾都記錄在 File and Folder B-Tree中,而 Extents B-Tree 負責范圍 - 對文件內容的引用(文件開頭,其長度以塊為單位)。
開源 Linux 旨在實現、測試和使用不同類型的文件系統。Linux 最流行的格式包括:
Ext2、Ext3、Ext4 只是 “本機” Linux Ext 文件系統的不同版本。這種類型屬于積極的發展和改進。 Ext3只是 Ext2的擴展, 它使用帶有 日志的事務性文件寫入操作。 Ext4 是 Ext3 的進一步發展,在優化文件分配信息(范圍)和擴展文件屬性的支持下進行了擴展。對于大多數 Linux 安裝,此 FS 經常用作 “根”。
ReiserFS - 一種替代 Linux 文件系統,針對 存儲大量小文件進行了優化。它具有良好的搜索功能,并通過存儲文件的尾部或非常小的項目以及元數據來實現文件的緊湊分配, 以避免為此目的使用大的 FS 塊。但是,不再積極開發和支持這種格式。
XFS - 一個強大的日志文件系統,最初由 Silicon Graphics 創建并由該公司的 IRIX 服務器使用。2001 年,它進入了 Linux 內核,現在大多數 Linux 發行版都支持它,其中一些發行版,如 Red Hat Enterprise Linux,甚至默認使用它。這種 FS 類型針對 在單個主機上存儲非常大的文件和卷進行了優化。
JFS——IBM 為公司強大的計算系統開發的文件系統。JFS1 通常代表 JFS, JFS2 是第二個版本。目前,該項目是 開源的 ,并在大多數現代 Linux 版本中實現。
Btrfs - 一種基于寫時復制原則 (COW) 的文件系統,由 Oracle 設計,自 2009 年起得到主線 Linux 內核的支持。Btrfs 包含邏輯卷管理器的特性,能夠跨多個設備,并提供更高的容錯性、更好的可擴展性、更易于管理等以及許多高級可能性。
F2FS – 由三星電子設計的 Linux 文件系統, 適用于現代智能手機和其他計算系統中廣泛使用的基于 NAND 閃存的存儲設備的細節。這種類型基于日志結構化 FS 方法 (LFS) 工作,并考慮了閃存存儲的特性,例如恒定的訪問時間和有限數量的數據重寫周期。F2FS 不是創建一個大塊進行寫入,而是將這些塊組裝成單獨的塊(最多 6 個),這些塊可以同時寫入。
這種操作系統中使用的“硬鏈接”概念使得大多數Linux FS類型的相似之處在于文件名不被視為文件屬性,而是被定義為某個目錄中文件的別名。一個文件對象可以 從多個位置鏈接,甚至可以從同一個目錄以不同的名稱相乘。這可能導致文件刪除或邏輯損壞后文件名恢復的嚴重甚至無法克服的困難。
這些操作系統最常見的文件系統是 UFS(Unix 文件系統),通常也稱為 FFS (快速文件系統)。
目前,所有 Unix 系列操作系統都支持 UFS(不同版本),是 BSD OS 和 Sun Solaris OS 的主要文件系統。現代計算機技術傾向于在不同的操作系統( Solaris 的ZFS 、 JFS 和 Unix 的派生格式等)中實現 UFS 的替換。
集群文件系統用于計算機集群系統,支持分布式存儲。
分布式 FS 類型包括:
這些文件系統的共同屬性包括分布式存儲支持、可擴展性和模塊化。