稚晖君planck_Pi游玩笔记

配置编译环境

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
编译过程中需要的依赖
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
交叉编译工具链
#下载
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
tf卡分区
#可以使用gparted进行分区
sudo apt-get install gparted -y

分两个分区

boot	32M		FAT16
rootfs	--		EXT4

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

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分区

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了,使用串口连接上

planckpi操作

通过串口连接pc进行操作

修改主机
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
启用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
配置永久静态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

PC上的操作

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
Windows下ssh连接pi

~待填坑

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

参考

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