0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Tina_Linux系統(tǒng)裁剪開發(fā)指南

嵌入式Linux那些事 ? 來(lái)源: 嵌入式Linux那些事 ? 作者: 嵌入式Linux那些事 ? 2023-03-06 09:52 ? 次閱讀

Tina_Linux系統(tǒng)裁剪開發(fā)指南1 概述2 Tina系統(tǒng)裁剪簡(jiǎn)介2.1 boot0裁剪2.2 uboot裁剪2.3 內(nèi)核裁剪2.3.1 刪除不使用的功能2.3.2 刪除不使用的驅(qū)動(dòng)2.3.3 修改內(nèi)核源代碼2.3.3.1 size工具.2.3.3.2 ksize.py腳本2.3.3.3 nm命令2.3.3.4 kernel壓縮方式.2.4 文件系統(tǒng)裁剪.2.4.1 應(yīng)用程序及冗余文件裁剪2.4.2 庫(kù)的裁剪2.4.2.1 C庫(kù)的選擇.2.4.2.2 刪除沒(méi)用到的庫(kù)2.4.3 應(yīng)用程序與庫(kù)strip2.4.4 文件系統(tǒng)壓縮.3 參考資料

Tina_Linux系統(tǒng)裁剪開發(fā)指南

1 概述

編寫目的:

嵌入式產(chǎn)品往往為了壓縮成本而使用較小的flash存儲(chǔ)器,因此可能需要對(duì)系統(tǒng)進(jìn)行裁剪來(lái)減少對(duì)flash的占用。系統(tǒng)經(jīng)過(guò)裁剪過(guò)后,通常也會(huì)提升啟動(dòng)速度以及減少內(nèi)存占用。 本文介紹TinaLinux中系統(tǒng)裁剪的方法,為有裁剪需求的使用者提供參考。

2 Tina系統(tǒng)裁剪簡(jiǎn)介

Tina固件中通常包含boot0、uboot、kernel、rootfs等鏡像。基于經(jīng)驗(yàn),各個(gè)鏡像尺寸的量級(jí)如下表所示:

表2-1:各鏡像尺寸的量級(jí)

鏡像 大小
boot0 < 100K
uboot < 1M
kernel >= 3M,< 15M
rootfs >= 4M

可以看到boot0、uboot、kernel、rootfs的尺寸是依次增大的。對(duì)于大尺寸的裁剪效果往往比小尺寸的裁剪效果明顯,比如rootfs裁剪1M可能很容易,對(duì)于uboot來(lái)說(shuō),則非常困難。

因此,后續(xù)主要介紹kernel以及rootfs的裁剪。

2.1 boot0裁剪

由于boot0很小,通常來(lái)說(shuō)boot0代碼也不開源,因此略過(guò)。

2.2 uboot裁剪

目前tina環(huán)境中有不同版本的uboot,分別存在兩個(gè)不同的文件路徑中,以實(shí)際sdk的目錄為準(zhǔn),cboot可以進(jìn)入到相應(yīng)的uoot目錄,這兩個(gè)路徑分別為lichee/brandy/u-boot或者lichee/brandy-2.0/u-boot

主要有下面兩種裁剪思路:

修改uboot配置文件,刪減不需要的配置。uboot配置文件通常位于源碼下include/configs/${CHIP}.h或者configs/${CHIP}*defconfig。

刪除不需要的uboot命令。

2.3 內(nèi)核裁剪

通常關(guān)于Linux內(nèi)核裁剪主要有如下方法:

刪除不使用的功能。如符號(hào)表、打印、調(diào)試等功能。

刪除不使用的驅(qū)動(dòng)。

修改內(nèi)核源代碼。

內(nèi)核壓縮。

2.3.1 刪除不使用的功能

下表中列出了一些內(nèi)核選項(xiàng),包含選項(xiàng)的描述,默認(rèn)值以及推薦值(減小內(nèi)核鏡像尺寸)。

表2-2:內(nèi)核選項(xiàng)及描述

