構建ubuntu根檔案系統

2021-08-08 22:44:27 字數 3004 閱讀 8585

原文

象棋小子 1048272975

ubuntu是乙個廣泛應用於個人電腦,雲計算,以及智慧型物聯網裝置的開源作業系統。針對智慧型物聯網,ubuntu提供了一套更加安全,輕量級,專為智慧型物聯網訂製的開源作業系統ubuntu core。它已被廣泛應用於物聯網,智慧型裝置和自主裝置等嵌入式產品中。

$mkdir ~/rootfs && cd ~/rootfs

$wget

$sudo tar –xpf ubuntu-base

-16.04

.2-base

-arm64

.tar.gz

安裝qemu用於在主機端模擬執行基於arm架構的**,把模擬器拷貝到core根檔案系統目錄中。如果是32位armhf根檔案系統版本,拷貝qemu-arm-static,此處是64位arm64版本,拷貝qemu-aarch64-static。

$sudo apt-get install qemu-user

-static

$sudo cp -a /usr/bin/qemu-aarch64

-static usr/bin/

編譯linux核心,在核心原始碼目錄output/lib/中拷貝modules目錄中的所有內容到core根檔案系統/lib目錄。

切換到core根檔案系統,進行更新設定。

$sudo

chroot ../rootfs

此時處於arm模擬器core根檔案系統中。

可以新增乙個ubuntu的管理員賬號並修改密碼。

可以為目標板設定乙個主機名。

#ln –s /lib/systemd/system/serial-getty\@.service/etc/systemd/system/getty.target.wants/[email protected]
ubuntu 16.04.02採用了systemd的init初始化系統,用於提高系統的啟動速度。在執行getty.targe時,systemd會自動在/etc/systemd/system/getty.target.wants查詢相關的targe執行,即實際執行/lib/systemd/system/[email protected]這個串列埠終端服務。

udev用於動態管理/dev目錄下的裝置節點。

#apt-get installfbset
可以用apt-get安裝其他適用於目標板的軟體包,如vim,ssh等等。

#apt

-get install initramfs-tools

#mkinitramfs -o /boot/initrd.img 3.10.65
其中3.10.65為核心版本,可以把生成的initrd.img拷貝到linux原始碼目錄,重新命名並替換掉rootfs.cpio.gz,重新編譯linux核心,並生成新boot.img。

可以通過以下命令解壓img文件,從而實現修改。

#mv initrd.img initrd.img.gz

#gunzip initrd.img.gz

#cpio -idmv < initrd.img

設定好core根檔案系統後,用exit命令退出chroot。

#sudo tar –czvf ../ubuntu.tar.gz .
在根檔案系統上一目錄生成ubuntu.tar.gz的文件。

插入sd卡,清空rootfs目錄,把ubuntu.tar.gz拷貝到sd卡rootfs目錄,並解壓。

本文所述構建好的ubuntu core根檔案系統:

構建根檔案系統

wget make defconfig make cross compile arm linux gnueabi make install編譯完install後會預設安裝在busybox原始碼目錄下 install目錄內,但是此檔案系統並不完整,只有四個目錄 root ls bin linuxrc ...

構建根檔案系統

wget make defconfig make cross compile arm linux gnueabi make install編譯完install後會預設安裝在busybox原始碼目錄下 install目錄內,但是此檔案系統並不完整,只有四個目錄 root ls bin linuxrc ...

構建根檔案系統

tar xjf busybox 1.7.0.tar.bz2 cd busybox 1.7.0 make menuconfig 編譯busybox 1.7.0出現如下錯誤 busybox 1.7.0 make menuconfig makefile 405 mixed implicit and nor...