跳至主要内容

(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-...

(migrated)关于电视盒子刷机的好贴收集

  1.  折腾电视盒子 2.在斐讯N1盒子上刷入Linux系统代替树莓派做小型服务器       https://zhuanlan.zhihu.com/p/38456769 3. R3300L运行CoreELEC, EmuELEC和Armbian 4. 百视通R3300L刷写固件及EMUELEC         百视通R3300L刷写固件及EMUELEC

(migrated)在美国租车

2017.6.9   使用中国驾照可以开车的州,以及证件有效性   持中国驾照可以在美国大部分州短期内合法驾车,但有少部分州是不可以持中国驾照开车,其中包括肯塔基州、麻萨诸塞州、密歇根州、新泽西州、俄亥俄州、德克萨斯州、佛蒙特州、威斯康辛州等,大多数都位于美国东北部。   下面这个文档是我找到的最详细的相关说明文档:      中国驾照在美国开车的规定(官方文件)   在上述这些州里,你可能因为租车公司员工不清楚法律规定而拿到车,但万一碰上警察就可能遇上麻烦。   如果只是路上要经过其中某个州,而不方便绕过的话,那就小心点开车,也别招警察注意,因为在这段路程中,不仅不合法,可能租车相关的保险也是无效的。   持中国驾照,在美国租车最好携带翻译件,这样租车公司员工能看明白驾照上写的是什么。携程上有各租车公司的翻译件模板,照着做一个就ok。        携程翻译件模板下地址如下:      免费驾照翻译件下载     翻译件必须和驾照原件一起使用。   在美国开车不需要什么驾照公证件,租车公司就不知道这么个东西,你给他公证件,他就当个翻译件来用。   所谓的国际驾照(IDP)对仅持有中国驾照的人而言是完全无效的,中国没有加入联合国道路交通公约,不能颁发国际驾照。这个骗局十多年前就看到了,到现在还在继续。   如果你想拿到有效的IDP,你可以通过拿到加入到相关公约国家的驾照,比如韩国,并使用该国有效驾照申请IDP。   IDP有效期应该是一年,需要和相应的驾照一起使用才有效。 交通规则    这个先不写了,网上好多。 第三方保险    租车公司提供的车损险是有免责条款的,比如车顶、车底、玻璃等是不在保险覆盖范围内的,在详细的合同条款里应该会有,我记得在某一家租车公司的文档里看到过,另外还问过Hertz中国的客服并得到确认。   虽然大部分公司不会拿这些损伤说事,比如去年在路易斯安娜州租的车,就被前面卡车掉落的石子把前挡砸出了一个小坑,最终还车也没从信用卡里另外收钱(当时有买车损险),但万一有事真搬出这条款出来你也没办法。        第三方保险有车损险,而且包括了这些租车公司不保的...