CONFIG option Description Def Small
CORE_SMALL tune some kernel data sizes N Y
NET_SMALL tune some net-related data sizes N Y
KMALLOC_ACCOUNTING turn on kmalloc accounting N Y *
AUDIT_BOOTMEM print out all bootmem allocations N Y *
DEPRECATE_INLINES cause compiler to emit info about inlines N Y *
PRINTK printk code and message data Y N
BUG allow elimination of BUG code Y N
ELF_CORE allow disabling of ELF core dumps Y N
PROC_KCORE allow disabling of /proc/kcore Y N
AIO allow disabling of async IO syscalls Y N
XATTR allow disabling of xattr syscalls Y N
FILE_LOCKING allow disabling of file locking syscalls Y N
DIRECTIO allow disabling of direct IO support Y N
MAX_SWAPFILES_SHIFT number of swapfiles 5 0
NR_LDISCS number of tty line disciplines 16 2
MAX_USER_RT_PRIO number of RT priority levels 100 5
KALLSYMS load all symbols for debugging/kksymoops Y N
SHMEM allow disabling of shmem filesystem Y N +
SWAP support for a swap segment Y N
SYSV_IPC support for System V IPC Y N +
POSIX_MQUEUE POSIX message queue support Y N +
SYSCTL allow disabling of sysctl support Y N +
LOG_BUF_SHIFT control size of kernel printk buffer 14 11
CC_OPTIMIZE_FOR_SIZE Use gcc -os to optimize for size Y Y
MODULES allow support for kernel loadable modules Y N +
KMOD automatic kernel module loading Y N
PCI allow support for PCI bus and devices Y Y -
XIP_KERNEL allow support for kernel Execute-in-Place N N
BLK_DEV_LOOP support for loopback block device Y Y -
BLK_DEV_RAM block devices for RAM filesystems Y Y -
IOSCHED_AS Include Anticipatory IO scheduler Y Y
IOSCHED_DEADLINE Include Deadline IO scheduler Y N +
IOSCHED_CFQ Include CFQ IO scheduler Y N +
IP_PNP support for IP autoconfiguration Y N +
IP_PNP_DHCP support for IP autoconfiguration via DHCP Y N +
IDE support for IDE devices Y N +
SCSI support for SCSI devices Y N +

其中:

"Y *"-表示開發(fā)的時(shí)候設(shè)置成Y,發(fā)布的時(shí)候可以設(shè)置成N。

"N +"-表示基于應(yīng)用需要來(lái)判斷是否設(shè)置成N。

"Y -"-表示可能需要,可以設(shè)置N嘗試一下。

在Tina中,集成了CONFIG_REDUCE_KERNEL_SIZE宏。一旦使能該宏后,將會(huì)采用部分上面的裁剪措施來(lái)減小kernel鏡像尺寸,主要思路是關(guān)閉與log/debug等相關(guān)的配置,然后對(duì)kernel進(jìn)行xz壓縮,可參考tina/scripts/reduce-kernel-size.sh。

執(zhí)行make menuconfig,開啟如下選項(xiàng):

Tina Configuration Target Images ---> [*] downsize the kernel size (EXPERIMENTAL)

說(shuō)明:此功能當(dāng)前是 EXPERIMENTAL 的。建議直接執(zhí)行 make kernel_menuconfig ,然后按照上述表格來(lái)配置。

2.3.2 刪除不使用的驅(qū)動(dòng)

方案明確之后,所需的內(nèi)核驅(qū)動(dòng)也明確了??梢詧?zhí)行make kernel_menuconfig,將沒(méi)有用到的驅(qū)動(dòng)關(guān)閉。

2.3.3 修改內(nèi)核源代碼

內(nèi)核源碼龐大,直接修改往往難度很大,可借助相關(guān)工具來(lái)評(píng)估模塊以及符號(hào)的大小,然后進(jìn)行針對(duì)性的裁剪。

2.3.3.1 size工具.

size命令可查看內(nèi)核鏡像的text、data、bss等段的大小。如執(zhí)行"size vmlinux",將會(huì)得到:

