跳至主要内容

(migrated)用R3300L做家用服务器

 

用R3300L做家用服务器


功能:

1.Docker下跑openwrt, 测试用

2.文件共享服务器 ✅ (实现功能, 但性能极差)

3.DLNA服务器 ✔

4.Docker下跑wordpress服务器(hugo?)

5.小型linux服务器 ✔

  ......


操作

一、在TV box(R3300L, S905L)上安装Armbian

    1.制作启动TF卡

       Armbian安装所用镜像来源:   R3300L运行CoreELEC, EmuELEC和Armbian
       Armbian On TV Box原作者发布贴: 
       原作者最新的(bonic)镜像经测试, 在R3300L上, 要么卡Start Kernel, 要么黑屏。
       可用的镜像分享地址: https://share.weiyun.com/5eCvcvS 密码:mivmcn
       最新的可用稳定版本: Armbian_5.9.7_Aml-g12-ubuntu_bionic_5.3.0_20190923.img.xz
       卡刷后, 修改env.txt, dtb文件选择文件名有212那个(有网卡, 无wifi)

注: Armbian初始用户/密码: root/1234

   2. 启动后操作, 重新调整启动TF卡分区

      TF卡第一次启动后,会自动扩展主要分区, 占用全部空间,因为想做文件服务器, 因此需要修改主要分区, 把部分空间分给exfat分区。
      参考:  armbian on TV box
Armbian装TF卡上, 有两个分区, 128M*1 + 1.2G*1.
    第一次启动时, 系统会自动扩展第二个分区, 会占满整个TF卡
    希望留一块空间是windows能读写的(考虑exfat格式), 即使系统坏了, 数据还能读.
    无损调整EXT4分区大小
     操作:
            先等系统启动自动完成扩展.
            关机, 拿出卡, 插到另一个linux(ubuntu类最好)机器上, 不做启动分区(不需要一直mount上), 启动linux.
    # 看分区
    # lsblk
    # 检查需要调整的分区
    # e2fsck -f /dev/sda2
    # 调整分区文件系统到5G.  注意: 需要配合下一步才能生效 _ 这里应该只是把用到的空间都挪到前面5G的空间去了, 但没有实际调整分区大小
    # resize2fs /dev/sda2 5G
    # 进fdisk, 先删除sda2, 再重建5G大小的sda2
    # fdisk /dev/sda
     # 删除原sda2
       (command): d
       (command):  2
    # 新建5G大小的sda2
      (command): n        # 新建
      (command): 2        # 第2分区
      (command): Sectors位置, sda1 End+1    # 起始sectors位置
      (command): +5G                                    # 大小, 或结果secotrs位置: 这里写的是大小, 以+开始, +后面是要划分的空间大小(5G)
      (command): 发现ext4签名, 是否删除: N 不删除
      # 顺便把exfat分区也建上...
      ...
      (command): w    # 写盘退出
    # 再检查一下,没有错误就说明没问题了
    # e2fsck -f /dev/sda2
结果: 成功
      先在windows上格式化了exfat分区, 读写没问题.
     然后用这张卡启动linux正常, 用fdisk看分区也正常.

注1: 处理不能使用上述方法调整分区的情况

  情况描述: 

   有一张128G的卡, 完成armbian第一次启动,系统自动扩展主分区到占满整张卡后,用另一张TF卡启动到Armbian, 把128G卡插到机器上, 试图用e2fsck+resize2fs命令调整分区, 但系统报错说该该已加载,不能完成上述命令.

   考虑到这张卡只用了一次,后面要分出来的空间应该还没有用到, 因此就用fdsik强行重新分区, 并且不格式化调整小的分区,希望能行.

   但完成后用这张卡重启,启动失败,不能进入系统.

   调整分区失败.

 处理方式(试):

   用一张小点的TF卡做armbian系统,完成后用这张卡启动,完成分区调整.

   再把这张卡用USB Image Tool 写U盘镜像工具复制到128G的卡中(从小卡上备份到文件, 在大卡上从文件恢复),这样系统会占用8G的空间,剩余的空间用fdisk(armbian上)分区成extfat,再到Windows上格式化为exfat就ok.

注2: 让Armbian挂载exfat磁盘

  情况描述: Armbian缺省安装不包括exfat支持,需要如下操作安装

   # 更新软件包信息

   # apt-get update

   # 查找exfat相关包名

   # apt-cache search exfat

   # 安装exfat支持

   # apt-get install exfat-fuse exfat-utils

   # 安装完成后, 即可手动挂载

   # 建立挂载点

   # mkdir /mnt/mmcblk0p3

   # 挂载

   # mount -t exfat /dev/mmcblk0p3 /mnt/mmcblk0p3/

