稚晖君planck_Pi游玩笔记
[TOC]
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
使用命令行进行分区
sudo fdisk -l
sudo umount /dev/sdb
sudo fdisk /dev/sdb
## d删除分区;n新建分区;w保存
sudo mkfs.vfat /dev/sdb1 # 将第1分区格式化成FAT
sudo mkfs.ext4 /dev/sdb2 # 将第2分区格式化成FAT
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
#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 kernel https://www.kernel.org/
wget https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/linux-5.17.9.tar.gz
# 解压
tar -zxvf linux-5.17.9.tar.gz
cd linux-5.17.9
vim Makefile
# 在362行左右加入以下内容
ARCH ?= arm
CROSS_COMPILE ?=arm-linux-gnueabi-
# 下载荔枝派config文件
cd arch/arm/configs
wget https://files.cnblogs.com/files/twzy/linux-licheepi_nano_defconfig.zip
unzip linux-licheepi_nano_defconfig.zip
# 回到linux根目录
cd ../../..
# 生成.config
make linux-licheepi_nano_defconfig
# 进入可视化配置
make menuconfig
PS:在menuconfig中设置开启RNDIS:
Device Drivers --->
[*] USB support --->
<M> Inventra Highspeed Dual Role Controller (TI, ADI, AW, ...)
MUSB Mode Selection (Dual Role mode) --->
*** Platform Glue Layer ***
<M> Allwinner (sunxi)
*** MUSB DMA mode ***
[*] Disable DMA (always use PIO)
USB Physical Layer drivers --->
<M> NOP USB Transceiver Driver
<M> USB Gadget Support --->
<M> USB Gadget functions configurable through configfs
[*] RNDIS
设备树
修改suniv-f1c100s.dtsi,路径为/arch/arm/boot/dts
#include <dt-bindings/clock/suniv-ccu-f1c100s.h>
#include <dt-bindings/reset/suniv-ccu-f1c100s.h>
# 在soc -> pio中末尾添加以下代码
mmc0_pins: mmc0-pins {
pins = "PF0", "PF1", "PF2", "PF3", "PF4", "PF5";
function = "mmc0";
};
# 在SOC下添加以下代码
mmc0: mmc@1c0f000 {
compatible = "allwinner,suniv-f1c100s-mmc",
"allwinner,sun7i-a20-mmc";
reg = <0x01c0f000 0x1000>;
clocks = <&ccu CLK_BUS_MMC0>,
<&ccu CLK_MMC0>,
<&ccu CLK_MMC0_OUTPUT>,
<&ccu CLK_MMC0_SAMPLE>;
clock-names = "ahb",
"mmc",
"output",
"sample";
resets = <&ccu RST_BUS_MMC0>;
reset-names = "ahb";
interrupts = <23>;
pinctrl-names = "default";
pinctrl-0 = <&mmc0_pins>;
status = "disabled";
#address-cells = <1>;
#size-cells = <0>;
};
suniv-f1c100s-licheepi-nano.dts
# chosen后边添加
reg_vcc3v3: vcc3v3 {
compatible = "regulator-fixed";
regulator-name = "vcc3v3";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
};
# 文末添加
&mmc0 {
vmmc-supply = <®_vcc3v3>;
bus-width = <4>;
broken-cd;
status = "okay";
};
make -j4
然后就是长时间的等待了
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 wpasupplicant udhcpc wireless-tools -y
apt install 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了,使用串口连接上
#修改主机名
HOSTNAME=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
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
评论