Skip to content

Instantly share code, notes, and snippets.

@unixc3t
Forked from snakevil/router.pi-1.md
Created November 23, 2017 05:34
Show Gist options
  • Save unixc3t/68c9645f4622456aac910807463c04a4 to your computer and use it in GitHub Desktop.
Save unixc3t/68c9645f4622456aac910807463c04a4 to your computer and use it in GitHub Desktop.
使用树莓派3B打造超强路由之一:初装

使用树莓派3B打造超强路由之一:初装

新款的树莓派3B功能之丰富,性能之强悍,让我垂涎。考虑到家里的网件 WNDR3700v2 也服役四年有余了。还是败了一个树莓派3B回来打造成新的路由。

WARNING 本文所有指令均仅供参考,切勿无脑复制粘贴!

〇 安装系统

树莓派与路由不同,板上没有电池位保持持久供电,也就不可能有 RAM 实现类 BIOS 的效果。所有的启动引导过程,完全由 TF 卡内的系统完成。因此,我在稍稍纠结之后,决定将此段命名为“安装系统”,而非“刷固件”。

注意 动手之前,可以先看看 TF 卡性能评测简报,选一张好的 TF 卡,可以事半功倍 :)

我现在的常用设备是一台 2013 年中的 MBA ,所以照着《MAC 版安装指南》的说明,先使用外接 USB 口读卡器将 TF 卡格式化成 FAT32 文件系统。

DiskUtility 中的格式化弹窗

之所以不用机器内置的 SD 读卡器,是因为看到有些文章说内置读卡器驱动实现都有些问题,不建议使用。而我在尝试过程中,也发现确实会出现一些很诡异的问题,而在使用外接 USB 口读卡器时就不会出现。

同时去 Raspbian 下载页下载最新版本的 RASPBIAN JESSIE LITE 镜像。使用默认系统,而非那些已经二次定制好的功能型镜像,主要是因为干净,可以更随心所欲地组织功能。

Raspbian树莓派的默认系统,基于 Debian 定制而来。Jessie 意味着使用的是 Debian 8 Jessie 作为基准系统。Lite 版本不带 GUI ,所以相对而言非常小,正适合做路由用。

下载完成后打开 OS X 的终端程序,安装系统。

dd 指令截屏

体贴地提供可复制版本:

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 。

resize2fs 指令截屏

继续体贴地提供可复制版本:

sudo -s
e2fsck -f /dev/sdc2 # 磁盘检查
resize2fs /dev/sdc2 4G # 调整大小

然后根据需要重新分区。

fdisk 指令截屏

注意 我当时没有细想,就直接把数据分区做成了 exFAT ,这是个昏招。exFAT 文件系统缺乏权限信息,用起来会很伤,所以我后来又改回 ext4 了。

“格式化”虚拟内存交换分区。

mkswap 指令截屏

格式化数据分区,然后弹出硬件。

mkfs.ext4 /dev/sdc4 # 格式化数据分区
eject /dev/sdc # 弹出硬件

二 系统调整

将 TF 卡装入树莓派,点亮机器,登录。帐号是 pi,初始密码 raspberry

先调整 sudo 提权模式,保留家目录 $HOME 不变(红色部分是添加内容)。

sudo -s # 提权至 root
EDITOR=vi visudo # 修改提权配置

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 # 进入配置工具
  1. 进入工具;

    配置工具默认界面

  2. 选择变更系统编码;

    变更系统编码菜单项

  3. 选择需要的系统编码;

    变更系统编码选择界面

  4. 确认系统编码并执行调整;

    变更系统编码确认界面

    注意 如果不是确定原理并确定实际操作无误,请确保实际屏幕显示内容与本文截图一致。

  5. 选择变更系统时区;

    变更系统时区菜单项

  6. 选择洲际 Asia

    变更系统时区选择洲际界面

    注意 如果 Asia 不在列表中,请先选择最后一项 None of the above 进入另一层选择界面找到 Asia

  7. 选择时区 Shanghai 并执行调整;

    变更系统时区选择时区界面

  8. 选择变更键盘布局;

    变更键盘布局菜单项

  9. 选择键盘模型 Generic 104-key PC

    变更键盘布局选择模型界面

  10. 选择键盘布局 English (US) - English (US, alternative international)

    变更键盘布局选择布局界面

  11. 其余选项一路默认至执行调整;

  12. 退出配置工具。

调整虚拟内存配置,改用先前创建的分区。

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 # 编写插件,内容请点上面的链接

注销并重新登录,就可以看到安装效果了。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment