11.構建Ubuntu系統

rootfs系列文章:

  1. 構建最小根文件系統
  2. 根文件系統構建(2)
  3. 構建Ubuntu系統

下載根文件系統

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,啓動的時候掛載

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章