- 1. 配置编译环境
- 1.1 docker
- 1.2 编译过程中需要的依赖
- 1.3 交叉编译工具链
- 1.4 tf卡分区
- 2. uboot
- 3. linux kernel
- 4. rootfs
- 5. planck-pi操作
- 5.1 修改主机名
- 5.2 启用swap
- 5.3 配置永久静态ip
- 6. PC上的操作
- 6.1 linux虚拟机ssh连接pi
- 6.2 Windows下ssh连接pi
- 7. QA
- 8. 参考
1. 配置编译环境
1.1 docker
安装docker可以直接
sudo apt update
sudo apt install docker.io -y
将用户加入docker group中,然后重启
sudo gpasswd -a ${your_user_name} docker
sudo service docker restart
docker进入镜像后先换源
sed -i s@/archive.ubuntu.com/@/mirrors.aliyun.com/@g /etc/apt/sources.list
1.2 编译过程中需要的依赖
sudo apt update
sudo apt install xz-utils nano wget unzip build-essential git bc swig libncurses5-dev libpython3-dev libssl-dev pkg-config zlib1g-dev libusb-dev libusb-1.0-0-dev python3-pip gawk bison flex -y
sudo apt install python python-dev lib32ncurses5 lib32z1 vim dwarves -y
1.3 交叉编译工具链
# 下载
wget http://releases.linaro.org/components/toolchain/binaries/7.2-2017.11/arm-linux-gnueabi/gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabi.tar.xz
# 解压
sudo mkdir /usr/local/arm
sudo tar -vxf gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabi.tar.xz -C /usr/local/arm
# 配置
sudo nano /etc/profile
# 在末尾添加
PATH=$PATH:/usr/local/arm/gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabi/bin
# 使之生效
source /etc/profile
# 验证
arm-linux-gnueabi-gcc -v
1.4 tf卡分区
# 可以使用gparted进行分区
sudo apt-get install gparted -y
分两个分区
boot 32M FAT16
rootfs -- EXT4
2. uboot
下载u-boot源码
git clone https://github.com/Lichee-Pi/u-boot.git -b nano-v2018.01
cd u-boot
//git branch -a
//git checkout nano-v2018.01
为了方便后边编译在248行添加 目标构架是arm,交叉编译器是
vim Makefile
ARCH=arm CROSS_COMPILE=arm-linux-gnueabi-
在uboot根目录进行编译配置为不带spi,来在根目录生成.config
make licheepi_nano_defconfig
图形化配置
make menuconfig
#Enable boot arguments
console=ttyS0,115200 panic=5 rootwait root=/dev/mmcblk0p2 earlyprintk rw
#bootcmd value
load mmc 0:1 0x80008000 zImage;load mmc 0:1 0x80c08000 suniv-f1c100s-licheepi-nano.dtb;bootz 0x80008000 - 0x80c08000;
回到uboot根目录进行编译
make -j4
确定已经生成了u-boot-sunxi-with-spl.bin文件
sudo dd if=u-boot-sunxi-with-spl.bin of=/dev/sdb bs=1024 seek=8
3. linux kernel
将下载的linux.tar.gz上传到虚拟机中。下载链接
提取码:f1g3
# 解压
tar -zxvf linux.tar.gz
进入源码文件夹
cd linux-nano-5.2-tf
编译
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- -j4
将zImage和suniv-f1c100s-licheepi-nano.dts复制到boot分区
4. rootfs
配置构建环境
sudo apt install qemu-user-static debootstrap -y
mkdir rootfs
cd rootfs
# 从华为源下载
sudo debootstrap --foreign --verbose --arch=armel buster rootfs-debian http://mirrors.huaweicloud.com/debian/
cd rootfs-debian
# 挂载
sudo mount --bind /dev dev/
sudo mount --bind /sys sys/
sudo mount --bind /proc proc/
sudo mount --bind /dev/pts dev/pts/
cd ..
sudo cp /usr/bin/qemu-arm-static rootfs-debian/usr/bin/
sudo chmod +x rootfs-debian/usr/bin/qemu-arm-static
sudo LC_ALL=C LANGUAGE=C LANG=C chroot rootfs-debian /debootstrap/debootstrap --second-stage --verbose
sudo LC_ALL=C LANGUAGE=C LANG=C chroot rootfs-debian
配置文件系统
//vi /etc/apt/sources.list
//# 注释掉原来的源,加这个
//deb http://mirrors.huaweicloud.com/debian buster main
apt update
上面最后一条命令chroot完成,此时可以用 apt-get
等命令给文件系统安装需要的软件包,修改root登录密码等操作:
apt install net-tools usbutils udhcpc vim openssh-server htop pciutils -y
apt install python3 gcc python -y
# 修改密码
passwd root
//# 添加用户
//groupadd <用户组>
//useradd -m -g <用户组> -s /bin/bash <用户名>
//passwd <用户名>
//# 配置时区
//cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
# 添加SSH权限,添加PermitRootLogin yes
nano /etc/ssh/sshd_config
PermitRootLogin yes
可能会出现无法使用方向键的问题,输入
bash
命令进入bash窗口即可。
当所有的内容制作完成,就可以清理缓存,打包之后就可以替换你的文件系统了
apt clean
exit #退出chroot
sudo rm rootfs-debian/usr/bin/qemu-arm-static
卸载刚在挂载的文件夹。
cd rootfs-debian
//sudo umount dev/pts/
sudo umount dev/
//sudo umount sys/
//sudo umount proc/
//sudo umount dev/pts/
打包文件。
sudo tar -cvf ../rootfs.tar . #要注意那个. 代表当前目录
cd ..
sudo cp rootfs.tar /media/ly/rootfs #ly换成你的用户名
cd /media/ly/rootfs
sudo tar -xvf rootfs.tar
sudo rm rootfs.tar
tf卡可以插进planckpi了,使用串口连接上
5. planck-pi操作
通过串口连接pc进行操作
5.1 修改主机名
HOSTNAME=lycraftpi #lycraftpi可以换成别的名字
echo $HOSTNAME > /etc/hostname
echo $HOSTNAME > /proc/sys/kernel/hostname
sed -i '/localhost/s/$/\t'"$HOSTNAME"'/g' /etc/hosts
# 查看Debian版本号
cat /etc/os-release
5.2 启用swap
芯片的SiP内存只有64MB,大部分情况下都不够用,所以需要开启swap使用内存卡的一部分空间来作为交换内存。
通过free -m来查看下内存使用状况:
# free -m
total used free shared buff/cache available
Mem: 54 15 6 0 31 34
Swap: 0 0 0
创建一个自定义的目录 /opt/images/
:
mkdir /opt/images/
#rm -rf /opt/images/swap
创建一个需要内存大小的文件,如512M:
dd if=/dev/zero of=/opt/images/swap bs=1M count=512
把创建的文件变成SWAP分区并启用:
mkswap /opt/images/swap
swapon /opt/images/swap
free -m
看看SWAP是否生效,ok的话设置开机自动挂载swap:
nano /etc/fstab
# 添加一行:
/opt/images/swap swap swap defaults 0 0
5.3 配置永久静态ip
vim /etc/network/interfaces
# 添加以下内容
allow-hotplug usb0
auto usb0
iface usb0 inet static
address 192.168.2.100
netmask 255.255.255.0
gateway 192.168.2.1
# 启用网卡
ifup usb0
# 开机自启
vim /etc/init.d/rcS
# 添加以下内容
ifup lo
ifup usb0
配置DNS
vim /etc/resolv.conf
# 在nameserver下添加
nameserver 223.5.5.5 #阿里的DNS
6. PC上的操作
6.1 linux虚拟机ssh连接pi
sudo vim /etc/network/interfaces
# 添加以下内容
allow-hotplug ens35u1
auto ens35u1
iface ens35u1 inet static
address 192.168.2.1
netmask 255.255.255.0
# 重启下
# 输入以下指令后planckpi就可以上网了
echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward > /dev/null
sudo iptables -P FORWARD ACCEPT
sudo iptables -A POSTROUTING -t nat -j MASQUERADE -s 192.168.2.0/24
接下来通过ssh连接到planckpi玩耍吧
ssh root@192.168.2.100
ping www.baidu.com
6.2 Windows下ssh连接pi
~待填坑
7. QA
-
/bin/sh: 1: python: not found
ls -l /usr/bin/python* sudo ln -s /usr/bin/python3 /usr/bin/python
-
No rule to make target ‘debian/canonical-certs.pem’, needed by ‘certs/x509_certificate_list’. Stop.
# https://blog.csdn.net/u010629326/article/details/73196311 vim .config CONFIG_SYSTEM_TRUSTED_KEYS=""
-
BTF: .tmp_vmlinux.btf: pahole (pahole) is not available
sudo apt-get install dwarves
-
error writing to /tmp/ccEmdmHW.s: No space left on device
虚拟机硬盘空间不够,扩大空间就好了
-
desktop系统下 管理员权限拖拽文件
在桌面的终端中输入sudo nautilus
评论区