1、制作sd卡系统镜像
从官网下载系统镜像
https://www.raspberrypi.org/software/operating-systems/
由于我的主要目的是当服务器用,因此选择了没有桌面的Raspberry Pi OS Lite,Release March 4th 2021
然后使用Win32DiskImager通过读卡器烧录到tf卡上面。然后把tf卡插到树莓派上面,通电,使用micro hdmi转接器连到显示器,插入usb键盘,很顺利就可以看到画面
2、配置ip地址,开启ssh服务
树莓派默认用户名pi,密码raspberry。配置网卡地址的配置文件为
/etc/dhcpcd.conf
# Example static IP configuration:
interface eth0
static ip_address=192.168.2.14/24
#static ip6_address=fd51:42f8:caae:d92e::ff/64
static routers=192.168.2.1
修改完后reboot重启。由于系统默认已经设置了/etc/resolve.conf,nameserver 8.8.8.8,重启完应该就可以上网了。
开启ssh的方法也很简单,sudo raspi-config
选择 3 Interface Options --> P2 SSH,就可以打开。在raspi-config可以顺便选择 5 Localisation Options,把时区选择为 Asia--Shanghai ,把键盘布局也改了,选择Generic 104-key PC --> Other --> English(US) ,默认的英式键盘布局使用起来会有点奇怪,数字键上面的符号会有些不同,\|这个键也没法输入
参考 https://blog.csdn.net/c80486/article/details/8460271
开启ssh之后,树莓派就可以拔掉usb键盘和hdmi线了,一切远程操作
3、默认内核
Linux raspberrypi 5.10.17-v7l+ #1403 SMP Mon Feb 22 11:33:35 GMT 2021 armv7l GNU/Linux
默认32位内核,v7l代表支持LPAE,已经可以支持4G内存。后面有时间再尝试64位系统
4、把系统改装在移动硬盘上
参考
https://blog.csdn.net/nanhantianyi/article/details/106542996
https://wiki.aosc.io/aosc-os/installation/arm-raspberry-pi/
我的4b板子,eeprom版本为3 Sep 12:11:43 UTC 2020,据说可以支持gpt分区usb硬盘启动。我先试一下gpt分区。拿了一块旧硬盘,本身已经是gpt分区好了的。把这块硬盘插在了windows电脑上,用分区助手进行了分区调整。在硬盘最前面腾出了1G的空白空间(有100M应该就够了),准备用来放boot分区。保留了原来一个ntfs的分区保存原来的数据,另外尾部还有300G的空白空间,准备用来放rootfs。
把移动硬盘从windows电脑拔出,插到树莓派上面。lsblk可以看到插进来的硬盘了
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 465.8G 0 disk
└─sda1 8:1 0 113G 0 part
mmcblk0 179:0 0 14.9G 0 disk
├─mmcblk0p1 179:1 0 256M 0 part /boot
└─mmcblk0p2 179:2 0 14.7G 0 part /
sda1就是我们保留的ntfs分区。然后使用命令来划分新的boot分区及rootfs分区
sudo cfdisk /dev/sda
先在前面的空闲空间创建一个分区。创建完分区之后,这个新分区为/dev/sda2,选type更改“EFI System”。
然后在后面的空闲空间再创建一个分区,Type保持“Linux filesystem”即可
然后按write,输入yes,更改分区表,然后quit退出cfdisk。此时lsblk看到
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 465.8G 0 disk
├─sda1 8:1 0 113G 0 part
├─sda2 8:2 0 1G 0 part
└─sda3 8:3 0 351.8G 0 part
然后用命令格式化分区
sudo mkfs.vfat -n "BOOT" /dev/sda2
sudo mkfs.ext4 -L "aosc" /dev/sda3
然后挂载boot分区
sudo mount /dev/sda2 /mnt/
拷贝boot分区
sudo cp -rf /boot/* /mnt/
blkid查看硬盘上新的rootfs /dev/sda3所在的PARTUUID
/dev/mmcblk0p1: LABEL_FATBOOT="boot" LABEL="boot" UUID="7581-8A48" TYPE="vfat" PARTUUID="fec2614b-01"
/dev/mmcblk0p2: LABEL="rootfs" UUID="fa37d505-e741-4d35-bcec-4580aef395e1" TYPE="ext4" PARTUUID="fec2614b-02"
/dev/sda1: LABEL="Old C" UUID="EEFCFCCDFCFC9157" TYPE="ntfs" PARTLABEL="Basic data partition" PARTUUID="8a309608-409d-4e61-b690-99b0cf8a6970"
/dev/sda2: LABEL_FATBOOT="BOOT" LABEL="BOOT" UUID="69F1-6692" TYPE="vfat" PARTUUID="a3094a77-4a3e-fc49-929a-67c37e738f8d"
/dev/sda3: UUID="8CC24021C240123E" TYPE="ntfs" PARTUUID="03c74376-95bf-eb41-a970-5e98adf48220"
修改里面的cmdline.txt
sudo nano /mnt/cmdline.txt
将里面的root=PARTUUID=xxx中的xxx替换掉
然后挂载rootfs的分区
sudo umount /mnt
sudo mount /dev/sda3 /mnt/
直接用参考链接的脚本来拷贝rootfs
#!/bin/bash
boot_mnt=`findmnt -n /dev/mmcblk0p1 | awk '{print $1}'`
rsync --force -rltWDEgop --delete --stats --progress \
--exclude ".gvfs" \
--exclude "$boot_mnt" \
--exclude "/dev" \
--exclude "/media" \
--exclude "/mnt" \
--exclude "/proc" \
--exclude "/run" \
--exclude "/snap" \
--exclude "/sys" \
--exclude "/tmp" \
--exclude "lost\+found" \
/ /mnt
if [ ! -d $boot_mnt ]; then
mkdir $boot_mnt
fi
if [ -d /snap ]; then
mkdir /mnt/snap
fi
for i in boot dev media mnt proc run sys boot; do
if [ ! -d /mnt/$i ]; then
mkdir /mnt/$i
fi
done
if [ ! -d /mnt/tmp ]; then
mkdir /mnt/tmp
chmod a+w /mnt/tmp
fi
执行
sudo bash syncrootfs.sh
文件拷贝完成后,编辑/mnt/etc/fstab,将/boot和/对应的PARTUUID修改为sda2和sda3对应的PARTUUID。
然后将树莓派关机,拔掉tf卡,尝试从usb引导。结果报错“Unable to read partition as FAT lba: 2107392 oem: 'NTFS'”
看来树莓派读到的usb第一个分区是移动硬盘上保存原有数据的ntfs分区,并不是boot分区。看来要调整一下sda上面的分区顺序。再次插入tf卡,先正常启动树莓派系统。然后用命令调整分区顺序
sudo cfdisk /dev/sda
然后选择Sort排序,接着选择Write,输入yes保存分区表修改。
再次拔出tf卡后,重启树莓派就可以正常USB启动了
5、其他优化
将软件源切换至国内镜像,sudo nano /etc/apt/sources.list,
deb http://raspbian.raspberrypi.org/raspbian/ buster main contrib non-free rpi
改为
deb https://mirrors.ustc.edu.cn/raspbian/raspbian/ buster main contrib non-free rpi
树莓派系统自带的vi用起来总是怪怪的。可以替换为完整的vim
sudo apt remove vim-common
sudo apt install vim
树莓派默认禁止root进行ssh登录。要放开的话,修改/etc//ssh/sshd_config
#PermitRootLogin prohibit-password
改为
PermitRootLogin yes
重启sshd,service sshd restart