<svg xmlns="http://www.w3.org/2000/svg" style="display: none;">
<path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></path>
</svg>
<h1><a id="_2"></a>效果圖</h1>
制作根文件系統,在PC上最全面的莫過於LFS(linux form scratch),而嵌入式中 busybox 是不二之選。不過,我們這次使用debootstrap來構建文件系統。debootstrap是debian/ubuntu下的一個工具,用來構建一套基本的根文件系統,其生成的目錄符合Linux文件系統標准(FHS),即包含了/boot、/etc、/bin、/usr等等目錄,但它比發行版本的Linux體積小很多,當然功能也沒那么強大,因此,只能說是“基本的系統”。
准備環境
安裝所需依賴,使用debootstrap命令創建文件系統。
sudo apt-get install debian-archive-keyring
sudo apt-get install qemu qemu-user-static binfmt-support debootstrap
使用也十分簡單,命令格式為:
sudo debootstrap --arch [平台] [發行版本代號] [構建目錄] [鏡像地址]
當前debootstrap支持的發行版本可以在
/usr/share/debootstrap/scripts
查看,而各發行版代號可以到http://en.wikipedia.org/wiki/List_of_Ubuntu_releases
查看。
創建版本
cd && mkdir build && cd build
這里以bionic版本為例
Armhf
sudo debootstrap --arch=armhf bionic linux-rootfs http://mirrors.ustc.edu.cn/ubuntu-ports/
sudo cp -a /usr/bin/qemu-arm-static ~/build/linux-rootfs/usr/bin/qemu-arm-static
arm64
sudo debootstrap --arch=arm64 bionic linux-rootfs http://mirrors.ustc.edu.cn/ubuntu-ports/
sudo cp -a /usr/bin/qemu-aarch64-static ~/build/linux-rootfs/usr/bin/qemu-aarch64-static
其他鏡像:
- https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/
wget https://raw.githubusercontent.com/ywhs/linux-software/master/ch-mount.sh
chmod 777 ch-mount.sh
./ch-mount.sh -m linux-rootfs/
# 執行腳本后,沒有報錯會進入文件系統,顯示 I have no name ,這是因為還沒有初始化。
debootstrap/debootstrap --second-stage
exit
./ch-mount.sh -u linux-rootfs/
./ch-mount.sh -m linux-rootfs/
# sudo chroot linux-rootfs
配置系統字符集(根據提示進行)
export LC_ALL=en_US.UTF-8
apt-get install locales
dpkg-reconfigure locales
配置時區
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
換源
apt-get install nano
cp /etc/apt/sources.list /etc/apt/sources.list.bak
nano /etc/apt/sources.list
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ bionic main multiverse restricted universe
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ bionic-backports main multiverse restricted universe
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ bionic-proposed main multiverse restricted universe
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ bionic-security main multiverse restricted universe
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ bionic-updates main multiverse restricted universe
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ bionic main multiverse restricted universe
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ bionic-backports main multiverse restricted universe
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ bionic-proposed main multiverse restricted universe
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ bionic-security main multiverse restricted universe
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ bionic-updates main multiverse restricted universe
apt-get update
apt-get upgrade
配置root用戶密碼
# 先設置root用戶的密碼
passwd
創建一個普通用戶
# 這兩個環境變量可以自行修改
USER=pi
HOST=robot
useradd -G adm tty disk dialout sudo audio video plugdev games users systemd-journal input netdev ssh bluetooth -m -s /bin/bash $USER
passwd $USER
# cat /etc/group
# 查看當前系統用戶組
設置主機名稱:
echo $HOST>/etc/hostname
設置本機入口ip:
cat <<EOF > /etc/hosts 127.0.0.1 localhost 127.0.1.1 $HOST
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
EOF
配置Wi-Fi
nano/etc/network/interfaces
auto lo
iface lo inet loopback
allow-hotplug eth0
iface eth0 inet dhcp
auto wlan0
iface wlan0 inet dhcp
pre-up wpa_supplicant -Dwext -i wlan0 -c/etc/wpa_supplicant/wpa_supplicant.conf -B
nano etc/wpa_supplicant/wpa_supplicant.conf
network={
ssid="WIFI-Name"
psk="Password"
key_mgmt=WPA-PSK
priority=1
}
允許自動更新dns:
dpkg-reconfigureresolvconf
安裝依賴
apt-get install -y sudo ssh net-tools ethtool wireless-tools network-manager iputils-ping rsyslog alsa-utils bash-completion gnupg busybox kmod --no-install-recommends
# 安裝音頻管理
apt-get install alsa-utils libasound2-dev wget git curl git# add-apt-repository命令
apt-get install software-properties-common#apt update
#apt install sudo language-pack-en-base ssh net-tools ethtool ifupdown iputils-ping htop vim kmod network-manager xorg qt5-default openbox make
#apt upgrade
#apt install gcc g++
Neofetch
Ubuntu 17.04 and up
apt update
apt install neofetch
Ubuntu 16.10 and below
add-apt-repository ppa:dawidd0811/neofetch
apt update && apt install neofetch
掛載
nano /etc/fstab
#<file system> <mount point> <type> <options> <dump> <pass>
/dev/mmcblk0p1 /boot vfat defaults 0 0
/dev/mmcblk0p2 / ext4 defaults,noatime 0 1
sudo權限問題
https://blog.csdn.net/zhouguangfei0717/article/details/82768474
cd /home && ls -la
drwxr-xr-x 3 root root 4096 May 26 2020 .
drwx------ 21 pi pi 4096 May 26 2020 ..
drwxr-xr-x 3 pi pi 4096 Feb 11 16:28 pi
chmod 755 ".."
visudo
chmod 4755 /usr/bin/sudo
SSH 問題
https://hant.kutu66.com/ubuntu/article_176553
chown root: /
raspi-config
apt install whiptail parted lua5.1 alsa-utils psmisc
wget http://archive.raspberrypi.org/debian/pool/main/r/raspi-config/raspi-config_20200504_all.deb
dpkg -i raspi-config_20200504_all.deb
apt-get -f -y install
安裝Ubuntu mate桌面
https://www.htcp.net/880.html
清理系統
rm -Rf /tmp/* && apt clean && apt autoclean
卸載
./ch-mount.sh -u linux-rootfs/
其他
在構建根文件系統過程中可能還存在其他紕漏,歡迎指正。