text data bss dec hex filename

5818117 1378944 168972 7366033 706591 vmlinux

2.3.3.2 ksize.py腳本

在tina/lichee/linux-4.9/scripts目錄下有一個(gè)ksize腳本,可以對(duì)內(nèi)核目錄下的built-in.o進(jìn)行解析,并將解析的內(nèi)容按照尺寸進(jìn)行排序,顯示出來(lái)。執(zhí)行結(jié)果如下所示:

Linux Kernel total | text data bss

--------------------------------------------------------------------------------

vmlinux

7366033

|

5818117

1378944

168972

--------------------------------------------------------------------------------

drivers/built-in.o

2244823

|

2080782

123885

40156

net/built-in.o

1682005

|

1630911

32590

18504

fs/built-in.o

975830

|

950780

5442

19608

kernel/built-in.o

678363

|

593347

41064

43952

mm/built-in.o

302442

|

272965

7309

22168

sound/built-in.o

237890

|

227338

6836

3716

security/built-in.o

170272

|

145055

13989

11228

block/built-in.o

149110

|

145408

2458

1244

crypto/built-in.o

145972

|

131610

7258

7104

lib/built-in.o

141721

|

141093

559

69

init/built-in.o

33551

|

18558

14909

84

ipc/built-in.o

29998

|

29218

772

8

usr/built-in.o

138

|

138

0

0

--------------------------------------------------------------------------------

sum

6792115

|

6367203

257071

167841

delta

573918

|

-549086

1121873

1131

drivers total | text data bss

--------------------------------------------------------------------------------

drivers/built-in.o

2244823

|

2080782

123885

40156

--------------------------------------------------------------------------------

drivers/usb/built-in.o

448756

|

409279

27813

11664

drivers/block/built-in.o

357202

|

324752

21582

10868

drivers/tty/built-in.o

174213

|

155371

13938

4904

drivers/base/built-in.o

157961

|

153861

3460

640

drivers/mmc/built-in.o

133678

|

131782

1756

140

drivers/scsi/built-in.o

105021

|

95105

9348

568

drivers/md/built-in.o

100909

|

98382

1291

1236

drivers/mtd/built-in.o

96023

|

92244

1467

2312

drivers/hid/built-in.o

86072

|

81552

4160

360

drivers/clk/built-in.o

69737

|

58289

10856

592

drivers/cpufreq/built-in.o

51525

|

44400

1793

5332

drivers/pinctrl/built-in.o

50463

|

46458

3921

84

drivers/input/built-in.o

45250

|

44046

1156

48

drivers/i2c/built-in.o

43511

|

42791

656

64

drivers/spi/built-in.o

39888

|

38323

1557

8

drivers/thermal/built-in.o

38654

|

36673

1893

88

drivers/regulator/built-in.o

36217

|

35257

820

140

drivers/of/built-in.o

35994

|

35095

407

492

drivers/gpio/built-in.o

29432

|

29167

224

41

drivers/leds/built-in.o

25548

|

25076

464

8

drivers/rtc/built-in.o

25072

|

24428

460

184

drivers/tee/built-in.o

24823

|

24662

113

48

drivers/char/built-in.o

23718

|

21642

1224

852

drivers/soc/built-in.o

20916

|

13980

6804

132

drivers/bluetooth/built-in.o

20223

|

19319

100

804

drivers/dma/built-in.o

17892

|

17458

334

100

drivers/irqchip/built-in.o

14767

|

12371

2308

88

drivers/pwm/built-in.o

14636

|

14036

472

128

drivers/dma-buf/built-in.o

13975

|

13904

23

48

drivers/cpuidle/built-in.o

12613

|

10848

1749

16

drivers/watchdog/built-in.o

9986

|

9660

281

45

drivers/power/built-in.o

9836

|

8296

1224

316

drivers/clocksource/built-in.o

9608

|

8708

796

104

drivers/misc/built-in.o

8471

|

8105

340

26

drivers/bus/built-in.o

6357

|

5691

618

48

drivers/hwmon/built-in.o

5230

|

