rootfs系列文章:
下載根文件系統
ubuntu的rootfs一般去官網下載就好:http://cdimage.ubuntu.com/ubuntu-base/releases/16.04/release/
也可以用debootstrap去製作,我比較懶,還是自己下載吧。如果是32位的cpu就下載帶armhf的,如果是64位的cpu就下載帶有arm64的包體。
解壓
mkdir rootfs
#創建文件夾
sudo tar -zxvf ubuntu-base-16.04.1-base-amd64.tar.gz -C rootfs
#需要使用root權限去解壓
拷貝qemu
sudo apt-get install qemu-user-static
#安裝qemu
sudo cp /usr/bin/qemu-arm-static rootfs/usr/bin/
sudo cp /usr/bin/qemu-aarch64-static rootfs/usr/bin/
替換軟件源
cp rootfs/etc/apt/sources.list rootfs/etc/apt/sources.list.bak
#備份一下主站源
nano rootfs/etc/apt/sources.list
#替換位如下內容
deb http://mirrors.aliyun.com/ubuntu-ports/ xenial main
deb-src http://mirrors.aliyun.com/ubuntu-ports/ xenial main
deb http://mirrors.aliyun.com/ubuntu-ports/ xenial-updates main
deb-src http://mirrors.aliyun.com/ubuntu-ports/ xenial-updates main
deb http://mirrors.aliyun.com/ubuntu-ports/ xenial universe
deb-src http://mirrors.aliyun.com/ubuntu-ports/ xenial universe
deb http://mirrors.aliyun.com/ubuntu-ports/ xenial-updates universe
deb-src http://mirrors.aliyun.com/ubuntu-ports/ xenial-updates universe
deb http://mirrors.aliyun.com/ubuntu-ports/ xenial-security main
deb-src http://mirrors.aliyun.com/ubuntu-ports/ xenial-security main
deb http://mirrors.aliyun.com/ubuntu-ports/ xenial-security universe
deb-src http://mirrors.aliyun.com/ubuntu-ports/ xenial-security universe
拷貝dns配置
拷貝一下DNS配置,不然等下chroot進去沒法上網
cp /etc/resolv.conf rootfs/etc/
添加掛載腳本
來自網絡,我做了點修改,推出後自動umount
ch-mount.sh
#!/bin/bash
function mnt() {
echo "MOUNTING"
sudo mount -t proc /proc ${1}/proc
sudo mount -t sysfs /sys ${1}/sys
sudo mount -o bind /dev ${1}/dev
sudo mount -o bind /run ${1}/run
sudo chroot ${1}
}
function umnt() {
echo "UNMOUNTING"
sudo umount ${1}/proc
sudo umount ${1}/sys
sudo umount ${1}/dev
sudo umount ${1}/run
}
if [ -n "$1" ] ;
then
mnt $1
umnt $1
else
echo ""
echo "Either 1'st parameters were missing"
echo ""
echo "1'st parameter is the full path of rootfs directory(with trailing '/')"
echo ""
echo "For example: ch-mount /media/sdcard/"
echo ""
echo 1st parameter : ${1}
fi
進入系統
使用上面的腳本一鍵掛載chroot進入新系統
ch-mount.sh rootfs
#進入後顯示下面這樣說明成功了
root@ubuntu:/#
修改機器名
nano /etc/hostname
#自己發揮吧
修改root密碼
passwd
添加用戶
adduser xxx
#自行發揮
配置語言切換到root用戶
這裏先隨便配置一下語言,以免以後安裝軟件遇到一些莫名其妙的錯誤。
nano /etc/environment
#在結尾處插入
export LANGUAGE="en_US.UTF-8"
export LANG=en_US:zh_CN.UTF-8
export LC_ALL=C
su root
#先切換到root用戶,後面安裝軟件纔不會出現語言問題
locale
#執行上面的命令不會報錯就可以了
配置掛載點
nano /etc/fstab
#一共六列:設備 掛接點 文件系統(auto) 參數(defaults) dunp備份(0) 是否檢查(根目錄爲1,其他爲0)
/dev/mmcblk0p7 / auto defaults 0 1
安裝必要命令 sudo ethtool net-tools wireless-tools inetutils-ping ssh
apt update
apt install sudo # sudo
apt install ethtool # 網卡管理工具
apt install net-tools # ifconfig等
apt install wireless-tools # wifi配置工具
apt install inetutils-ping # ping
apt install ssh # ssh
配置網絡接口
上一步安裝了ethtool會在etc目錄下生成network文件夾,安裝了inetutils-ping 會在network下面創建基本的interfaces網卡配置文件,這個時候纔可以配置網卡
nano /etc/network/interfaces
#末尾插入,eth0是我的網卡,配置成dhcp
auto eth0
allow-hotplug eth0
iface eth0 inet dhcp
安裝sudo 配置/etc/sudoers
安裝了sudo還需要吧自己創建的用戶加到sudoers裏面纔可以使用sudo
nano /etc/sudoers
#照着root寫一份自己的就行
安裝桌面環境
桌面系統按需安裝
apt install ubuntu-mate-desktop
製作固件,分盤封裝
最後需要製作固件的可以將etc,usr,home等文件夾分到不同分區,剩下的做成ramrootfs,啓動的時候掛載