耳机网-耳机大家坛

标题: 新版Roon ROCK体验,开启ssh功能 [打印本页]

作者: 中关村东路    时间: 2022-11-11 14:21
标题: 新版Roon ROCK体验,开启ssh功能
本帖最后由 中关村东路 于 2022-11-11 15:41 编辑

昨天烧友说Roon ROCK更新了,性能不错,我也想看一下ROCK有何神奇就找了台x86装了一下。结果发现没法ssh,连了键盘也不能登录,有点纠结,就折腾了一下。有朋友想知道怎么搞的,我就在这简单记录一下,顺便聊一下新版Roon ROCK的体验。本帖有个额外的小用处,就是不能顺利安装的非NUC用户,可以用本帖的方法打补丁。不过说实话,如果你都能折腾到这个地步了,也肯定能自己搞定安装,甚至干脆不需要安装ROCK了。本帖主要讨论对Roon ROCK的体验,开启ssh功能只是体验的一部分,感兴趣的同学可以根据这篇笔记自己琢磨。


先说结果吧。Roon ROCK盛名难副。基本上就是buildroot做的那种路由器固件,只不过他用的是比较笨的办法自己挨个编译攒起来的。基本上没针对NUC做任何优化,按他自己的说法会很小,我看了一下启动之后将近500M吧,我电脑是完整操作系统连gcc工具链都没删也就500多M,还是为性能优化的版本略大。换句话说,也没像Roon自己宣传的那么小。实测导入曲库和浏览专辑性能也没什么奇迹。建议有一定动手能力的同学自己按照wiki攒个archlinux,只要能安装上去应该就比这个强,换内核很方便,优化空间也大的多。


作者: 中关村东路    时间: 2022-11-11 14:24
这段讲如何安装,并打开ssh功能。先说下材料吧,需要下载img;准备一个用来烧Roon ROCK的u盘;一个任意Linux发行版的LiveUSB,需要内核态支持squashfs的,如果你不知道这是什么那一定是支持的,还要在Linux上安装一个软件,squashfs-tools,其他发行版估计也差不多。

刻u盘,启动之后一路next就可以安装到电脑上了。接下来你可以随便玩玩,也可以直接用Linux LiveUSB启动,我用的是archlinux的,这东西特别小,启动起来直接给我一个Terminal prompt。喜欢图形界面的同学也可以用ubuntu之类的启动盘,最后还是得用Terminal,好在可以开个浏览器什么的方便搜索和复制粘贴吧。LiveUSB启动之后,先用fdisk -l找到系统盘,比如/dev/sda,或者/dev/nvme0n1之类的,我是sda。可以看到四个分区,第一个是efi,第二个是boot,也包括rootfs,第三个是roon server,第四个是保存roon索引数据和图片的。下面执行:

  1. mount /dev/sda2 /mnt
  2. cd /mnt
  3. find .

  4. .
  5. ./grub.cfg
  6. ./identity
  7. ./identity/.rmembid
  8. ./lost+found
  9. ./A
  10. ./A/grub.cfg
  11. ./A/rootfs.img
  12. ./A/initramfs
  13. ./A/bzImage.efi
  14. ./A/image_info
  15. ./grub.env
复制代码


可以看到奇怪的目录A,有用的是启动所需的bzImage,initramfs和rootfs。这个rootfs是squashfs格式,也就是说是只读的不能修改。要登录ssh就需要修改这个文件。fdisk rootfs.img 就会告诉我 The device contains 'squashfs' signature 。好吧,解开看看吧,

  1. unsquashfs -d /tmp/rock -f rootfs.img
  2. ls /tmp/rock

  3. bin  boot  dev  etc  lib  lib64  mnt  proc  roon  root  sbin  sys  tmp  usr  var
复制代码


可以看到这是很规整的Linux目录结构。chroot进去看看吧

  1. mount --types proc /proc /tmp/rock/proc
  2. mount --rbind /sys /tmp/rock/sys
  3. mount --make-rslave /tmp/rock/sys
  4. mount --rbind /dev /tmp/rock/dev
  5. mount --make-rslave /tmp/rock/dev

  6. chroot /tmp/rock /bin/bash --login
复制代码


chroot进去会发现,没有安装systemd,看来是老派rc启动,那就去看看/etc/inittab吧,

  1. cat /etc/inittab

  2. ::sysinit:/etc/rc-startup
  3. ::respawn:/bin/cttyhack /etc/rc-console
  4. ::shutdown:/etc/rc-shutdown
  5. ::ctrlaltdel:/sbin/reboot
复制代码


可以看到,启动脚本是/etc/rc-startup

  1. grep ssh /etc/rc-startup

  2. mkdir /dev/pts && mount -t devpts none /dev/pts # ssh uses /dev/pts
  3. # ssh keys
  4.     cat $ROON_ID_DIR/authorized_keys >> /root/.ssh/authorized_keys
  5. for i in network sshd ntpd nmbd smbd alsa roonconfig ripper; do
复制代码


最后两行是关键,一行说明/root/.ssh/authorized_keys是起作用的;一行说明这机器启动之后会依次启动这些服务,其中第二个就是sshd,很好,不需要我再想办法安装了。这时候把你机器的ssh公钥复制到authorized_keys里就可以了。ctrl+D退出chroot,把/tmp/rock下的proc/sys/dev三个目录umount掉,之后制作新的rootfs

  1. mksquashfs /tmp/rock rootfs.img
复制代码


重启之后即可登录:

  1. ➜  ~ ssh root@192.168.1.11
  2. -bash-4.4#
复制代码








欢迎光临 耳机网-耳机大家坛 (http://erji.net/) Powered by Discuz! X3.2