OpenWRT之HomeKit

1.制备openwrt系统镜像

预编译的openwrt是musl的toolchain,而homebridge需要glibc的toolchain所以需要自己编译系统。

建议安装完成后开启ssh,直接用putty和winscp来传送文件和操作虚拟机更方便。 以下所有命令都是通过putty登陆虚拟机或使用虚拟机的terminal来执行的。

1
sudo apt update

安装编译系统需要的软件包:

1
sudo apt update

下载openwrt最新代码,

1
git clone git://github.com/openwrt/openwrt.git

将feeds.conf.default改名为feeds.conf

更新feeds部分的代码

1
2
./scripts/feeds update -a
./scripts/feeds install -a

使用feeds文件夹替换掉openwrt,原版代码不带avahi的dev库,需要自己添加支持; 另外自带nodejs的版本低于5.0启动homebridge的时候会有个warning,一并更换成最新版。

openwrt编译配置:

1
make menuconfig

需要的软件包: Advanced configuration options (for developers) —> Toolchain Options —> C Library implementation (Use musl) —> [X] Use (e)glibc Base system —> block-mount、ca-certificates Development —> gcc make Kernel modules —>
Filesystems —> kmod-fs-exfat、kmod-fs-ext4、kmod-fs-ntfs、kmod-fs-vfat USB Support —> kmod-usb-storage-extras、kmod-usb2、kmod-usb3 Languages —> Node.js —> node Python —> python Libraries —> libavahi-compat-libdnssd-dev Network —> mosquitto LuCi —> 1. Collections —> luci

保存后开始编译

1
make V=s

趁着时候没事干把准备好的U盘连入虚拟机,格式化成ext3/ext4格式,插到路由器的USB接口上。

刷入系统不再详述,不会搞的可以百度,这方面的教程遍地。 成功后进入路由器管理界面luci,system下将语言改为中文。设置路由器登陆密码,然后使用putty和winscp即可连接到路由器文件系统了。 将U盘查到路由器上等一会以后,从路由器管理界面找到如下位置,看到U盘的大小说明成功。

2. openwrt 挂载overlay到U盘

  • 2.1. 添加必要软件

block-mount kmod-fs-ext4 kmod-usb-ohci kmod-usb-storage fdisk cfdisk e2fsprogs

可以在 menuconfig 通过输入 / 查找这些组件。

  • 2.2. 升级系统

sysupgrade -v xxxx-sysupgrade.bin

  • 2.3. 分区操作

cfdisk

分三个区 sda1(512M)为系统盘,相当于Windows系统的C盘; sda2(128M)为交换分区,用于内存交换; sda3(剩余)为存储区,主要放置较大文件

  • 2.4.格式化各分区
1
2
3
mkfs.ext4 /dev/sda1   #将第一个分区格式化为ext3格式
mkswap /dev/sda2   #将第二个分区格式化为swap交换分区
mkfs.ext4 /dev/sda3   #将第三个分区格式化为ext3格式
  • 2.5.安装完成以后,挂载u盘.如下命令将默认的系统盘转移到u盘中.
1
2
3
4
5
mount /dev/sda1 /mnt
mkdir /tmp/root
mount -o bind / /tmp/root
cp /tmp/root/* /mnt -a
umount /tmp/root
  • 2.6.修改 /etc/config/fstab 文件,让系统启动自动挂载,修改成如下
1
2
3
4
5
6
7
config mount
option target /overlay
option device /dev/sda1
option fstype ext4
option options rw,sync
option enabled 1
option enabled_fsck 0
  • 2.7.执行如下命令让其生效
1
/etc/init.d/fstab enable
  • 2.8.重启后,执行df -h后如果发现/overlay挂载在/tmp/overlay-disabled上的解决方案:

rm /tmp/overlay-disabled/etc/extroot.md5sum

或者删除/tmp/overlay-disabled目录下的所有系统文件,按照第2.5重新操作重启。

文章目录
  1. 1. 1.制备openwrt系统镜像
  2. 2. 2. openwrt 挂载overlay到U盘