5054

144

32

drivers/hwspinlock/built-in.o

4792

|

4664

128

0

drivers/firmware/built-in.o

4453

|

4384

9

60

drivers/reset/built-in.o

3818

|

3686

132

0

drivers/net/built-in.o

1803

|

1755

48

0

drivers/mfd/built-in.o

1623

|

1511

108

4

drivers/video/built-in.o

379

|

379

0

0

--------------------------------------------------------------------------------

sum

2381045

|

2212444

125977

42624

delta

-136222

|

-131662

-2092

-2468

net total | text data bss

--------------------------------------------------------------------------------

net/built-in.o

1682005

|

1630911

32590

18504

--------------------------------------------------------------------------------

net/ipv4/built-in.o

428233

|

401161

14719

12353

net/mac80211/built-in.o

302085

|

301822

259

4

net/core/built-in.o

267334

|

256693

8573

2068

net/bluetooth/built-in.o

227913

|

226708

1033

172

net/wireless/built-in.o

160236

|

158651

557

1028

net/xfrm/built-in.o

74537

|

72737

1384

416

net/bridge/built-in.o

59936

|

58812

1112

12

net/sched/built-in.o

29706

|

28344

1346

16

net/packet/built-in.o

26453

|

26172

281

0

net/netlink/built-in.o

26105

|

25498

455

152

net/unix/built-in.o

24671

|

22266

340

2065

net/key/built-in.o

21095

|

20783

308

4

