Archive for the 数码玩物 Category

Raspberry Pi技术笔记之六:共享网络打印机

家里有台较旧的HP打印机,自然是不带网络接口,每次打印的时候都需要搬电脑过去戳USB接口甚是不便,于是开始折腾,接上Raspberry Pi后马上变身网络打印机。打印机型号是HP Officejet J3600,Raspberry Pi所安装操作系统为Archlinux。折腾过程如下:

  1. 安装CUPS通用打印系统
    pacman -Sy cups ghostscript gsfonts
  2. 配置CUPS,对应的配置文件为/etc/cups/cupsd.conf,需要修改的为如下两块,第一块为指定可以使用打印服务的主机,第二块为指定拥有管理员配置权限的主机,其中192.168.168.*为我家局域网的网段,此部分请根据实际环境修改
    完整的配置文件示例:https://github.com/bostoneboy/raspberry_pi_stuff/blob/master/cups/cupsd.conf

    # Restrict access to the server...
    
      Order allow,deny
      Allow localhost
      Allow 192.168.168.*
    
    
    # Restrict access to the admin pages...
    
      Order allow,deny
      Allow localhost
      Allow 192.168.168.*
    
    
  3. 安装HP对应的打印机驱动
    pacman -Sy hplip
  4. 下载CUPS的service启动脚本及加入开机自动启动项
    cd /etc/systemd/system
    wget https://raw.githubusercontent.com/bostoneboy/raspberry_pi_stuff/master/system/cupsd.service
    systemctl enable cupsd.service
  5. 启动/重启 CUPS服务进程
    systemctl restart cupsd
  6. 安装本地局域网共享服务samba,此服务通用于Windows, Linix/OS X系统,先前的NAS方案中也有使用到此服务
    pacman -Sy samba
  7. 启动/重启 samba服务进程,到此服务器端的配置已经完成
    systemctl restart smbd nmbd
  8. 使用WEB接口添加和配置共享打印机。在PC/Mac在浏览器输入CUPS的配置地址 http://192.168.168.2:631/admin ,IP部分需要换成为你Raspberry Pi的IP,631为CUPS服务的监听端口,使用root及对应的密码登入(Raspberry Pi操作系统的root用户及密码),接着根据向导一步一步添加打印机并选择共享即可
  9. 在Mac添加上添加共享打印机成功,测试打印效果

Raspberry Pi技术笔记之四:使用aria2打造下载利器

使用Raspberry Pi下载而不用电脑直接下载的好处有:可以做到完全脱机下载,可以将任务定时在凌晨下载而不会影响正常时间的网速,下载的内容位于NAS硬盘中方便多设备访问。鄙人使用的方案是百度云网盘加aria2,先将BT种子或是电驴链接等等扔到百度云网盘上,再用aria2从百度云网盘下载到本地NAS硬盘,下载速度基本上是满速。Raspberry Pi所安装操作系统为Archlinux。

  1. 安装aria2
    pacman -Sy aria2
  2. 下载aria2配置文件
    mkdir -p /etc/aria2
    cd /etc/aria2
    wget https://github.com/bostoneboy/raspberry_pi_stuff/raw/master/aria2/aria2.conf
    wget https://github.com/bostoneboy/raspberry_pi_stuff/raw/master/aria2/save-session.list

    aria2.conf部分配置项说明:

    ## 下载文件存放目录,根据实际情况修改
    dir=/media/aa/nas/downloading
    ## 是否预先分配磁盘空间
    file-allocation=prealloc
    ## 是否继续下载未完成的文件
    continue=true
    ## 日志级别,可以为debug, info, notice, warn 或 error
    log-level=info
    ## 每下载任务最大连接数
    max-connection-per-server=10
    ## 下载进度输出的间隔时间
    summary-interval=120
    ## 是否以进程的方式启动
    daemon=true
    ## 是否启用rpc
    enable-rpc=true
    ## rpc监听端口
    rpc-listen-port=6800
    ## 是否在所有网卡上启用监听
    rpc-listen-all=true
    ## 最大同时下载任务数,根据实际情况修改
    max-concurrent-downloads=3
    ## 会话保存文件,进程退出时保存未下载完成的会话
    save-session=/etc/aria2/save-session.list
    ## 启动输入文件,进程启动时读取上次未下载完成的会话
    input-file=/etc/aria2/save-session.list
    ## 日志文件,根据实际情况修改
    log=/media/aa/log/aria.log
    ## 是否关闭ipv6
    disable-ipv6=true
    ## 磁盘缓存
    disk-cache=25M
    ## 超时时间
    timeout=600
    ## 重试等待时间
    retry-wait=30
    ## 最大重试次数,0代表可以无限次重试
    max-tries=0
    ## user agent,此处所填值用于伪装成百度云网盘客户端,以达到满速下载的目的
    user-agent=netdisk;4.4.0.6;PC;PC-Windows;6.2.9200;WindowsBaiduYunGuanJia

    更多的配置选项请参考官方配置手册

  3. 下载aria2的service启动脚本及加入开机自启动项
    cd /etc/systemd/system/
    wget https://github.com/bostoneboy/raspberry_pi_stuff/raw/master/system/aria2c.service
    systemctl enable aria2c.service
  4. 以进程的方式启动aria2
    systemctl start aria2c.service
  5. 安装lighttp及aria2的页面端webui
    pacman -Sy lighttpd
    cd /srv
    wget https://github.com/ziahamza/webui-aria2/archive/master.zip
    unzip master.zip
    mv webui-aria2-master http

    用浏览器访问 http://pi的IP地址或主机名 即可看到webui的界面,在此界面添加下载任务测试即可,如果lighttp缺省端口不是80则需要手动修改配置文件并重启进程

  6. 在电脑上的chrome浏览器上安装『百度云导出到aria2』插件,以方便在电脑上直接将百度云盘上的文件添加至aria2,插件下载地址为:
    https://chrome.google.com/webstore/detail/iamaphkapjbdhhpdapkalhanifedeged

    初次安装完成后需要配置aria2 PRC地址,一般来说是

    http://pi的IP地址或是主机名:6800/jsonrpc

    完成后使用导出按钮来测试效果:

  7. 添加定时下载的脚本
    cd /etc/aria2
    wget https://github.com/bostoneboy/raspberry_pi_stuff/raw/master/aria2/aria2_auto.py
    crontab -e
    00 * * * * /usr/bin/python2 /etc/aria2/aria2_auto.py

    此脚本的作用是每天晚上6时暂停所有正在下载的任务,每天凌晨3时开始所有的下载任务,即上班时候和凌晨才会开启脱机下载功能,脚本里面的时候可以根据需要自己来修改。

