新款的树莓派3B功能之丰富,性能之强悍,让我垂涎。考虑到家里的网件 WNDR3700v2 也服役四年有余了。还是败了一个树莓派3B回来打造成新的路由。
WARNING
本文所有指令均仅供参考,切勿无脑复制粘贴!
树莓派与路由不同,板上没有电池位保持持久供电,也就不可能有 RAM 实现类 BIOS 的效果。所有的启动引导过程,完全由 TF 卡内的系统完成。因此,我在稍稍纠结之后,决定将此段命名为“安装系统”,而非“刷固件”。
注意 动手之前,可以先看看 TF 卡性能评测简报,选一张好的 TF 卡,可以事半功倍 :)
我现在的常用设备是一台 2013 年中的 MBA ,所以照着《MAC 版安装指南》的说明,先使用外接 USB 口读卡器将 TF 卡格式化成 FAT32 文件系统。
之所以不用机器内置的 SD 读卡器,是因为看到有些文章说内置读卡器驱动实现都有些问题,不建议使用。而我在尝试过程中,也发现确实会出现一些很诡异的问题,而在使用外接 USB 口读卡器时就不会出现。
同时去 Raspbian 下载页下载最新版本的 RASPBIAN JESSIE LITE
镜像。使用默认系统,而非那些已经二次定制好的功能型镜像,主要是因为干净,可以更随心所欲地组织功能。
Raspbian 是树莓派的默认系统,基于 Debian 定制而来。
Jessie
意味着使用的是Debian 8 Jessie
作为基准系统。Lite
版本不带 GUI ,所以相对而言非常小,正适合做路由用。
下载完成后打开 OS X 的终端程序,安装系统。
体贴地提供可复制版本:
sudo -s # 切 root diskutil list /dev/disk2 # 查看 TF 卡情况。 diskutil umount /dev/disk2s1 # 取消分区挂载但不弹出硬件 /bin/dd bs=1m if=2016-05-27-raspbian-jessie-lite.img of=/dev/rdisk2 # 恢复镜像 diskutil eject /dev/disk2 # 弹出硬件
Raspbian Jessie 在启动时会很智能地将主分区扩展,以占满所有空闲空间。但这并不符合我的预期,所以还需要对分区做一些调整。
除掉首个 FAT32 引导分区,和虚拟内存交换分区,剩余空间应该继续拆分出一个数据分区来。主分区只装系统文件,数据什么的全部转移到数据分区上。这样备份、还原主分区又快又省事,还能直接热备份到数据分区里。
将外接 USB 口读卡器插到另外一台 Linux 机器上,将主分区调整至 4G 。
继续体贴地提供可复制版本:
sudo -s e2fsck -f /dev/sdc2 # 磁盘检查 resize2fs /dev/sdc2 4G # 调整大小
然后根据需要重新分区。
注意 我当时没有细想,就直接把数据分区做成了 exFAT ,这是个昏招。exFAT 文件系统缺乏权限信息,用起来会很伤,所以我后来又改回 ext4 了。
“格式化”虚拟内存交换分区。
格式化数据分区,然后弹出硬件。
mkfs.ext4 /dev/sdc4 # 格式化数据分区
eject /dev/sdc # 弹出硬件
将 TF 卡装入树莓派,点亮机器,登录。帐号是 pi
,初始密码 raspberry
。
先调整 sudo
提权模式,保留家目录 $HOME
不变(红色部分是添加内容)。
sudo -s # 提权至 root
EDITOR=vi visudo # 修改提权配置
然后将包管理工具 apt 的镜像改至阿里云,更新系统至最新状态。
echo "deb http://mirrors.aliyun.com/raspbian/raspbian jessie main contrib non-free rpi" > /etc/apt/sources.list # 修改源
echo "deb-src http://mirrors.aliyun.com/raspbian/raspbian/ jessie main contrib non-free rpi" >> /etc/apt/sources.list # 修改源
apt-get update # 更新源索引
apt-get ugprade # 更新系统
Raspbian 有一部分系统底层更新,强制使用官方源,无法调整,所以更新速度会慢到令人发指——我家电信 100M 宽带,下载速度只有 12KBps ——这是一个漫长的等待…
使用系统自带工具配置工作状态,包括:系统编码、系统时区和键盘布局(多图杀猫):
raspi-config # 进入配置工具
-
进入工具;
-
选择变更系统编码;
-
选择需要的系统编码;
-
确认系统编码并执行调整;
注意 如果不是确定原理并确定实际操作无误,请确保实际屏幕显示内容与本文截图一致。
-
选择变更系统时区;
-
选择洲际
Asia
;注意 如果
Asia
不在列表中,请先选择最后一项None of the above
进入另一层选择界面找到Asia
。 -
选择时区
Shanghai
并执行调整; -
选择变更键盘布局;
-
选择键盘模型
Generic 104-key PC
; -
选择键盘布局
English (US) - English (US, alternative international)
; -
其余选项一路默认至执行调整;
-
退出配置工具。
调整虚拟内存配置,改用先前创建的分区。
echo "/dev/mmcblk0p3 none swap defaults 0 0" >> /etc/fstab # 配置分区挂载表
swapon /dev/mmcblk0p3 # 挂载分区至虚拟内存
systemctl stop dphys-swapfile # 停止默认的虚拟内存文件服务
systemctl disable dphys-swapfile # 禁用虚拟内存文件服务
rm -f /var/swap # 删除弃用的虚拟内存文件
将数据分区挂载至 /home
。
echo "/dev/mmcblk0p4 /home ext4 defaults,noatime 0 2" >> /etc/fstab # 配置分区挂载表
mkdir /tmp/home # 创建临时目录用于挂载
mount /dev/mmcblk0p4 /tmp/home # 临时挂载数据分区
mv /home/* /tmp/home/ # 移动已有数据至数据分区
umount /tmp/home # 取消挂载数据分区
rm -fr /tmp/home # 删除临时目录
在下次启动前,可以修改一下 Raspbian 配置,对 TF 卡“超频”,使其获得更好的读写性能。
echo "dtparam=sd_overclock=100" >> /boot/config.txt # 设置 TF 读写频率至 100MHz
reboot # 重启系统
重启完成后再次登录系统,安装常用工具,完成最后的调整。
sudo -s # 提权至 root
apt-get install -y vim git gawk stow screen bridge-utils hostapd dnsmasq ipset ntfs-3g exfat-utils # 安装各类工具
usermod -G4,20,24,27,29,44,46,50,60,100,101,108,997,998,999 pi # 添加帐号 pi 至 staff 组
exit # 退出提权
请原谅我给自己写的服务器终端辅助套件 Bashrc.X 小小地打一下广告…因为我在每台 Linux 环境里都会装上它,以提高工作效率。而且用过的同学一般评价也都还蛮好 :-p
安装 Bashrc.X ,并添加树莓派 Raspbian 专用温度插件。
curl -sS https://raw.githubusercontent.com/snakevil/bashrc.x/master/share/install.sh | sh # 安装 Bashrc.X
mkdir -p .bashrc.x/bashrc.d # 创建插件目录
vim .bashrc.x/bashrc.d/90-prompt-temp.sh # 编写插件,内容请点上面的链接
注销并重新登录,就可以看到安装效果了。