找回密码
 -注册-
查看: 4960|回复: 1
打印 上一主题 下一主题

获取Roon ROCK ssh/root权限笔记

[复制链接]
跳转到指定楼层
1
发表于 2022-11-11 02:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式 来自 北京
这个帖子对普通用户并没什么用。今天烧友说Roon ROCK更新了,性能不错,我想看一下ROCK有何神奇就找了台机器装了一下。结果发现没法远程登录,连了键盘也不行,有点纠结就想办法折腾了一个ssh/root权限来。有朋友想知道怎么搞的,我就在这简单记录一下,只面向不知道为什么对获得这个权限感兴趣的奇奇怪怪的朋友。这系统没什么好玩的,ssh/root权限其实也没什么用,操作都是普通Linux老用户都会的,不是破解,不感兴趣的朋友看到这就可以回帖点赞了。不过其实本帖有个小小的用处,就是在不能顺利安装的非NUC用户,可以用本帖的方法打补丁。不过说实话,如果你都能折腾到这个地步了,也肯定能自己搞定安装,甚至干脆不需要安装ROCK了。我也会简单粘贴一些获取root过程中看到的信息。

先说下材料吧,需要下载img;准备一个用来烧Roon ROCK的u盘;一个某Linux发行版的LiveUSB;一台Linux电脑或者虚拟机,需要内核态支持squashfs的,如果你不知道这是什么那一定是支持的,要在Linux上安装一个软件,Gentoo上叫squashfs-tools,其他发行版估计也差不多。

之后烧了u盘,启动之后一路next就可以安装到NUC电脑上了。接下来你可以启动试试,也可以直接开一个其他Linux发行版的LiveUSB,我用的是archlinux的,这东西特别小,启动起来直接给我一个Terminal prompt。喜欢图形界面的同学也可以用ubuntu之类的启动盘,最后还是得用Terminal,但是可以开个浏览器什么的方便搜索和复制粘贴吧。LiveUSB启动之后,先用fdisk找到NUC的硬盘,比如/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权限,却需要修改。只好把这个文件传回自己的Linux电脑/虚拟机琢磨一下了。

  1. scp rootfs.img zhjie@192.168.1.9:
复制代码


之后登录我自己的Linux,fdisk rootfs.img 就会告诉我 The device contains 'squashfs' signature 。好吧,解开看看吧,

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

复制代码


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

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

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


chroot进去会发现,没有安装systemd,那就去看看/etc/inittab吧,

  1. less /etc/inittab

复制代码


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

  1. grep ssh /etc/rc-startup

复制代码


最后两行是关键,一行说明/root/.ssh/authorized_keys是起作用的;一行说明这机器启动之后会依次启动这些服务,其中第二个就是sshd,很好,不需要我再想办法安装了。这时候把你机器的ssh公钥复制到authorized_keys里就可以了。

  1. echo "xxx" >> /root/.ssh/authorized_keys
复制代码


ctrl+D退出chroot,把/mnt/rock下的proc/sys/dev三个目录umount掉,之后制作新的rootfs

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


下面就简单了,回到刚才LiveUSB登录的NUC,把刚刚修改过的rootfs覆盖掉就可以了。

  1. scp zhjie@192.168.1.9:rootfs.img /mnt/A/rootfs.img
复制代码


重启之后即可登录:

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


想改密码就改,不改也可以。登录之后查了烧友A想看的bbr是否支持,没:

  1. sysctl net.ipv4.tcp_available_congestion_control
  2. net.ipv4.tcp_available_congestion_control = reno cubic
复制代码


又查了烧友B想知道的内核优化的怎么样,是不是实时的,也没:

  1. # CONFIG_PREEMPT_NONE is not set
  2. CONFIG_PREEMPT_VOLUNTARY=y
  3. # CONFIG_PREEMPT is not set
  4. CONFIG_HAVE_PREEMPT_DYNAMIC=y
  5. CONFIG_DRM_I915_PREEMPT_TIMEOUT=640
  6. # CONFIG_PREEMPTIRQ_DELAY_TEST is not set
复制代码


编译优化级别是最低的Generic-x86-64,不支持rcu提权,不支持aqm优化,但是编译进去了微软surface支持和intel显卡的dri驱动。。。谁能帮我想想这些破玩意儿是干啥的,刷到sfp上吗。还有好多iptable和路由器专用的内核Module,强迫症患者不能忍啊,Roon是找了个做路由器的编译的这版内核吧。。

烧友C问系统是不是很干净,有没用的进程吗?这个有,有好多呢:看了一下241个。。除了Roon自己的四个,smb的几个,剩下的都没必要。有好几个docker的,好几个alsa的(roon server并不需要),好多logger的,几乎给每个进程都配了一个,还有用于傻瓜化找ip的mdns,vendor,ripper,等等莫名其妙的东西吧。


小结一下吧。从上述简单的浏览,这个Roon ROCK盛名难副。基本上就是buildroot做的那种路由器固件,只不过他用的是比较笨的办法自己挨个编译攒起来的。按他自己的说法会很小,我看了一下启动之后将近500M吧,我电脑是完整操作系统连gcc工具链都没删也就500多M。换句话说,也没像Roon自己宣传的那么小。截止此时,还在导入曲库,后天我再回来看,导完了我再来说使用是不是顺畅吧。



2
发表于 2022-11-11 14:50 | 只看该作者 来自 上海
学习了,赞
回复

使用道具 举报

您需要登录后才可以回帖 登录 | -注册-

本版积分规则

Archiver|手机版|粤icp备09046054号|耳机网-耳机大家坛

粤公网安备 44030602000598号 耳机大家坛、www.erji.net、网站LOGO图形均为注册商标

GMT+8, 2025-8-23 00:31

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表