Raspberry Pi技术笔记之三:搭建简易家用NAS

当家里的手机,平板及电视盒子这种轻量级终端多了后,NAS的需求就愈加强劲了。下方介绍使用Raspberry Pi和2.5吋的移动硬盘打造家用NAS,实现家用存储中心的方案。Raspberry Pi所安装操作系统为Archlinux。

  1. 安装移动硬盘
    树莓派有提供两个USB2.0接口,将移动硬盘与树莓派使用USB接口相连即可。如果移动硬盘不能被系统识别及正常挂载,很大程度是因为移动硬盘的供电不足,可以考虑给移动硬盘单独供电,或者使用『三头USB数据线同时给Raspberry Pi和移动硬盘供电大法』。连接正常后,查看移动硬盘是否被系统识别可以使用fdisk命令,如下显示中的/dev/mmcblk0为装载操作系统的SD卡,/dev/sda为外接移动硬盘

    [root@raspberry nas]# fdisk -l
    
    Disk /dev/mmcblk0: 1.9 GiB, 1967128576 bytes, 3842048 sectors
    Units: sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disklabel type: dos
    Disk identifier: 0x417ee54b
    
    Device         Boot     Start       End  Blocks  Id System
    /dev/mmcblk0p1           2048    186367   92160   c W95 FAT32 (LBA)
    /dev/mmcblk0p2         186368   3667967 1740800   5 Extended
    /dev/mmcblk0p5         188416   3667967 1739776  83 Linux
    
    Disk /dev/sda: 298.1 GiB, 320072933376 bytes, 625142448 sectors
    Units: sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disklabel type: dos
    Disk identifier: 0xc95dbbd8
    
    Device    Boot Start       End    Blocks  Id System
    /dev/sda3 *     2048 625141759 312569856  83 Linux
  2. 格式化移动硬盘如果你的移动硬盘分区格式为NTFS,Linux下可以通过安装额外驱动程序包例如NTFS-3G来支持在其分区上读写,但经测试此类驱动对系统的负载较高,尤其是在性能较低的ARM CPU上,因此强烈建议将移动硬盘格式化为Linux原生支持的ext4分区。如下sda3 为我移动硬盘的分区,此移动硬盘上只有一个分区
    [root@raspberry nas]# mkfs.ext4 /dev/sda3
  3. 挂载移动硬盘,根据个人爱好创建挂载目录,手动挂载移动硬盘分区
    [root@raspberry nas]# mkdir -p /media/aa/nas/
    [root@raspberry nas]# mount /dev/sda3 /media/aa/nas

    将此分区添加到系统的/etc/fstab文件以实现开机自动挂载

    [root@raspberry nas]# vi /etc/fstab
    # /etc/fstab: static file system information
    # <file system>	<dir>	<type>	<options>	<dump>	<pass>
    /dev/mmcblk0p1  /boot           vfat    defaults        0       0
    /dev/sda3 /media/aa ext4 defaults,noatime 0 0
  4. 安装支持SMB文件共享协议的samba软件包SMB是一种能用文件共享协议,支持Windows,Linux和Mac OSX等不同操作系统
    [root@raspberry nas]# pacman -Sy samba

    将相关进程添加至开机自启动

    [root@raspberry nas]# systemctl enable smbd nmbd
  5. 配置samba将如配置文件追回至/etc/samba/smb.conf,其中path列为你需要共享的目录,下面示例为简单粗暴的将整个硬盘共享出来
    [root@raspberry nas]#
    [nas@rasp]
    comment = na
    path = /media/aa/nas
    public = yes
    create mask = 0775
    directory mask = 0775
    guest ok = yes
    browseable = yes
    writable = yes
    #read only = yes
  6. 重启samba服务,即可使用windows,Mac等机器匿名访问此共享目录了
    [root@raspberry nas]# systemctl restart smbd nmbd
  7. 因为没有为samba指定和添加用户组,客户端对上面所添加的目录只有只读权限,若需要将目录赋予可写和执行权限 ,则只需将对应目录添加其它组的可写和执行权限,例如将nas下面download目录赋予可写和执行权限
    [root@raspberry nas]# chmod -R o+rwx /media/aa/nas/download