net/*.o

16279

|

15811

412

56

net/8021q/built-in.o

15245

|

14981

264

0

net/ipv6/built-in.o

9445

|

8295

1136

14

net/rfkill/built-in.o

7142

|

6710

408

24

net/ethernet/built-in.o

2431

|

2391

40

0

net/llc/built-in.o

2068

|

1980

72

16

net/802/built-in.o

1944

|

1792

140

12

--------------------------------------------------------------------------------

sum

1702858

|

1651607

32839

18412

delta

-20853

|

-20696

-249

92

fs total | text data bss

--------------------------------------------------------------------------------

fs/built-in.o

975830

|

950780

5442

19608

--------------------------------------------------------------------------------

fs/*.o

351665

|

339511

1774

10380

fs/ext4/built-in.o

295807

|

294110

1125

572

fs/jffs2/built-in.o

99642

|

99446

124

72

fs/proc/built-in.o

77696

|

73111

377

4208

fs/fat/built-in.o

49264

|

49088

144

32

fs/jbd2/built-in.o

47379

|

47254

65

60

fs/overlayfs/built-in.o

24939

|

24842

93

4

fs/squashfs/built-in.o

23156

|

23092

60

4

fs/kernfs/built-in.o

21086

|

16863

111

4112

fs/configfs/built-in.o

18193

|

17916

261

16

fs/debugfs/built-in.o

16120

|

16056

52

12

fs/pstore/built-in.o

13904

|

13531

325

48

fs/crypto/built-in.o

13083

|

12799

264

20

fs/notify/built-in.o

12525

|

12186

227

112

fs/nls/built-in.o

11024

|

10904

116

4

fs/sysfs/built-in.o

7041

|

6990

39

12

fs/devpts/built-in.o

3359

|

2986

365

8

fs/ramfs/built-in.o

1820

|

1776

40

4

--------------------------------------------------------------------------------

sum

1087703

|

1062461

5562

19680

delta

-111873

|

-111681

-120

-72

kernel total | text data bss

--------------------------------------------------------------------------------

kernel/built-in.o

678363

|

593347

41064

43952

--------------------------------------------------------------------------------

kernel/*.o

376931

|

346029

17531

13371

kernel/sched/built-in.o

127386

|

119841

6265

1280

kernel/time/built-in.o

101386

|

89633

7465

4288

kernel/printk/built-in.o

55033

|

18477

8444

28112

kernel/irq/built-in.o

47323

|

44325

906

2092

kernel/rcu/built-in.o

29815

|

27655

2131

29

kernel/locking/built-in.o

25617

|

25592

21

4

kernel/power/built-in.o

16652

|

15256

848

548

kernel/bpf/built-in.o

8348

|

7988

68

292

--------------------------------------------------------------------------------

sum

788491

|

694796

43679

50016

delta

-110128

|

-101449

-2615

-6064

sound total | text data bss

--------------------------------------------------------------------------------

sound/built-in.o

237890

|

227338

6836

3716

--------------------------------------------------------------------------------

sound/soc/built-in.o

125556

|

119220

5416

920

sound/core/built-in.o

108923

|

104799

1400

2724

sound/*.o

6612

|

6440

28

144

--------------------------------------------------------------------------------

sum

241091

|

230459

6844

3788

delta

-3201

|

-3121

-8

-72

security total | text data bss

--------------------------------------------------------------------------------

security/built-in.o

170272

|

145055

13989

11228

--------------------------------------------------------------------------------

security/selinux/built-in.o

142606

|

119156

12250

11200

security/keys/built-in.o

31690

|

30618

788

284

security/*.o

25826

|

24091

1719

16

security/integrity/built-in.o

1838

|

1806

20

12

--------------------------------------------------------------------------------

sum

201960

|

175671

14777

11512

delta

-31688

|

-30616

-788

-284

block total | text data bss

--------------------------------------------------------------------------------

block/built-in.o

149110

|

145408

2458

1244

--------------------------------------------------------------------------------

block/*.o

145968

|

142021

2699

1248

block/partitions/built-in.o

7563

|

7543

16

4

--------------------------------------------------------------------------------

sum

153531

|

149564

2715

1252

delta

-4421

|

-4156

-257

-8

lib total | text data bss

--------------------------------------------------------------------------------

lib/built-in.o

141721

|

141093

559

69

--------------------------------------------------------------------------------

lib/*.o

216133

|

214935

1092

106

lib/zlib_inflate/built-in.o

11187

|

11187

0

0

lib/xz/built-in.o

8215

|

8179

36

0

lib/lzo/built-in.o

2551

|

2551

0

0

lib/lz4/built-in.o

1188

|

1188

0

0

--------------------------------------------------------------------------------

sum

239274

|

238040

1128

106

delta

-97553

|

-96947

-569

-37

可以對(duì)各個(gè)模塊的代碼段數(shù)據(jù)段的統(tǒng)計(jì)信息進(jìn)行確認(rèn),對(duì)占用空間大的進(jìn)行針對(duì)性優(yōu)化。

2.3.3.3 nm命令

nm命令可查看內(nèi)核模塊中各個(gè)符號(hào)的尺寸。如執(zhí)行"nm --size -r vmlinux | head -10",可得到:

00004000 b __log_buf

00003e58 D nand_tbl

00003b14 T __blockdev_direct_IO

0000398c T hidinput_connect

00002f6c t ext4_fill_super

000027fc T hci_event_packet

0000245c t l2cap_recv_frame

000023d4 T dev_ethtool

00002274 t test_atomics

000020e4 t nl80211_send_wiphy

說(shuō)明,一共有三列數(shù)據(jù),分別表示大小、符號(hào)類型、符號(hào)名。其中符號(hào)類型:

b/B -符號(hào)位于bss段。

t/T -符號(hào)位于text段。

d/D -符號(hào)位于data段。

如果某些函數(shù)或者全局變量占用較大,可以進(jìn)行針對(duì)性的優(yōu)化。

2.3.3.4 kernel壓縮方式.

tina環(huán)境提供了幾種壓縮格式方式,選擇方式為make kernel_menuconfig:

General setup --->

Kernel compression mode (Gzip) --->

(X) Gzip

( ) LZMA

( ) XZ

( ) LZO

( ) LZ

同一個(gè)kernel鏡像使用不同的壓縮方式,鏡像大小如下表所示:

壓縮方式 鏡像大小 加載內(nèi)核時(shí)間(從falsh加載到dram的時(shí)間) 解壓時(shí)間 總時(shí)間
GZIP 2.31M 124ms 89ms 213ms
LZO 2.53M 136ms 23ms 159ms
LZ4 2.68M 143ms 27ms 170ms
XZ 1.95M 104ms 667ms 771ms

2.4 文件系統(tǒng)裁剪.

對(duì)于文件系統(tǒng)裁剪來(lái)說(shuō),主要思路是刪、換、壓。

刪。刪除不需要的內(nèi)容。如幫助文檔、沒(méi)用到的庫(kù)、調(diào)試程序等。

換。使用小尺寸的實(shí)現(xiàn)替換大尺寸的實(shí)現(xiàn)。如使用musl libc庫(kù)替換glibc庫(kù)等。

壓。使用合適的壓縮算法

2.4.1 應(yīng)用程序及冗余文件裁剪

在不影響整體功能的情況下,一些應(yīng)用程序或冗余文件往往可以刪除:

調(diào)試工具。比如tcpdump、mpstat、strace等等。

性能測(cè)試工具。比如lmbench、sysstat、tiobench等等。

冗余文件。幫助文檔、輔助程序、配置文件和數(shù)據(jù)模塊等,又比如很多應(yīng)用有相同的共能,只留其一。

采用具有通用功能的替代軟件包。Linux上有許多具有相似功能的軟件包,可以選擇其中占存儲(chǔ)空間較小的軟件包并移植到嵌入式設(shè)備上。

資源文件。一些音視頻以及UI資源往往占用很大空間,如果沒(méi)有用到,也需要?jiǎng)h除。

2.4.2 庫(kù)的裁剪

關(guān)于庫(kù)的裁剪主要有兩個(gè)思路:

使用較小的C庫(kù),如musl libc,uclibc等來(lái)替換glibc。

刪除沒(méi)有用到的庫(kù)。

2.4.2.1 C庫(kù)的選擇.

下表列出了當(dāng)前一些通用的C庫(kù)及其特征。

表2-4:常用C庫(kù)及其特征

C庫(kù) 環(huán)境 大小 優(yōu)點(diǎn) 缺點(diǎn)
glibc Distribution 強(qiáng)大穩(wěn)定,支持最多的cpu架構(gòu) 占用空間大
uclibc Embedded 為嵌入式設(shè)計(jì),可配置性好 不支持libdb與libnss
bionic Android 提供了Android特性的函數(shù) 不提供libthread_db/libm
musl Embedded 更小,高效靜態(tài)鏈接,穩(wěn)定 支持較少的cpu arch

當(dāng)前Tina環(huán)境下可支持glibc與musl libc兩種C庫(kù)。具體可通過(guò)menuconfig的方式來(lái)配置

使用哪一套。

[*] Advanced configuration options (for developers) --->

Select external toolchain C library (Use glibc) --->

注意,更換C庫(kù)后,需要清除方案編譯產(chǎn)物(可執(zhí)行make distclean),重新編譯。

2.4.2.2 刪除沒(méi)用到的庫(kù)

嵌入式產(chǎn)品通常應(yīng)用程序有限,因此可能存在很多庫(kù)不會(huì)被用到,可以進(jìn)行刪除。

當(dāng)前Tina環(huán)境提供了一種刪除方法,執(zhí)行make menuconfig,打開如下選項(xiàng):

Tina Configuration

Target Images --->

[*] downsize the root filesystem or initramfs

打開之后,在生成rootfs/initramfs之前會(huì)對(duì)其中沒(méi)有用到的庫(kù)進(jìn)行刪除。

具體可參考scripts/reduce-rootfs-size.sh文件,其主要思路是:

分析rootfs下的應(yīng)用程序所依賴的庫(kù)。

分析“應(yīng)用程序依賴庫(kù)”所依賴的庫(kù),一直遞歸下去,直到完全找出所有依賴的庫(kù)。

根據(jù)上述查找結(jié)果,刪除沒(méi)有被依賴的庫(kù)。

說(shuō)明:此方法有一定的限制:

當(dāng)前只分析/lib,/usr/lib下的庫(kù),其他目錄不會(huì)處理。

對(duì)于部分使用dlopen的應(yīng)用程序,解析庫(kù)可能會(huì)出現(xiàn)問(wèn)題。

2.4.3 應(yīng)用程序與庫(kù)strip

strip會(huì)去掉應(yīng)用程序與庫(kù)的符號(hào)信息和調(diào)試信息,大大減少空間占用。

當(dāng)前Tina環(huán)境下默認(rèn)開啟了strip功能,如果沒(méi)開啟,請(qǐng)確保開啟以減少空間占用。

Tina Configuration

Global build settings --->

Binary stripping method (strip) --->

說(shuō)明:Tina 上還支持 sstrip ,即 super strip ,相對(duì)于 strip 來(lái)說(shuō),更能減少應(yīng)用與庫(kù)的大小。

2.4.4 文件系統(tǒng)壓縮.

有些文件系統(tǒng)支持壓縮,有些不支持。下表列出了常見的文件系統(tǒng)類型:

表2-5:常用文件系統(tǒng)類型

FS 使用 壓縮 讀寫 備 注
ext2 block device 無(wú) RW 突然斷電或當(dāng)機(jī)時(shí)可能導(dǎo)致數(shù)據(jù)丟失
ext3 block device 無(wú) RW 向前兼容ext3,日志式文件系統(tǒng),非常成熟穩(wěn)定
ext4 block device 無(wú) RW 向前兼容ext2和ext3,擴(kuò)展存儲(chǔ)限制,提升性能
btrfs block device RW 著重于容錯(cuò)、修復(fù)及易管理
FAT block device 無(wú) RW Windows,長(zhǎng)期使用速度變慢,不支持>4G文件
NTFS block device RW Windows,基于FAT做若干改進(jìn),日志文件系統(tǒng)
Cramfs NAND Flash 無(wú) RO 2013停用,使用Squashfs
Squashfs Raw Flash RO 壓縮度更高,沒(méi)有大小限制
UBIFS Raw Flash RW 基于JFFS2,Linux3.7之后
JFFS2 Raw Flash RW mount時(shí)間很慢,讀寫性能不好
YAFFS2 NAND Flash 無(wú) RW 沒(méi)有透明壓縮,不在Linux主線

當(dāng)前Tina環(huán)境下比較常用的是squahfs、ext4、jfss2三種文件系統(tǒng)。具體可執(zhí)行makemenu-

config進(jìn)行選擇:

Tina Configuration

Target Images --->

*** Root filesystem images ***

[ ] ext4 ----

[ ] jffs

[*] squashfs --->

常見的壓縮有l(wèi)zop,gzip,xz等,壓縮率最高的是xz。但是xz壓縮解壓最慢,非常影響啟動(dòng)速度。實(shí)際在選擇壓縮方式時(shí)應(yīng)綜合考慮。


審核編輯黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 嵌入式
    +關(guān)注

    關(guān)注

    5059

    文章

    18973

    瀏覽量

    302015
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11207

    瀏覽量

    208714
  • 系統(tǒng)
    +關(guān)注

    關(guān)注

    1

    文章

    1006

    瀏覽量

    21292
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    EAC0945 linux開發(fā)指南

    EAC0945 linux開發(fā)指南
    發(fā)表于 09-28 12:40

    EAC0945 linux開發(fā)指南

    `EAC0945 linux開發(fā)指南`
    發(fā)表于 10-31 12:18

    Tiny6410 Linux開發(fā)指南詳解

    Tiny6410 Linux 開發(fā)指南
    發(fā)表于 07-08 17:12 ?210次下載
    Tiny6410 <b class='flag-5'>Linux</b><b class='flag-5'>開發(fā)指南</b>詳解

    A64開發(fā)板LCD開發(fā)指南

    A64開發(fā)板LCD開發(fā)指南,驅(qū)動(dòng)開發(fā)指南
    發(fā)表于 06-21 17:02 ?0次下載

    彩光燈開發(fā)指南

    彩光燈開發(fā)指南
    發(fā)表于 12-29 20:15 ?0次下載

    Linux的平臺(tái)下Mini210S裸機(jī)程序開發(fā)指南

    Linux的平臺(tái)下Mini210S裸機(jī)程序開發(fā)指南
    發(fā)表于 10-29 10:52 ?59次下載
    <b class='flag-5'>Linux</b>的平臺(tái)下Mini210S裸機(jī)程序<b class='flag-5'>開發(fā)指南</b>

    Rockchip Linux SDK的開發(fā)指南的詳細(xì)資料說(shuō)明

    本文檔的主要內(nèi)容詳細(xì)介紹的是Rockchip Linux SDK的開發(fā)指南的詳細(xì)資料說(shuō)明。
    發(fā)表于 01-10 17:17 ?74次下載
    Rockchip <b class='flag-5'>Linux</b> SDK的<b class='flag-5'>開發(fā)指南</b>的詳細(xì)資料說(shuō)明

    迅為RK3399開發(fā)板嵌入式linux開發(fā)指南

    迅為RK3399開發(fā)板嵌入式linux開發(fā)指南迅為RK3399開發(fā)板發(fā)布《北京迅為嵌入式linux開發(fā)指
    發(fā)表于 11-01 16:58 ?76次下載
    迅為RK3399<b class='flag-5'>開發(fā)</b>板嵌入式<b class='flag-5'>linux</b><b class='flag-5'>開發(fā)指南</b>

    Tina_Linux_系統(tǒng)軟件開發(fā)指南

    Tina_Linux_系統(tǒng)軟件開發(fā)指南
    的頭像 發(fā)表于 03-02 15:25 ?1745次閱讀
    <b class='flag-5'>Tina_Linux</b>_<b class='flag-5'>系統(tǒng)軟件開發(fā)指南</b>

    Tina Linux配置開發(fā)指南

    Tina Linux配置開發(fā)指南
    的頭像 發(fā)表于 03-02 15:28 ?1.6w次閱讀
    <b class='flag-5'>Tina</b> <b class='flag-5'>Linux</b>配置<b class='flag-5'>開發(fā)指南</b>

    Tina_Linux啟動(dòng)優(yōu)化開發(fā)指南

    編寫目的: 介紹TinaLinux下啟動(dòng)速度優(yōu)化使用方法。
    的頭像 發(fā)表于 03-06 09:53 ?1203次閱讀
    <b class='flag-5'>Tina_Linux</b>啟動(dòng)優(yōu)化<b class='flag-5'>開發(fā)指南</b>

    Linux NOR開發(fā)指南

    Linux NOR開發(fā)指南
    的頭像 發(fā)表于 03-06 09:55 ?908次閱讀
    <b class='flag-5'>Linux</b> NOR<b class='flag-5'>開發(fā)指南</b>

    Tina Linux圖形系統(tǒng)開發(fā)指南

    本文檔將介紹 Allwinner Tina Linux 中已經(jīng)移植好的窗口系統(tǒng),以及怎么使用,包括 MiniGUI、QT5、EFL、GTK+(WebkitGtk、Midori)、DirectFB、Wayland,整體結(jié)構(gòu) 。
    的頭像 發(fā)表于 03-06 11:00 ?3013次閱讀
    <b class='flag-5'>Tina</b> <b class='flag-5'>Linux</b>圖形<b class='flag-5'>系統(tǒng)開發(fā)指南</b>

    Tina Linux音頻開發(fā)指南

    介紹Tina平臺(tái)音頻模塊的使用方法。
    的頭像 發(fā)表于 03-06 11:02 ?6146次閱讀
    <b class='flag-5'>Tina</b> <b class='flag-5'>Linux</b>音頻<b class='flag-5'>開發(fā)指南</b>

    Tina Linux PMU開發(fā)指南

    介紹使用Tina PMU 驅(qū)動(dòng)的使用方法。
    的頭像 發(fā)表于 03-06 11:05 ?1987次閱讀
    <b class='flag-5'>Tina</b> <b class='flag-5'>Linux</b> PMU<b class='flag-5'>開發(fā)指南</b>