Linux檔案系統的構建

2021-10-14 12:10:25 字數 3350 閱讀 2159

刪除不需要的庫,確保所有庫大小不超過 4m:

$ du -mh lib/

新增系統啟動檔案:

在 etc 下新增檔案 inittab,檔案內容如下:

#this is run first except when booting in single-user mode.

::sysinit:/etc/init.d/rcs

::askfirst:-/bin/sh

::restart:/sbin/init

::ctrlaltdel:/sbin/reboot

在 etc 下新增檔案 fstab ,檔案內容如下:

#device mount-point type options dump fsck order

proc /proc proc defaults 0 0

tmpfs /tmp tmpfs defaults 0 0

sysfs /sys sysfs defaults 0 0

tmpfs /dev tmpfs defaults 0 0

這裡我們掛載的檔案系統有三個 proc、 sysfs 和 tmpfs 。在核心中 proc 和 sysfs 預設都支援,而 tmpfs

是沒有支援的,我們需要新增 tmpfs 的支援

修改 linux 核心配置;

$ cd ~/ kernel/linux-3.14

$ make menuconfig

file systems —>

pseudo filesystems —>

virtual memory file system support (former shm fs)

tmpfs posix access control lists

重新編譯核心:

$ make uimage

$ cp arch/arm/boot/uimage /tftpboot

回到建立的檔案系統處, 在 etc 下建立 init.d 目錄,並在 init.d 下建立 rcs 檔案, rcs 檔案內容為:

#!/bin/sh

/bin/mount -a

echo /sbin/mdev > /proc/sys/kernel/hotplug

/sbin/mdev -s

為 rcs 新增可執行許可權:

$ chmod +x init.d/rcs

在 etc 下新增 profile 檔案,檔案內容為:

#!/bin/sh

export hostname=exynos4412

export user=root

export home=/root

export ps1="[use

r@

user@

user

@hostname \w]# "

path=/bin:/sbin:/usr/bin:/usr/sbin

ld_library_path=/lib:/usr/lib:$ld_library_path

export path ld_library_path

重要:新製作的檔案系統尺寸若超出 8m,刪除不需要的庫檔案

3.2nfs 測試

3.2.1將我們新建的根檔案系統拷貝到/source/rootfs 目錄下

$sudo mkdir /opt/rootfs

$sudo cp _install/* /opt/rootfs –a

3.2.2設定uboot引數

#setenv bootargs noinitrd root=/dev/nfs nfsroot=192.168.13.116:/opt/rootfs init=/linuxrc console=ttysac2,115200 ip=192.168.13.123

3.2.3實驗現象

nfs根檔案系統掛載成功

3.3ramdisk 檔案系統製作實驗

3.3.1製作乙個大小為 8m 的映象檔案

$ cd ~

$ dd if=/dev/zero of=ramdisk bs=1k count=8192 ( ramdisk 為 8m)

3.3.2格式化這個映象檔案為 ext2

$ mkfs.ext2 -f ramdisk

3.3.3在 mount 下面建立 initrd 目錄作為掛載點

$ sudo mkdir /mnt/initrd

3.3.4將這個磁碟映象檔案掛載到/mnt/initrd 下

注意這裡的 ramsidk 不能存放在 rootfs 目錄中

$ sudo mount -t ext2 -o loop ramdisk /mnt/initrd

3.3.5將我們的檔案系統複製到 initrd.img 中

將測試好的檔案系統裡的內容全部拷貝到 /mnt/initrd 目錄下面

$ sudo cp /source/rootfs/* /mnt/initrd –a

3.3.6解除安裝 initrd

$ sudo umount /mnt/initrd

3.3.7壓縮 initrd.img 為 initrd.img.gz 並拷貝到/tftpboot 下

$ gzip --best -c ramdisk > ramdisk.gz

3.3.8格式化為 uboot 識別的格式

$ mkimage -n 「ramdisk」 -a arm -o linux -t ramdisk -c gzip -d ramdisk.gz ramdisk.img

$ cp ramdisk.img /tftpboot

3.3.9配置核心支援 ramdisk

製作完 ramdisk.img 後,需要配置核心支援 ramdisk 作為啟動檔案系統, 修改核心配置

$ make menuconfig

file systems —>

<> second extended fs support

device drivers

scsi device support —>

<> scsi disk support

block devices —>

<>ram block device support

(16)default number of ram disks

(8192) default ram disk size (kbytes) (修改為 8m)

general setup —>

initial ram filesystem and ram disk (initramfs/initrd) support

3.3.10重新編譯核心

複製到uimage到 /tftpboot目錄下

$cp arch/arm/boot/uimage /tftpboot

3.3.11重新設定uboot啟動引數:

構建Linux根檔案系統

七天不吃飯三天不喝水,天天做題的傢伙 構建linux根檔案系統 第一步 移植安裝busybox unix命令集合。見上個檔案。第二步 使用glibc庫 安裝lib庫檔案 開發板上只需要載入器和動態庫 1 安裝載入器 在 usr local arm arm none linux gnueabi arm...

Linux 檔案系統構建命令mkfs

mkfs用來在乙個裝置上構建linux支援的相關檔案系統,也可稱之為格式化工具,這裡的裝置通常是指標硬碟分割槽。在linux上通過fdisk等工具進行完分割槽後,還需要對分割槽進行處理,使之支援相應的檔案系統,這時候就需要用到mkfs這個工具,建立 檔案系統過程的實質是在磁碟空間上面建立檔案系統所需...

Linux檔案系統構建命令mkfs

mkfs用來在乙個裝置上構建linux支援的相關檔案系統,也可稱之為格式化工具,這裡的裝置通常是指標硬碟分割槽。在linux上通過fdisk等工具進行完分割槽後,還需要 對分割槽進行處理,使之支援相應的檔案系統,這時候就需要用到mkfs這個工具,建立 檔案系統過程的實質是在磁碟空間上面建立檔案系統所...