树莓派系列(一)- 基础入门
安装系统
需求:
- 树莓派一只
- SD卡(不小于8G,SD卡速度影响系统性能,建议用 Class 10 或更高)
首先去树莓派官网下载最新的镜像,建议新手用 RASPBIAN JESSIE。
下载完解压,得到 img 格式的镜像文件。然后下载安装工具 Win32DiskImager。SD卡插上电脑,打开 Win32DiskImager。
点击文件夹图标选择镜像,后面选择SD卡的盘符,点击 Write
等待几分钟即可(写入时间取决于SD卡的速度),当提示 Write Successful
表示完成了。退出 Win32DiskImager,拔下SD卡,装入树莓派,开机。
初始化
由于没有 线,所以我没有连接显示器,这就导致树莓派必须连接网线进行配置。连接网线后上路由器获得树莓派的IP(前提路由器是自动分配IP)。如果无法登陆路由器,可以用手机去下载 NetX 来扫描获得树莓派的IP。
然后去下载安装 Xshell 5 作为 SSH 客户端(手机用 JuiceSSH )。
打开 Xshell 5,新建会话,名称自定义、协议默认、主机填上树莓派IP、端口号默认,确定,选中会话,点击连接。(如果弹出 SSH 安全警告,点击接受)
新系统的用户名一般都是默认 pi
。
然后输入密码,一般默认是 raspberry
。
这样就成功远程登陆树莓派了。
启用 root 账户
我习惯第一件事就是启用 root。执行:
sudo passwd root
输入两遍密码,如果提示 passwd: password updated successfully
则表示成功更改 root 密码。然后执行:
sudo passwd --unlock root
这样 root 账户就解锁了,执行 su
并输入密码即可使用 root 用户。
接下来是启用 root 直接登录。如果使用 vi 来编辑,不知为何键盘总是乱七八糟的,所以推荐用 WinSCP ,可以本地编辑。
打开 WinSCP,登录树莓派。
打开 /etc/ssh/sshd_config
(千万不要用自带的记事本打开,推荐用 Notepad++),并确保右下角是 UNIX
和 UTF-8
格式的。(新建文件打开默认是 Dos\Windows
格式,Linux 无法读取。可以在编辑-文档格式转换-转换为UNIX格式
更改)
找到:
PermitRootLogin without-password
改成:
PermitRootLogin yes
保存。如果提示无法覆盖,Permission denied
,执行:
chmod 777 /etc/ssh/sshd_config
重试即可,只要提示上传成功就表示已经成功,权限和时间戳没关系,跳过即可。执行下面代码重启 SSH:
service ssh restart
在 WinSCP 和 Xshell 5 都修改成 root 用户登录即可。
更换软件源
修改软件源后仍然很慢,树莓派仍然还要从*.raspberrypi.org
下载
编辑/etc/apt/sources.list
文件
deb http://mirrors.ustc.edu.cn/raspbian/raspbian/ jessie main non-free contrib
deb-src http://mirrors.ustc.edu.cn/raspbian/raspbian/ jessie main non-free contrib
raspberry-最新stretch源
###中科大源
#deb http://mirrors.ustc.edu.cn/raspbian/raspbian/ stretch main non-free contrib
#deb-src http://mirrors.ustc.edu.cn/raspbian/raspbian/ stretch main non-free contrib
#deb http://mirrors.ustc.edu.cn/archive.raspberrypi.org/debian/ stretch main ui
#deb-src http://mirrors.ustc.edu.cn/archive.raspberrypi.org/debian/ stretch main ui
deb http://mirrors.ustc.edu.cn/raspbian/raspbian/ stretch main contrib non-free rpi
#deb-src http://mirrors.ustc.edu.cn/raspbian/raspbian/ stretch main contrib non-free rpi
###清华源
deb http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ stretch main non-free contrib
deb-src http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ stretch main non-free contrib
改完以后你会发现,apt
下载还是会请求archive.raspberrypi.org
。除了以上这些,还要注释掉/etc/apt/sources.list.d/raspi.list
里所有内容。
#deb http://archive.raspberrypi.org/debian/ jessie main ui
# Uncomment line below then 'apt-get update' to enable 'apt-get source'
#deb-src http://archive.raspberrypi.org/debian/ jessie main ui
重新更新并升级软件源
sudo apt update #更新源
sudo apt upgrade #更新软件包
配置树莓派
如果你要使用中文,可以在配置之前先安装中文字体,建议使用英文的。执行:
apt-get -y install ttf-wqy-zenhei
raspi-config 是树莓派的系统配置工具,现在执行:
raspi-config
选择:
-
Expand Filesystem
(扩展文件系统) 使树莓派充分利用整个SD卡。 -
Internationalisation Options
(国际化选项)
Change Locale
(更改语言环境) 去掉en_GB.UTF-8 UTF-8
,选择es_US.UTF-8 UTF-8
、zh_CN.GBK GBK
、zh_CN.UTF-8 UTF-8
,按 Tab 键 OK 回车,默认系统语言设置为zh_CN.UTF-8
。Change Timezone
(更改时区)Asia
-Chongqing
。
<Finish>
,回车,回车重启即可。
VNC
树莓派也是有图形界面的,并且可以通过网络远程连接。安装 VNC server
:
apt-get -y install tightvncserver
首先修改密码,执行:
vncpasswd
输入两遍密码,提示 Would you like to enter a view-only password?
选择否即可。执行 vncserver
启动 VNC server。然后去下载 VNC Viewer(手机下载 VNC Viewer )。打开 VNC Viewer:
填上: IP:端口,然后输入密码即可。
连接 WiFi
由于我的是树莓派3代,自带蓝牙和无线,所以无需外接设备就能使用 WiFi。连接 WiFi 有两种方法:一种图形界面,用上面的 VNC 设置,太简单就不讲了;重点讲讲第二种。
编辑 /etc/wpa_supplicant/wpa_supplicant.conf
,添加:
network={
ssid="WiFi name"
psk="12345678"
key_mgmt=WPA-PSK
}
这个可以参考手机上的 /data/misc/wifi/wpa_supplicant.conf
。添加完之后重启网络来连接 WiFi:
/etc/init.d/networking restart
喔,现在可以拔掉网线到处跑了。
树莓派 配置kali linux wifi连接
1.配置WIFI,使用nano命令修改/etc/network/interfaces文件;
2.增加
auto wlan0 iface wlan0 inet dhcp wpa-ssid “your network name” wpa-psk “the network password”
##外接显示器不显示东西
在将SD卡插入Raspberry Pi之前,修改SD卡目录中的config.txt
文件,内容如下:
#强制使用HDMI输出
hdmi_force_hotplug=1
#HDMI信号增强
config_hdmi_boost=4
#HDMI输出适配于计算机显示器
hdmi_group=2
#HDMI输出的分辨率及刷新频率
hdmi_mode=9
#禁止树莓派检测显示器分辨率,直接使用配置文件中制定的分辨率输出
hdmi_ignore_edid=0xa5000080
#禁止黑边
disable_overscan=1
start_x=1
gpu_mem=128
固件更新
sudo rpi-update
如果提示找不到命令,需要安装rpi-update
sudo apt-get install rpi-update
OK,等待固件更新完成,然后重启
安装中文输入法Fcitx及Google拼音输入法
sudo apt-get install fcitx fcitx-googlepinyin fcitx-module-cloudpinyin fcitx-sunpinyin
sudo apt-get install scim-pinyin
安装中文字体
sudo apt-get install ttf-wqy-microhei
无SSH情况下为树莓派配置WiFi
有WiFi
却没网线的地方如何控制树莓派
首先下载Win
挂载EXT
分区格式工具Paragon ExtFS for Windows
。安装完成后需要重启才能加载驱动文件。
wget http://dl.paragon-software.com/demo/extwin_trial_en.msi
电脑上插入SD
卡,这时win会识别树莓派的根文件系统。
找到/etc/wpa_supplicant/wpa_supplicant.conf
,注意不要使用记事本打开,notepad++
或其他编辑器都可以。
country=GB
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid="WiFi的名称"
psk="WiFi密码"
}
保存之后注意退出Paragon ExtFS for Windows
,安全退出SD卡后再插入树莓派上电启动。
手机上可以通过Fing
扫描树莓派是否成功联网。
树莓派静态ip设置
修改*/etc/dhcpcd.conf *文件
sudo vim /etc/dhcpcd.conf
interface eth0
static ip_address=192.168.0.10/24
static routers=192.168.0.1
static domain_name_servers=192.168.0.1
interface wlan0
static ip_address=192.168.0.200/24
static routers=192.168.0.1
static domain_name_servers=192.168.0.1
上面的配置文件中 , eth0是有线的配置 , wlan0是无线配置
ip_address就是静态IP , 后面要接/24
routers是网关
static domain_name_servers是DNS
挂载 NTFS
我的U盘是 NTFS 格式的,而挂载 NTFS 需要 NTFS-3G,写博客的时候才知道大多数系统都是自带 NTFS-3G 的,所以无需重新下载源码重新编译了,如果你的系统太老以至于没有 NTFS-3G,请自行 Google 安装方法。(检验方法:输入 ntfs
按两下 Tab 能够出现 ntfs-3g
)
12.png
查看 NTFS 分区:
fdisk -l | grep NTFS
13.png
得到 /dev/sda1
,执行:
mkdir /mnt/storage
ntfs-3g /dev/sda1 /mnt/storage
如果提示 Mount is denied because the NTFS volume is already exclusively opened.
,则执行:
umount /dev/sda1
ntfs-3g /dev/sda1 /mnt/storage
这下 NTFS 就成功挂载了,如果要开机自动挂载,就编辑 /etc/fstab
,添加一行:
/dev/sda1 /mnt/storage ntfs-3g silent,umask=0,locale=zh_CN.utf8 0 0
Aria2 一键安装管理脚本
执行下面的代码下载并运行脚本。
wget -N --no-check-certificate https://softs.fun/Bash/aria2.sh && chmod +x aria2.sh && bash aria2.sh # 如果上面这个脚本无法下载,尝试使用备用下载:wget -N --no-check-certificate https://raw.githubusercontent.com/ToyoDAdoubi/doubi/master/aria2.sh && chmod +x aria2.sh && bash aria2.sh
安装Transmisson实现下载功能
安装好树莓派OS之后,使用SmarTTY登陆树莓派。
更新树莓派:
sudo apt-get install update
安装transmission:
sudo apt-get install transmission-daemon
给用户授权:
sudo usermod -a -G pi debian-transmission
设置Transmission的配置文件:
sudo vim /etc/transmission-daemon/settings.json
{
"alt-speed-down": 15,
"alt-speed-enabled": false,
"alt-speed-time-begin": 540,
"alt-speed-time-day": 127,
"alt-speed-time-enabled": false,
"alt-speed-time-end": 1020,
"alt-speed-up": 15,
"bind-address-ipv4": "0.0.0.0",
"bind-address-ipv6": "::",
"blocklist-enabled": true,
"blocklist-url": "http://list.iblocklist.com/?list=ydxerpxkpcfqjaybcssw&fileformat=p2p&archiveformat=gz",
"cache-size-mb": 4,
"dht-enabled": true,
"download-dir": "/home/pi/Downloads",
"download-limit": 100,
"download-limit-enabled": 0,
"download-queue-enabled": true,
"download-queue-size": 5,
"encryption": 1,
"idle-seeding-limit": 30,
"idle-seeding-limit-enabled": false,
"incomplete-dir": "/home/pi/Downloads",
"incomplete-dir-enabled": true,
"lpd-enabled": false,
"max-peers-global": 200,
"message-level": 2,
"peer-congestion-algorithm": "",
"peer-id-ttl-hours": 6,
"peer-limit-global": 240,
"peer-limit-per-torrent": 50,
"peer-port": 51413,
"peer-port-random-high": 65535,
"peer-port-random-low": 49152,
"peer-port-random-on-start": false,
"peer-socket-tos": "default",
"pex-enabled": true,
"port-forwarding-enabled": true,
"preallocation": 1,
"prefetch-enabled": 1,
"queue-stalled-enabled": true,
"queue-stalled-minutes": 30,
"ratio-limit": 2,
"ratio-limit-enabled": false,
"rename-partial-files": true,
"rpc-authentication-required": true,
"rpc-bind-address": "0.0.0.0",
"rpc-enabled": true,
"rpc-password": "raspberry",
"rpc-port": 9091,
"rpc-url": "/transmission/",
"rpc-username": "transmission",
"rpc-whitelist": "127.0.0.1",
"rpc-whitelist-enabled": false,
"scrape-paused-torrents-enabled": true,
"script-torrent-done-enabled": false,
"script-torrent-done-filename": "",
"seed-queue-enabled": false,
"seed-queue-size": 10,
"speed-limit-down": 100,
"speed-limit-down-enabled": false,
"speed-limit-up": 100,
"speed-limit-up-enabled": false,
"start-added-torrents": true,
"trash-original-torrent-files": true,
"umask": 0,
"upload-limit": 100,
"upload-limit-enabled": 0,
"upload-slots-per-torrent": 14,
"utp-enabled": true
}
在这个配置文件中有很多可以更改的选项,对应着上面的配置文件说几个重点的部分,方便理解和自行修改。
blocklist参考了techjawab的github:
"blocklist-url": "http://list.iblocklist.com/?list=ydxerpxkpcfqjaybcssw&fileformat=p2p&archiveformat=gz",
设置下载目录为用户目录下的Downloads文件夹:
"download-dir": "/home/pi/Downloads",
设置未下载完成数据存放地点为Downloads文件夹:
"incomplete-dir": "/home/pi/Downloads",
设置Web登陆密码为:raspberry
"rpc-password": "raspberry",
设置Web登陆用户名:transmission
"rpc-username": "transmission",
允许Web登陆:(设置为true)
"utp-enabled": true
设置完成之后,保存setting.json文件,重新启动transmission服务:
sudo service transmission-daemon reload
到这里可以在浏览器中输入你的树莓派的ip地址和端口号放完transmission的web界面了,比如你的树莓派地址是:192.168.1.10,那么在浏览器中输入:
192.168.1.10:9091
登陆的用户名和密码使用配置文件中设置的内容,例子中的用户名是:transmission,密码是:raspberry。
如果遇到permission问题,按照文中的下载地址,使用以下命令提升Downloads目录的权限:
sudo chmod 777 -R /home/pi/Downloads/
登陆到Web界面之后,点击左上角的文件夹图标可以添加种子文件,树莓派就会开始下载了。
树莓派启用BBR加速
启用bbr
sudo sysctl net.ipv4.tcp_congestion_control=bbr
查看bbr
模块是否加载
lsmod | grep bbr
一个不靠谱的测试
简单的测试了一下bbr
的性能,在严重干扰的wifi
网络下进行100M
文件传输,传输方式为sftp
拥塞控制为cubic
的速度
拥塞控制为bbr
的速度
虽然这个测试不严谨,截图也只是个人估计出的平均速度。评测终归评测,真正的性能提升还得实际体验来证明。
附带一份github
上网友实测记录
144P到1080P的提升已经相当惊艳了
自搭Ngrok实现树莓派内网穿透
如果把花生壳类比为使用别人搭好的ss服务,那么自建Ngrok就是使用自己的ss服务,可见自搭Ngrok的优势不言而喻,流量费用十分经济,速度,稳定性和安全性将远远胜过花生壳。
现在花生壳是一种比较流行的穿透内网的方式,不过其稳定性随着使用人数的增多而大打折扣,内网穿透的价格也不便宜,一套花生棒就是动轭上百,而且流量还要单独买,如果遭遇流量攻击套餐基本就泡汤了。
Ngrok编译部署条件:
- 域名 (.top域名4元首年)
- 拥有独立IP的VPS或云主机 (标准配置低于50一年)
编译Ngrok客户端时会使用openssl生成证书来加密通讯,保证了安全性,使用时必须和签署证书时的域名吻合。
一个拥有独立IP的VPS或云主机,地区的话推荐选择 香港或 国外的,配置可以参考 搭建ss服务的标准,其对 延迟, 带宽和 速度的要求高于内存和CPU。(这里我用的只是openvzcc年付35元的vps,当然这个配置还不是最低价的)
使用国内云主机的话第一个是要考虑域名备案,因为一般反向代理网页时使用了服务器的80端口。第二个是国内符合配置条件的vps比较少,因为没人直接拿国内的服务器番茄,市场的需求催生了国外VPS低内存高带宽而且非常优惠的配置。
编译环境:腾讯云上海节点CentOS 6.7 部署环境:阿里云青岛节点CentOS 6.7+OpenVZCC洛杉矶节点CentOS 6
也可以选择在本地编译好客户端然后部署在服务器上
编译Ngrok
配置科学上网环境(香港或国外主机可省略此步骤)
由于编译过程中会导入包的网址,而这些网址基本都被墙了。
方法不用多说了,这里我图方便采取修改hosts的方法(有点low),最新的hosts文件可以在老D博客获取。
vim /etc/hosts
安装Go语言环境
安装必要包
yum -y install zlib-devel openssl-devel perl hg cpio expat-devel gettext-devel curl curl-devel perl-ExtUtils-MakeMaker hg wget gcc gcc-c++ build-essential mercurial
由于Go官方地址也被墙了,这里使用国内镜像下载源码。
wget http://www.golangtc.com/static/go/1.7rc6/go1.7rc6.linux-386.tar.gz
tar -zxvf go1.7.6.linux-386.tar.gz
mv go /usr/local/
ln -s /usr/local/go/bin/* /usr/bin/
安装成功后查看可Go编译环境
go env
升级Git版本
Go编译过程中要求高版本的git,而yum源里面默认只有1.7.1版本。
#原版kernel.org国内访问过慢,替换为中科大源
wget http://mirrors.ustc.edu.cn/kernel.org/software/scm/git/git-2.9.3.tar.gz
#wget https://coding.net/u/sfantree/p/self_use_OSS/git/raw/master/ngrok/git-2.6.0.tar.gz
#wget https://coding.net/u/sfantree/p/self_use_OSS/git/raw/master/ngrok/git-2.9.3.tar.gz
tar zxvf git-2.9.3.tar.gz
cd git-2.9.3
./configure --prefix=/usr/local/git-2.9.3
make
make install
取代yum安装的低版本git
yum remove git*
ln -s /usr/local/git-2.9.3/bin/* /usr/bin/
检查git版本是否为2.9.3
git --version
Ngrok源码配置
声明编译的路径和必要的域名(域名改成你自己的)
#这是原版代码,编译过程会从github下载依赖包,国内网络坏境基本无解
#git clone https://github.com/inconshreveable/ngrok.git ~/ngrok
#推荐直接下载完整包,一次性编译无需下载
wget https://coding.net/u/sfantree/p/self_use_OSS/git/raw/master/ngrok/ngrok.zip
unzip ngrok.zip
export GOPATH=~/ngrok/
export NGROK_DOMAIN="ngrok.sfantree.com"
cd ~/ngrok
生成证书,Ngrok会使用此证书加密通讯
openssl genrsa -out base.key 2048
openssl req -new -x509 -nodes -key base.key -days 10000 -subj "/CN=$NGROK_DOMAIN" -out rootCA.pem
openssl genrsa -out server.key 2048
openssl req -new -key server.key -subj "/CN=$NGROK_DOMAIN" -out server.csr
openssl x509 -req -in server.csr -CA rootCA.pem -CAkey base.key -CAcreateserial -days 10000 -out server.crt
将证书文件复制到指定位置
cp rootCA.pem assets/client/tls/ngrokroot.crt -i
cp server.crt assets/server/tls/snakeoil.crt -i
cp server.key assets/server/tls/snakeoil.key -i
编译服务器端与客户端
服务器端为linux-x86-64
export GOOS=linux
export GOARCH=386
make release-server
编译完成过后~/ngrok/bin/ngrokd
即为服务端运行文件
树莓派为linux-arm架构,重新声明go env
里的变量
export GOOS=linux
export GOARCH=arm
make release-client
编译完成过后~/ngrok/bin/linux_arm/ngrok
即为树莓派客户端运行文件
注:这里测试时只编译了i386的服务器端和arm的客户端,实际上可以通过改变GOOS
与GOARCH
来获取各个平台的客户端与服务端,GOOS
可以指定为windows
、linux
、 freebsd
、darwin
(Mac OS X 10.5 or 10.6) 和 nacl
(Chrome 的Native Client 接口) ,GOARCH
可以指定为amd64
(64-bit x86) 、386
(32-bit x86) 、 和arm
(32-bit ARM),可见Go语言的跨平台能力相当彪悍。
lnmp全面优化集合nginx+mysql+php
lnmp的全名是linux+nginx+mysql+php,既然是全面优化那我们就从linux系统的选择入手。debian系统可以算是 linux各分支中做的比较突出的一类,连谷歌都抛弃linux订制,由此可见debian系统之优秀,相较其它linux系统debian具有稳定、占 用资源少对于网站web环境来说这些正是我们所需要的,其中debian6版本算是这一优点的集中体现。目前市面上有很多的安装包,其中军哥的lnmp是 被站长使用较多的一种。
也许有朋友会问小三啊,为啥不用lanmp呢?
参考:lnmp和lnmpa性能测试
用nginx的目地是为提高并发能力。
在同一台机器上使用nginx反向 apache,等于脱裤子放屁。+_+*
一:lnmp的nginx优化
主要是修改 /usr/local/nginx/conf/nginx.conf
1.军哥的lnmp安装包中nginx的worker_processes默认设置是1,这里我们要根据服务器cpu具体的核心数来优化。通常4核的CPU我会把值设为3。
2核CPU,开启2个进程
worker_processes 2;
worker_cpu_affinity 01 10;
4核CPU,开3个进程
worker_processes 3;
worker_cpu_affinity 0010 0100 1000;
8核CPU,开8个进程
worker_processes 8;
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;
worker_processes参数解析可参考:worker_processes详解
2.worker_rlimit_nofile参数默认是5xxxx.
worker_rlimit_nofile 65535;
events
{
use epoll;
worker_connections 32700;
}
worker_rlimit_nofile参数讲解可参考:nginx优化参数详解
添加防压力测试 if ($http_user_agent ~ ApacheBench|WebBench|Jmeter|must-revalidate|Havij) {retun 503;} 添加针对CVE-2013-4547链接空格的补丁 if ($request_uri ~ " “) {return 444;}
二:lnmp的mysql优化
用/usr/local/mysql/share/mysql/目录下的my-large.cnf 文件替换根目录etc下的my.cnf文件
my-huge.cnf: 适合1GB - 2GB RAM主机使用 my-large.cnf: 适合 512MB RAM使用 my-medium.cnf: 只有 32MB - 64MB RAM使用 my-small.cnf:小于64MB 用,MySQL会占用很少资源 my-innodb-heavy-4G.cnf 适合4G以上使用
禁用mysql日志:
修改 /etc/my.cnf 文件
在log-bin=mysql-bin和binlog_format=mixed
这两行前面加#注释掉即可。
在query_cache_size= 16M下面添加一行:
tmp_table_size = 200M
mysql参数讲解可参考:mysql优化三:lnmp的php相关参数优化
优化主要是修改/usr/local/php/etc/目录下的php-fpm.conf和php.ini文件
1.php-fpm.conf参数优化
删除value name=“display_errors” 这一行的代码,防止坏人从PHP错误中找到漏洞。
max_children默认参数是开启5个进程。数值要根据内存大小来定,每一个php-cgi所耗费的内存在20M左右。
126M内存默认即可
256M 10个
512M 20个
1G 40个
request_terminate_timeout参数默认是0s,修改为300s
rlimit_files参数默认5xxxx,修改为65535
php-fpm参数讲解可参考:php-fpm详解
2.php.ini参数优化
disable_functions = 默认禁用了一些参数,PHP中有一些函数的风险性还是相当大的,如果允许这些函数执行,当PHP 程序出现漏洞时,损失是非常严重的
fsockopen这个参数用的比较多,可以删除。
另外从安全方面考虑可隐藏PHP版本号
将文件里面的 expose_php = On
修改为 expose_php = Off 即可
将display_errors =On改为Off
最后修改最大连接数使重启后也可生效,在/etc/profile 最后增加一行 ulimit -SHn 65535
另外LNMP安装包里有一个eAccelerator的安装文件。最好装一下。这个是加速PHP缓存的还不错。 关于eAccelerator的设置我就给出两个修改的地方吧:
eaccelerator.shm_size="16"
#默认是占用16M共享内存,军哥好像是1,你就改成16吧。大小也可根据你的内存情况设置。
另外默认是eaccelerator缓存目录是/usr/local/eaccelerator_cache,这样用硬盘缓存的话,某些情况会影响php的响应时间。我们可以直接放到共享内存里面老。 运行命令:mkdir -p /dev/shm/eaccelerator_cache 修改目录为以下就OK了。
eaccelerator.cache_dir="/dev/shm/eaccelerator_cache"
最后全部修改完记得重启生效:/root/lnmp restart
树莓派系统备份
备份SD卡
使用 dd 命令可以直接备份SD卡。这里树莓派的SD卡的路径是 /dev/sdc1 和 /dev/sdc2 ,所以备份整个SD卡的路径就是 /dev/sdc。
输入备份命令:
$ sudo dd if=/dev/sdb|gzip>/home/netsafe/rasp/raspberry.gz
其中备份文件要保存的位置、文件名和 SD卡的路径要根据实际选择。
这个命令可以在备份的同时压缩镜像大小,压缩完成后镜像有6.7G.
还原系统
备份完成后,如果需要还原树莓派,我们可以通过以下方法进行。
方法一:
在windows环境下,将备份文件解压,然后使用 win32diskimager 将备份文件写入到新的SD卡。
方法二:
在linux环境下,使用以下步骤将备份文件写入到SD卡。
1、删除SD卡分区。
使用 fdisk 命令对SD卡格式化2、写入备份文件
$ sudo gzip -dc /home/netsafe/rasp/raspberry.gz| sudo dd of=/dev/sdb
*其中备份文件的位置、文件名和 SD卡的路径要根据实际选择。*这样就将备份还原到树莓派了,可以将SD卡插入树莓派启动!
U盘安装树莓派系统,利用U盘启动Raspberry
树莓派的系统一般是安装在SD卡上,但是SD卡比较脆弱,如果频繁的读写数据,会导致SD卡损坏。SD卡的读写速度也比U盘慢。如果我们将树莓派系统安装在U盘中,利用更加强壮、速度更快的U盘启动树莓派,则可以解决使用SD卡遇到的问题。
以下是U盘安装树莓派系统,利用U盘启动Raspberry的教程。
一、准备条件
- 树莓派一台
- SD卡一个,容量不用太大,但必须大于128M.
- U盘一个,8G以上
- 树莓派系统镜像
二、安装系统
将树莓派系统写入到U盘中,方法和写入SD卡的方法一样,windows下可以使用win32diskimager(镜像写U盘工具)将系统写入。
格式化SD卡,然后将写好系统的U盘下的内容全部复制到SD卡根目录中。
修改SD卡根目录下的 cmdline.txt 文件。因为U盘现在有2个分区,一个是boot(/dev/sda1)分区,另一个才是root(/dev/sda2)分区。 将root=/dev/mmcblk0p2
修改为root=/dev/sda2
。
然后,将U盘和SD卡同时插到树莓派上,上电就可以将树莓派从U盘启动了。
启动后可以感受到,树莓派的运行速度快了许多,这是因为我们使用了速度更快的U盘安装系统。
三、扩展U盘空间
U盘安装完系统后,发现虽然我的U盘是32G大小的,但是使用df命令可以看到只有4G大小,使用sudo raspi-config扩展,提示不能自动扩展:
sda2 is not an SD card. Don't know how to expand
这时需要使用fdisk命令手动扩展空间,信息过程如下。带有注释的行是需要输入的信息。
pi@raspberrypi:~ $ **sudo fdisk /dev/sda #扩展分区**
Welcome to fdisk (util-linux 2.25.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): p #查看现有分区
Disk /dev/sda: 28.7 GiB, 30752000000 bytes, 60062500 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: 0x2d52e4bb
Device Boot Start End Sectors Size Id Type
/dev/sda1 8192 137215 129024 63M c W95 FAT32 (LBA)
/dev/sda2 137216 60062499 59925284 28.6G 83 Linux
Command (m for help): d #删除分区2
Partition number (1,2, default 2): 2 #选择要删除的分区号
Partition 2 has been deleted.
Command (m for help): n #新建分区
Partition type
p primary (1 primary, 0 extended, 3 free)
e extended (container for logical partitions)
Select (default p): p #选择p,即为主分区
Partition number (2-4, default 2): 2 #选择要新建的分区号
First sector (2048-60062499, default 2048): 137216 #输入删除分区前/dev/sda2的起始磁盘柱
Last sector, +sectors or +size{K,M,G,T,P} (137216-60062499, default 60062499): #默认即可
Created a new partition 2 of type 'Linux' and of size 28.6 GiB.
Command (m for help): p #查看修改后的分区
Disk /dev/sda: 28.7 GiB, 30752000000 bytes, 60062500 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: 0x2d52e4bb
Device Boot Start End Sectors Size Id Type
/dev/sda1 8192 137215 129024 63M c W95 FAT32 (LBA)
/dev/sda2 137216 60062499 59925284 28.6G 83 Linux
Command (m for help): wq #保存退出
The partition table has been altered.
Calling ioctl() to re-read partition table.
Re-reading the partition table failed.: Device or resource busy
The kernel still uses the old table. The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8).
然后重启系统 sudo reboot
。
重启完成后,使用 sudo resize2fs /dev/sda2
命令进行实际的空间拓展,等待命令执行完成,再次重启系统,即完成了U盘空间的拓展。
- 原文作者:码中春秋
- 原文链接:https://blog.taielab.com/2017-09-20/raspberry-uses-notes.html
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。