注3: 让Armbian系统启动时自动挂载exfat磁盘

  情况描述: Armbian启动时不会自动挂载exfat磁盘, 需要修改/etc/fstab文件

   # 取需要挂载的exfat设备uuid

   # blkid /dev/mmcblk0p3

/dev/mmcblk0p3: UUID="FAAE-B3A5" TYPE="exfat" PARTUUID="de8d9e8d-09"

   # 修改自动挂载配置文件/etc/fstab

   # vim /etc/fstab

   # 在最后增加

  UUID="FAAE-B3A5" /mnt/mmcblk0p3 exfat defaults 0 0

   # 其中

   # 第1列:磁盘装置文件名或该装置的 Label

   # 第2列:Mount point 设备的挂载点,就是你要挂载到哪个目录下

   # 第3列:filesystem 磁盘文件系统的格式

   # 第4列:文件系统参数 parameters

   # 第5列:能否被 dump 备份命令作用

   # 第6列:是否以 fsck 检验扇区

  配置完成后重启确认可以正常挂载.


注: 当前R3300L的Blk情况:

# lsblk
NAME         MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
mmcblk0      179:0    0 119.3G  0 disk 
|-mmcblk0p1  179:1    0   128M  0 part /boot
|-mmcblk0p2  179:2    0   7.3G  0 part /
`-mmcblk0p3  179:3    0 111.8G  0 part /mnt/ext
mmcblk1      179:32   0   7.3G  0 disk 
mmcblk1boot0 179:64   0     4M  1 disk 
mmcblk1boot1 179:96   0     4M  1 disk 
zram0        253:0    0    50M  0 disk /var/log
zram1        253:1    0 400.5M  0 disk [SWAP]
* mmcblk1是内置的EMMC存储

      3. 配置Armbian

      系统提供armbian-config工具, 功能很丰富, 多数设置可以在这里完成
  主要是修改网络配置, 配置时区、时间,配置语言什么的。

  网络似乎需要手动配置:
  1)先装vim
  # apt-get update
  # apt-get install vim
  # 再装个ufw(防火墙工具)
  # apt-get install ufw
  2)修改网卡配置文件 /etc/network/interfaces
    iface eth0 inet static
        address 192.168.1.2
        netmask 255.255.255.0
        gateway 192.168.1.1
        dnsnameservers 192.168.1.1 8.8.8.8 8.8.4.4

二、在Armbian上安装Docker和portainer

     1. 在Armbian上安装Docker

  参考官网安装说明: Get Docker -> Install Docker Engine on Ubuntu
  使用官方的shell安装,如下:
# curl -fsSL https://get.docker.com -o get-docker.sh
# sh get-docker.sh
   安装完成后, 用下面命令测试
# docker run hello-world
(另: 也可用armbian-config安装docker, 完成后用docker run hello-world测试,docker能正常工作, 但安装portainer-ce后不正常, 后换回用官方shell安装)

      2. 在Docker上安装Portainer, 用于Docker管理

# 安装
# docker pull portainer/portainer-ce
# 启动
# docker volume create portainer_data
# docker run -d -p 8000:8000 -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce
然后用浏览器打开http://armbian设备网址:9000, 就能看到portainer的管理界面
在管理界面里进行初始配置。

补充: 忘记Portainer密码后, 如何修改portainer密码
1)查看Portainer的CONTAINER ID
# docker ps -a
CONTAINER ID   IMAGE                    COMMAND        CREATED      STATUS                  PORTS                                                                                            NAMES
30f1a2690e55   portainer/portainer-ce   "/portainer"   7 days ago   Up 7 hours              0.0.0.0:8000->8000/tcp, :::8000->8000/tcp, 0.0.0.0:9000->9000/tcp, :::9000->9000/tcp, 9443/tcp   portainer
看到portainer的CONTAINER ID为30f1a2690e55
2) 停止Portainer容器(参数为portainer的CONTAINER ID)
# docker stop 30f1a2690e55
3) 重置密码: 命令中-v后的参数(portainer_data:/data)与启动时(见前面docker run)用的一样
# docker run --rm -v portainer_data:/data portainer/helper-reset-password
# 第一次调用时, portainer/helper-reset-password会下载安装 
Unable to find image 'portainer/helper-reset-password:latest' locally
latest: Pulling from portainer/helper-reset-password
79916c70cb9e: Pull complete
69e9153f20cb: Pull complete
Digest: sha256:735a809b1bfe14b5fae340d4b350bae97c2016371c47fb6e34d71a45e4512f79
Status: Downloaded newer image for portainer/helper-reset-password:latest
WARNING: The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested
2022/07/24 05:17:47 Password succesfully updated for user: admin
2022/07/24 05:17:47 Use the following password to login: 3<X$v+1PLx-Jj2pY4GBq79=5Us8R_n/\
需要记住这个密码.
另: 在Portainer的web管理界面中, settings->Authentication->Password Rules, 可以修改密码强度(长度)


注意: 在Docker中跑的Image需要和系统的Architectures一致, 比如R3300L需要选择ARM64 Architectures的image
三、在Docker上跑openwrt
参考:  openwrt info
相关信息:

1.openwrt for docker下载(flippy版本):

# docker pull unifreq/openwrt-aarch64

2.运行openwrt for docker(注意:这里并不需要设置网络):

# 这里要使用固定ip地址(用--ip参数设置), ip段看ifconfig中docker的网段, 地址放在较后位置,避免被占
# 直接使用--ip参数的方式, 测试失败!
# docker run --restart always --name openwrt -p 80:80 --ip 172.17.0.199 -d --privileged unifreq/openwrt-aarch64
# 要先建立一个docker的静态network, 自定网段, 但不要与现有docker网段(172.17.0.0/16)冲突
# docker network create --subnet=192.168.188.0/24 staticnet
# 建立docker network后, 可以使用docker network ls查看新建的network
# 启动openwrt, 设置使用静态地址
# docker run --restart always --name openwrt -p 80:80 --net staticnet --ip 192.168.188.188 -d --privileged unifreq/openwrt-aarch64
* 另外还有使用macvlan的方法,如:
  "docker 中运行 openwrt: 利用 macvlan 方式创建虚拟接口进行配置"
   但macvlan方式要使用混杂模式, 搞得有点复杂的感觉, 所以放弃

3.配置openwrt in Docker

先进入portainer查看openwrt运行的容器地址,这里是172.17.0.3 192.168.188.188
进入openwrt容器
# docker exec -it openwrt /bin/bash
临时手动修改openwrt内部地址:
docker# ifconfig br-lan 172.17.0.3 netmask 255.255.255.0
docker# ifconfig br-lan 192.168.188.188 netmask 255.255.255.0
# 设置网关
docker# route add default gw 172.17.0.1
docker# route add default gw 192.168.188.1
修改完成后,查看状态
docker# wget http://172.17.0.3
docker# wget http://192.168.188.188
# 如果能看到回应表明容器内部运行正常
docker# wget http://192.168.1.8
# 上面地址是armbian网卡地址, 如果能看到回应, 表明容器端口映射出来也正常
再在另一台windows机器上,用浏览器打开http://192.168.1.8,如果能看到openwrt界面,则手动设置成功.
再使用浏览器进入openwrt,设置网卡地址信息(设置为容器分配的地址)(手动设置完成后,下次重启又会回到最初状态, 需要用luci设置并保存配置)
Openwrt的网络配置文件是/etc/config/network, 也许手动修改配置文件也可以.

另: 在Docker版本的openwrt里,同样可以用/etc/coremark.sh获取设备性能数据
Docker# /etc/coremark.sh

关于地址设定:
a.由于docker的启动顺序不同,容器可能会在多次启动时获得不同的地址,所以需要使用static方式指定容器ip。
b.还有一种方式,建立macvlan来做通讯,这样方式还需要主设备网卡打开混杂模式,比较麻烦。

经测试, openwrt可以在armbian系统重启后自动启动; 在openwrt容器里(docker exec -it openwrt bash进入)halt关机后, 也会自动重启.

三、在Armbian上安装其它服务

1.samba

# 注: 不要用armbian-config安装, 安装后找不到/etc/init.d/smbd, 
#   却多一个/etc/init.d/samba-ad-dc
# apt-get udpate
# samba是samba服务器, cifs-utils是Windows共享(可不装), sambaclient是samba客户端(也可不装
# apt-get install samba cifs-utils sambaclient

配置samba:

修改配置文件/etc/samba/smb.conf(最后的文件如下, 并确认可用_包括Win10/Es文件浏览器 on 安卓手机_安卓手机上也会提示输入用户名密码):

 [global]
        workgroup = WORKGROUP
        server string = %h server
        hosts allow = 192.168.1.
        log file = /var/log/samba/log.%m
        max log size = 1000
        syslog = 0
        panic action = /usr/share/samba/panic-action %d
        load printers = yes
        printing = cups
        printcap name = cups
        min receivefile size = 16384
        write cache size = 524288
        getwd cache = yes
        socket options = TCP_NODELAY IPTOS_LOWDELAY
[printers]
        comment = All Printers
        path = /var/spool/samba
        browseable = no
        public = yes
        guest ok = yes
        writable = no
        printable = yes
        printer admin = jimway
[print$]
        comment = Printer Drivers
        path = /etc/samba/drivers
        browseable = yes
        guest ok = no
        read only = yes
        write list = jimway
[Share]
        comment = Share_AmlR3300l
        path = /mnt/ext/share
        writable = yes
        public = no
        valid users = jimway
        force create mode = 0644
# 用smbpasswd设置用户密码(用adduser增加smb用户)
# smbpasswd jimway

注: 找不到smbpasswd文件, 但samba用户是可用的

重启samba后生效
# service smbd restart

注: 在测试中, (老MacBook笔记本连无线桥接路由wifi)用samba方式往R3300L(网线连接到主路由)上拷大文件(8G不到)出现了死机现象,表现为SecureCrt上操作无反应,直接在R3300L上操作也差不多.
   后来用SecureCrt上sftp方式向R3300L拷贝同样的大文件, 显示传输速率只有450KB/s(上传)/1700KB/s(下载)

   不能确定瓶颈在哪:

     网络测试过(xWin下用Arora浏览器访问speedtest), 差不多能到百兆;

     tf卡读写速度也测过(hdparm -T), 读能到750MB/sec以上, 写也能到20MB/sec以上

   大文件可能只能用U盘拷了!

R3300L这盒子硬件和Q7差不多, 同样也是有缺陷的.

另: 用Redmi K30手机连samba服务器, (使用同样的无线桥接路由器的wifi)上传能到1.5MB/s以上, 下载能到接近5MB/s

为scanner增加一个共享, 添加独立的用户, 并分配相应的权限。

操作:

1.增加共享ScannerShare

  在原/etc/samba/smb.conf最后增加:

[ScannerShare]

        comment = ScannerShare_AmlR3300l

        path = /mnt/ext/scannershare

        guest ok = yes

        writable = yes

        public = yes

        valid users = jimway, scanner

        force create mode = 0644

2. 相应的增加共享目录/mnt/ext/scannershare   

# mkdir /mnt/ext/scannershare

3. 增加(samba)用户scanner

# useradd scanner

smbpasswd -a scanner

(设置密码)

# vim /etc/passwd

(scanner设置为nologin)

4. ScannerShare设置有效用户

   已设置valid users

设置完成重启samba服务

# service smbd restart



2.miniDLNA

# apt-get udpate
# apt-get install minidlna

配置miniDLNA:

修改配置文件/etc/minidlna.conf中的媒体目录, 如下

media_dir=/mnt/ext/share/media

重启miniDLNA后生效
# service minidlna restart

注: 当前miniDLNA版本为1.2.1, 缺省不支持rmvb格式文件, 需要修改源代码并重新编译, 参考:

四、在Armbian上安装配置hugo(?)服务器

Armbian(ubuntu on Arm)所用apt下载的hugo版本较低(ubuntu的惯例?), hugo博客的主题中的bootstrap4-blog 主题就不支持, 所以需要下载hugo 的github 仓库中的最新deb包, 使用dpkg命令进行安装.
R3300l所用Amlogic S905L支持arm64, 所装的Armbian应该是64位的
# uname -a
Linux AmlR3300l 5.3.0-aml-g12 #5.97 SMP PREEMPT Mon Sep 23 14:33:30 MSK 2019 aarch64 aarch64 aarch64 GNU/Linux
所以应该选用64位版本的Hugo, 当前最新版本为hugo_0.82.1_Linux-ARM64.deb.
# 下载hugo官方包
# wget https://github.com/gohugoio/hugo/releases/download/v0.82.1/hugo_0.82.1_Linux-ARM64.deb
# 使用dpkg安装已下载的hugo的deb包
# dpkg -i hugo_0.82.1_Linux-ARM64.deb
# 查看hugo版本, 以检测安装hugo是否成功
# hugo version
hugo v0.82.1-60618210 linux/arm64 BuildDate=2021-04-20T11:02:50Z VendorInfo=gohugoio
# 建立hugo博客的根目录(应该可以放多个博客)
# mkdir /mnt/ext/hugo
# 进入这个目录
# cd /mnt/ext/hugo
# 新建一个博客(目录)
# hugo new site blog
# 进入博客目录
# cd blog
# 下载bootstrap4-blog 主题到这个博客目录
# git clone https://github.com/alanorth/hugo-theme-bootstrap4-blog.git themes/hugo-theme-bootstrap4-blog
# 将exampleSite 目录中的内容,复制到博客根目录blog中,在blog目录中执行命令:
cp themes/hugo-theme-bootstrap4-blog/exampleSite/* ./ -r
# 启动hugo服务: 绑定到eth0地址, 根url是eth0地址:1313端口
# hugo server --bind 192.168.1.8 --baseURL=http://192.168.1.8:1313
可以从另一机器上的浏览器访问http://192.168.1.8:1313, 应该可以看到初始的网页.

初步的安装完成, 后面看下怎么使用.

另:
# ifconfig eth0|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:"
192.168.1.8
可以简化为
# ifconfig eth0|grep inet|grep -v inet6|awk '{print $2}'|tr -d "addr:"

评论

此博客中的热门博文

(migrated)联通(数码视讯)Q7电视盒子刷机成功, 但这Q7盒子是真的垃圾!

 一、破解方式       联通(数码视讯)Q7(以下简称Q7)有很多种破解方式:          a. 不拆机破解: 主要通过漏洞是装上可以装App的市场或其他工具          b. TTL破解: 连接TTL线,通过进入底层系统打开adb调试, 再通过其它工具安装App, 如:                        “北京联通盒子-数码视讯Q7-破解"             或者在底层的Linux系统里直接安装App.         c. 使用USB Burn方式刷机: 直接刷成别的系统,如:                   " 【2020年11月】北京联通数码视讯Q7破解教程"                          最后用的是这种方式进行刷机 。          相关的包下载地址:          1) 刷机固件:             链接: https://pan.baidu.com/s/18ukQVyQiScAeQPCReoBr0Q                    提取码:yp6t             里面有个压缩包: 20191218-Q7-4.4.2-root-twrp-...

P3TERX/OpenWrt-Newifi_D2的Actions编译配置文件简单分析

  链接 :  https://github.com/P3TERX/OpenWrt-Newifi_D2 Code 目录结构 : 根目录 : .github/ 目录 : .github /workflows / 目录 : 可能需要修改的文件 : .github /workflows /build-openwrt.yml:    文件及参数设置。 文件中可能修改的部分 : name: Build OpenWrt env:   REPO_URL: https://github.com/coolsnowwolf/lede   #  库地址    #  lean 的 https://github.com/coolsnowwolf/lede.git    # or     #  Lienol 的 https://github.com/Lienol/openwrt )   REPO_BRANCH: master           #  不同分支      #  以 Lienol OpenWrt 源码为例 ,  分支 dev-master  激进; dev-19.07 OpenWrt 官方平稳版; dev-lean-lede    lean 的源码   FEEDS_CONF: feeds.conf.default   CONFIG_FILE: open.config         #  编译配置文件  open.config   DIY_P1_SH: diy-part1.sh   ...

(migrated)联通(数码视讯)Q7盒子再刷Openwrt

说明:     联通(数码视讯)Q7盒子(以下简称Q7)做为一个电视盒子应该是没有什么可取之处, 但还可以做点别的, 比如, 做Openwrt盒子。     恩山论坛 的 flippy大侠 推出了 "55+、55+O S905x3、S922x、贝壳云、我家云、微加云等OP固件" , 是基于 amlogic(晶晨) 的S9xx系列arm SOC的openwrt固件, 现在支持包括基于 amlogic(晶晨)  S922x、S912、S905x、s905x2、S905x3、S905d等多款SOC的盒子。    但是,  flippy大侠 的固件说明中, 并未明确指出对S905L的支持, 而Q7用的SOC是S905L。    查到 维基Amlogic 说明中是这么说的:            Amlogic S905L: 与S905X相似,不同之处在于它支持HDMI 2.0b,但缺少VP9解码,摄像头接口和TS输入。     按这种说法, S905L可能是和S905X差不多, 支持S905X应该就能支持S905L, 那么Q7就应该能用。     推论如此, 然后在网上找到了一个实例,  恩山论坛 的 Len_大侠 在 "联通北京数码Q7,S905L电视盒刷成了openwrt系统路由器" 贴子里, 明确说明他已经成功完成了将Q7刷上了Openwrt, 虽然没有详细说明, 但从帖子里可以看出来大概是怎么做的, 那么, 就跟随 Len_大侠 , 让Q7废物利用吧。     为了简单化(偷懒😁), 选用的是使用 外接存储( U盘或TF卡) 启动 Q7的方式。     Q7自带TF卡槽 , 这倒是为数不多的优点之一。 另:       在 Github 上找了下 flippy大侠 的源码,  感觉应该是这个:  lllrrr/mknop       tuanqing/mknop 这个肯定是分支。 另外,  flippy大侠 还做了 Doc...