I、换源
1:清华源地址(ubuntu20.04):https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/
2:备份原始源:sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup
3:sudo gedit /etc/apt/sources.list
4:全部删除,并粘贴为清华源中的内容
5:更新源:sudo apt-get update
II、交叉编译器
找到:“gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz“ 在同一文件夹下:
sudo mkdir /usr/local/arm
sudo cp gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz /usr/local/arm/
cd /usr/local/arm/
sudo tar -vxf gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz
sudo gedit /etc/profile
在最后一行输入:export PATH=$PATH:/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin
保存退出
重启电脑
查看交叉编译器版本:arm-linux-gnueabihf-gcc -v
III、将uboot烧录到SD卡
1:删除SD卡分区并创建新分区:
sudo fdisk -l
sudo fdisk /dev/sd?
删除原有分区:d1
创建新的分区:n
然后一直默认即可
保存:wq
2:格式化SD卡
sudo mkfs -t vfat /dev/sd?1
3: sudo fdisk -l
查看SD卡文件类型是否变为Linux(fat)
4:进入目录《2/移植阶段/2移植uboot/3LCD和网络windoo_uboot》烧写bin文件
./imxdownload u-boot.bin /dev/sd?
5:安装putty
sudo apt-get install putty
6: 配置u-boot
sudo putty ->选择/dev/ttyUSB0 115200
设置网络
setenv ipaddr 192.168.1.50 //开发板 IP 地址
setenv ethaddr 00:04:9f:04:d2:35 //开发板网卡 MAC 地址
setenv gatewayip 192.168.1.1 //开发板默认网关
setenv netmask 255.255.255.0 //开发板子网掩码
setenv serverip 192.168.1.106 //服务器地址,也就是 Ubuntu 地址
saveenv //保存环境变量
ping 192.168.1.106
设置bootcmd
setenv bootcmd 'tftp 80800000 zImage;tftp 83000000 windoo_bd.dtb;bootz 80800000 - 83000000'
设置bootargs
setenv bootargs console=ttymxc0,115200 root=/dev/nfs rw nfsroot=192.168.1.106:/home/windoo/linux/nfs/rootfs ip=192.168.1.50:192.168.1.106:192.168.1.1:255.255.255.0::eth0:off'␊
saveenv
III、TFTP加载内核和设备树文件
1:ubuntu下安装TFTP
sudo apt-get install tftp-hpa tftpd-hpa
sudo apt-get install xinetd
mkdir /home/windoo/linux
mkdir /home/windoo/linux/tftpboot
chmod 777 /home/windoo/linux/tftpboot
sudo touch /etc/xinetd.d/tftp
sudo gedit /etc/xinetd.d/tftp
->->->
server tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /home/windoo/linux/tftpboot/
disable = no
per_source = 11
cps = 100 2
flags = IPv4
}
->->->
sudo service tftpd-hpa start
sudo gedit /etc/default/tftpd-hpa
->->->
# /etc/default/tftpd-hpa
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/home/windoo/linux/tftpboot"
TFTP_ADDRESS=":69"
TFTP_OPTIONS="-l -c -s"
->->->
sudo service tftpd-hpa restart
2:验证测试:
进入目录:/2移植阶段/3移植内核_zImage+设备树/3添加自己的开发版
cp arch/arm/boot/dts/windoo_bd.dtb /home/windoo/linux/tftpboot
cp arch/arm/boot/zImage /home/windoo/linux/tftpboot
然后自动启动
IV、NFS挂载根文件系统
1:安装NFS
sudo apt-get install nfs-kernel-server rpcbind
sudo gedit /etc/exports
mkdir /home/windoo/linux/nfs
在最后面加入:/home/windoo/linux/nfs *(rw,sync,no_root_squash)
sudo /etc/init.d/nfs-kernel-server restart
2:busybox
进入我们早就配置完成的busybox文件夹下:2移植阶段/4构建根文件系统/busybox-1.29.0
mkdir /home/windoo/linux/nfs/rootfs
make install CONFIG_PREFIX=/home/windoo/linux/nfs/rootfs //如果失败请查看是否是文件夹权限的问题
拷贝库文件(可以看出来步骤5中编译出来的根文件系统是不全的)
所谓的库文件,就是我们交叉编译器的库文件。
cd /home/windoo/linux/nfs/rootfs
mkdir lib
cd /usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/libc/lib
cp *so* *.a /home/windoo/linux/nfs/rootfs/lib/ -d
--(这些库里有个特殊的文件:ld-linux-armhf.so.3,他是个软连接,需要把它变成原文件)
cd /home/windoo/linux/nfs/rootfs/lib
rm ld-linux-armhf.so.3
cd /usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/libc/lib
cp ld-linux-armhf.so.3 /home/windoo/linux/nfs/rootfs/lib
--
cd /usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/lib
cp *so* *.a /home/windoo/linux/nfs/rootfs/lib/ -d
mkdir /home/windoo/linux/nfs/rootfs/usr/lib/
cd /usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/libc/usr/lib
cp *so* *.a /home/windoo/linux/nfs/rootfs/usr/lib/ -d
创建其他文件夹
cd /home/windoo/linux/nfs/rootfs/
mkdir dev proc mnt sys tmp root
bootargs中的根文件系统路径设置,从nfs启动。
setenv bootargs 'console=ttymxc0,115200 root=/dev/nfs rw nfsroot=192.168.1.106:/home/windoo/linux/nfs/rootfs ip=192.168.1.50:192.168.1.106:192.168.1.1:255.255.255.0::eth0:off'
完善根文件系统:
cd /home/windoo/linux/nfs/rootfs
i:
mkdir etc
mkdir etc/init.d
touch etc/init.d/rcS
vim etc/init.d/rcS
---------
#!/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin:$PATH
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/lib:/usr/lib
export PATH LD_LIBRARY_PATH
mount -a
mkdir /dev/pts
mount -t devpts devpts /dev/pts
echo /sbin/mdev > /proc/sys/kernel/hotplug
mdev -s
--------
chmod 777 etc/init.d/rcS
ii:
touch etc/fstab
vim etc/fstab
---------
#<file system> <mount point> <type> <options> <dump> <pass>
proc /proc proc defaults 0 0
tmpfs /tmp tmpfs defaults 0 0
sysfs /sys sysfs defaults 0 0
---------
iii:
touch etc/inittab
vim etc/inittab
#etc/inittab
::sysinit:/etc/init.d/rcS
console::askfirst:-/bin/sh
::restart:/sbin/init
::ctrlaltdel:/sbin/reboot
::shutdown:/bin/umount -a -r
::shutdown:/sbin/swapoff -a
V、NFS无法挂载文件系统
移步https://blog.csdn.net/helloworld573/article/details/108088174