找到
16
篇与
软件
相关的结果
- 第 2 页
-
树莓派搭建文件共享系统(samba) 前引 在不久之前,为了不让{% label 昂贵 red %}的树莓派不吃灰,尝试了一次将树莓派作为云盘服务器的文章 {% link 搭建个人云盘,,https://www.mstzf.cn/posts/private_cloud_disk/ %} 在试用了一段时间后,使用感受并不是很好。 首先,nextcloud修改默认存储位置比较麻烦,云盘的主要目的就是要将资料存储在便于移动、扩展的U盘、硬盘上,而不是直接利用插入的TF卡或者是树莓派自身的内存空间内,这样不仅存储空间比较小而且对自身存储器也是一种损耗。 其次,云盘以网页的方式发布 ,内网穿透比较麻烦。 设备清单 树莓派 移动硬盘(U盘也可) 网络环境 挂载硬盘 查看硬盘 $sudo fdisk -l 如果设备被识别成功,在执行命令后可以查看到类似如下的结果image-20220409211212249图片 不同设备会有不同,类似/dev/hda, /dev/hdb, /dev/sda, /dev/sdb,这些不同的代号,而这些不同的代号又代表着什么?hda一般是指IDE接口的硬盘,hda指第一块硬盘,hdb指第二块硬盘,等等;sda一般是指SATA接口的硬盘,sda指第一块硬盘,sdb指第二块硬盘,等等。 挂载硬盘 {% tabs %} 临时挂载非常简单,只需要一个mount 命令即可 $ sudo mount [参数] [挂载对象(/dev/sda)] [挂载点(新建文件夹来挂载)] # 新建文件夹(挂载点) $ sudo mkdir Disk取消挂载 $ sudo umount [挂载对象] [挂载点]对于mount的参数可以省略,如果又特殊需求可以通过百度来查找mount 参数 所谓的永久挂载其实也就是开机自动挂载,开机自动挂载硬盘不需要在每次开机后都通过命令的方式去挂载硬盘,相对来说比较方便,但是这种方法挂载硬盘后如果没有插入硬盘可能会出现不能引导开机的问题,解决方法这里就不细说了,网上的教程还是比较丰富的。 查看硬盘的UUID $ sudo blkidimage-20220409214826591图片 将获取的UUID复制下来,待会要用 # 新建挂载点(在当前目录下) $ sudo mkdir Disk #编辑fstab加入硬盘信息 $ sudo vim /etc/fstab #在文件最后输入硬盘信息 UUID="刚刚复制的UUID" /home/pi/Disk ext4 defaults 0 1image-20220409215353270图片 测试: # 重启树莓派 $ sudo reboot # 查看挂载情况 $ sudo df -limage-20220409215732729图片 {% endtabs %} 配置samba 按照惯例安装软件之前先update和upgrade一波 # 凑个字数 $ sudo apt update $ sudo apt upgrade # 安装samba sudo apt install samba samba-common-bin -y 配置samba控制文件,指定共享的文件 # 通过vim打开控制文件 $ sudo vim /etc/samba/smb.conf添加文件目录和控制信息,在最后面添加如下内容 [NAS] comment = NAS Storage path = /home/pi/Disk/ browseable = yes read only = no writable = yes valid users = pi create mask = 0775 directory mask= 0775 guest ok = yes{% label path后面的文件路径根据自己的需要来修改,我的路径就是硬盘的挂载地址 blue %} 如果不想共享home下的文件目录,可以找到文件中[home]的部分,将那部分全部注释掉 image-20220409221417876图片 重启samba服务 $ sudo /etc/init.d/samba restart $ sudo systemctl restart samba $ sudo samba restart # 这三个都试试看吧,都是重启服务的命令,我只成功了最后那个 添加默认用户到samba $ sudo smbpasswd -a pi # 输入密码确认即可image-20220409223723986图片 本地连接共享测试 之前将树莓派作为一个软路由来使用,现在电脑和手机都有连接着树莓派的WIFI,所以只需要直接访问树莓派的固定IP就能实现对树莓派共享文件的访问。开热点方法可以参考我之前写的这篇文章。 {% flink %} class_name: class_desc: link_list: name: 树莓派开启个人热点 link: https://www.mstzf.cn/02-09/startAP/ avatar: https://pic.teohzy.com/blog/202202091916889.png descr: {% endflink %} Windows 测试访问共享文件 在文件资源管理器中直接输入\\IP地址 即可访问共享文件 image-20220409223310023图片 还可以映射为本地驱动器,在Network右键->映射网络驱动器 image-20220409223950512图片 Android 如果默认文件管理器可以访问网络存储的话就按照官方教程来使用,如过默认文件管理器不能访问,则要下载其他文件管理器 我目前使用的是文件管理器(File Manager Plus) image-20220409224651643图片 使用体验还是比较不错的 image-20220409224741807图片 内网穿透 这里推荐一个很好用,还免费的内网穿透平台{% label (非广告) red %}。 {% flink %} class_name: class_desc: link_list: name: SAKURA FRP link: https://www.natfrp.com/ avatar: https://nyat-static.globalslb.net/natfrp/index/bg2.jpg descr: " " {% endflink %} 如果需要远程访问到共享文件,就需要内网穿透,安装配置文档已经非常完善,可自行到官网查看安装配置方法。samba占用的是139端口,在创建隧道的时候端口选择139就行。 {% label 如果选择了内网穿透了,一定要设置好密码和保护好隧道信息...不让很容易信息泄露 red %} -
Windows安装ESP-IDF官方工具 官方文档 ESP官方 在Windows上的安装流程已经非常完善了,但是ESP-IDF 工具安装器在国内由于一些众所周知的原因下载速度会比较慢 下载ESP-IDF工具安装器 ESP-IDF工具安装器 最好选择离线安装器,在线安装器安装的速度是真心慢(能科学上网的请自便)。 image-20220307215551250图片 如果安装工具下载太慢,可以使用我在阿里云盘提前下载好的,「esp-idf-tools-setup-offline-4.4.exe」https://www.aliyundrive.com/s/W1D4qpuJVSx 到2022/03/07 为止还是最新的4.4版本。 离线安装 开始的几个步骤一般都不会出现错误,一直往下就行。 image-20220307220151437图片 安装前检查,若出现错误可以使用应用修复,没错误继续下一步 image-20220307220418927图片 下载或使用ESP-IDF,第一次安装选择下载ESP-IDF就行,如果之前有安装使用过,要在先前的基础上安装就选择使用现有的ESP-IDF目录 image-20220307221000905图片 更改安装路径,C盘较大的可以忽略,若C盘空间不足一定要更改安装路径 image-20220307221026246图片 ESP-Tool会安装ESP在编译和烧录软件时必要的各种软件,和安装目录一样可以根据自己的需要修改路径 image-20220307221631603图片 ESP-IDF 工具安装器会下载 Github 发布版本中附带的一些工具,如果访问 Github 较为缓慢,可以选择使用Espressif,从而优先选择 Espressif 的下载服务器进行 Github 资源下载。 image-20220307221803588图片 image-20220307221918096图片 个人感觉这里安装还是比较快的 image-20220307233119122图片 安装完成 image-20220307233221626图片 弹出的命令行不要关闭,等待安装完成后再关闭 添加环境变量 新建环境变量,可以为当前用户添加也可以添加到系统的环境变量中 在Path中添加 image-20220308231635909图片 可以直接在Path中添加绝对路径,也可以新建一个变量,变量格式如下,在Path中将绝对路径中与变量值相同的部分用%IDF_PATH%代替 变量名:IDF_PATH 变量值:指定到安装目录下的Espressif(也可能是.espressif) image-20220308104400515图片 在找到环境变量中的Path,打开并新建环境变量 配置VScode 在扩展中搜索ESP-IDF,选择红色图标那个安装 image-20220308115335519图片 安装好扩展后,按F1,输入esp-idf configure image-20220308115458760图片 image-20220308115634938图片 由于之前已经配置过,选择第三个:使用现有位置等待安装完成 image-20220308115923581图片 然后就可以USB连接ESP32芯片,再通过F1 输入new project创建自己的新项目 IMG_20220308_120208图片 -
搭建私人云盘 准备 硬件: 树莓派4B 机械硬盘 软件: Nginx PHP MySql nextcloud 选用树莓派是由于手头上刚好有一块树莓派,为了不让他吃灰;实际上可以选择旧电脑,或者云服务器。 软件安装 安装nginx $sudo apt install nginx -y安装完成后在浏览器中输入树莓派的IP地址,可以看到如下界面 image-20220219132349742图片 安装PHP7.4 目前最新的PHP版本好像是7.4版本,也可以选择其他版本,将php7.4后面的7.4改成对应的版本哈就可以安装其他版本的PHP sudo apt install php7.4 php7.4-fpm php7.4-cli php7.4-curl php7.4-gd php7.4-cgi php7.4-xml php7.4-dom php7.4-zip php7.4-intl php7.4-mbstring php7.4-mysql -y安装并配置MySql $sudo apt install mariadb-server $sudo mysql_secure_installation此时系统会询问你:Enter current password for root (enter for none): ,按回车(enter)键,因为第一次登陆是没有密码的。 然后会询问你: Set root password? —— 按 y ,进行root帐号的密码设置 此时,会提示 New password ,在此输入你的MySQL密码,请牢记这个密码,输入完成按回车,会提示re-enter new password此时再重复输入密码,回车即可。 然后,询问你 Remove anonymous users ,按 y 。 然后,询问你 Disallow root login remotely ,按 y 。 然后,询问你 Remove test database and access to it ,按 y 。 然后,询问你 Reload privilege tables now ,按 y 。 最后,您将看到消息 All done! 和 Thanks for using MariaDB! 。表示已经设置完成了。 sudo mysql -u root -p #输入密码后: # 创建数据库 CREATE DATABASE IF NOT EXISTS nextcloud DEFAULT CHARACTER SET UTF8 COLLATE utf8_general_ci; # 创建用户 GRANT ALL PRIVILEGES ON nextcloud.* to '用户名'@'127.0.0.1' identified by '密码'; # 刷新数据库 FLUSH PRIVILEGES; 配置软件 配置Nginx $sudo vim /etc/nginx/sites-available/defaultnginx默认的网站代理地址是在var/www/html下,可以保留使用原来的,也可以修改到自己新建的地址下。如果选择新建不要忘记去确保指定的路径下的文件夹要存在。像我的就要在/var下新建owncloud文件夹。sudo mkdir /var/owncloud image-20220219194922636图片 location / { index index.html index.htm index.php default.html default.htm default.php; if (-f $request_filename/index.html){ rewrite (.*) $1/index.html break; } if (-f $request_filename/index.php){ rewrite (.*) $1/index.php; } if (!-f $request_filename){ rewrite (.*) /index.php; } }去掉location ~ \ .php上的注释 image-20220219195040903图片 给根目录权限 # 给权限 sudo chmod -R 755 /var/owncloud sudo chown -R www-data:www-data /var/owncloud #重启nginx sudo systemctl restart nginx在刚刚网站指定的目录下新建PHP测试文件 $sudo vim /var/owncloud/index.php #输入以下代码 <?php phpinfo(); ?>重新启动Nginx:$sudo systemctl restart nginx 可能报错: “Job for nginx.service failed because the control process exited with error code. See "systemctl status nginx.service" and "journalctl -xe" for details.” 多检查修改过的地方,是否有单词错误,或者是否有分号,括号是否对应... Nginx代理php成功后,在浏览器输入树莓派IP地址后能看到如下界面说明配置成功。 image-20220219141927075图片 安装nextCloud 进入刚刚配置的代理目录:cd /var/nextcloud 将刚刚的测试文件删除: sudo rm * 下载nextcloud) sudo wget https://download.nextcloud.com/server/releases/nextcloud-23.0.2.tar.bz2这是目前最新版本,请自己到官网查看版本 image-20220219192510883图片 # 解压缩: sudo tar -jxvf nextcloud-23.0.2.tar.bz2 nextcloud # 复制出来 sudo cp -rf nextcloud/* /var/owncloud再访问IP地址就可以看到NextCloud的运行界面了 image-20220219200624789图片 -
树莓派开启个人热点 更新软件 $sudo apt update $sudo apt upgrade安装并配置hostapd服务 安装hostapd $sudo apt install hostapd $sudo systemctl stop hostapd配置hostapd 编辑/etc/hostapd/hostapd.conf文件,如果不存在这个文件可以直接新建一个。 $sudo vim /etc/hostapd/hostapd.confinterface=wlan0 #bridge=br0 #无线驱动n180211 driver=nl80211 logger_syslog=-1 logger_syslog_level=2 logger_stdout=-1 logger_stdout_level=2 ##### IEEE 802.11 related configuration ####################################### #热点名字,可根据需要自行更改 ssid=AP-Pi4 utf8_ssid=1 # ISO/IEC 3166-1 标准的国家代码,用于设置监管域。根据需要设置,按照哪个国家来操作设备。 # 这可以限制可用的频道和发射功率。 #country_code=CN # 是否启用 IEEE 802.11d,0 禁用(默认),1 启用。 # 需要正确设置 country_code 才能使 IEEE 802.11d 正常工作。 #ieee80211d=1 # 是否启用 IEEE 802.11h,0 禁用(默认),1 启用。 # 这将启用雷达探测和 DFS 支持,如果可用话。 #ieee80211h=1 # 添加 Power Constraint element 到 Beacon 和 Probe Response frames 中去。 #local_pwr_constraint=5 # 该选项仅在 ieee80211h=1 选项并且已经配置 local_pwr_constraint 选项时可用。 #spectrum_mgmt_required=1 # 设置无线模式需要硬件支持 #a = IEEE 802.11a, #b = IEEE 802.11b, g #= IEEE 802.11g, #ad = IEEE 802.11ad (60 GHz) # hw_mode=a 或 hw_mode=g 选项也与 IEEE 802.11n 一起使用来设置波段。 # 当使用 ACS 时(看下文 channel parameter ),可以使用特殊的选项值 hw_mode=any ,说明可以使用任何可用的波段,该值当前仅在驱动使用了 offloaded ACS 的情况下有效。 # 默认: hw_mode=b hw_mode=g # 注意有些设备不使用这个选项,而是需要在 iwconfig 中另外配置。 # 如果编译的时候启用了 CONFIG_ACS 选项。通过设置 channel=acs_survey 或 channel=0,这样 hostapd 可以在运行时基于 ACS survey 算法自动选择合适的信道。 # 有些设备仅支持最大为11频道,有些支持最大为13频道,可以通过iw list 查看。 # 另外启用 ht_capab 将影响可用的频道数 channel=6 # ACS tuning - 信道自动选择 # 参考:http://wireless.kernel.org/en/users/Documentation/acs # 信道自动选择,有助于选择更好的信道,但是会增加启动时间,一般不需要修改。 # 可以通过设置下面选项自定义 ACS survey 算法。 # 默认:acs_num_scans=5 acs_chan_bias=1:0.8 6:0.8 11:0.8 #acs_num_scans=40 #acs_chan_bias=1:0.8 6:0.8 11:0.8 # 默认允许所有信道 #chanlist=100 104 108 112 116 #chanlist=1 6 11-13 # beacon 间隔 (默认: 100; 范围 15到65535) #beacon_int=100 #dtim_period=1 # 默认且最大值为2007个列表 #max_num_sta=255 #rts_threshold=2347 #fragm_threshold=2346 #supported_rates=10 20 55 110 60 90 120 180 240 360 480 540 #basic_rates=10 20 #basic_rates=10 20 55 110 #basic_rates=60 120 240 # 用命令:iw list 查看无线网卡是否有“short preamble supported”。 # 0 禁用,1 启用,无线网卡支持的话可以启用以改善网络性能。 #preamble=1 # 无线MAC地址过滤 # 此选项要求 driver=hostap 或 driver=nl80211 # 0 = 接受所有连接,仅拒绝 deny 列表中的连接 # 1 = 拒绝所有连接,仅接受 accept 列表中的连接 # 2 = 使用外部 RADIUS 服务器 (还是会优先查找 accept/deny 列表) # 简单一点的话,可以将两个列表设置为同一个文件,仅由 macaddr_acl 来控制允许或拒绝 macaddr_acl=0 accept_mac_file=/etc/hostapd/hostapd.accept deny_mac_file=/etc/hostapd/hostapd.deny # 身份验证算法,1 开放系统认证,2 共享密钥认证(需要 WEP),3 两者 auth_algs=3 # 是否广播,0 广播SSID,1 不广播SSID(发送空SSID,即长度为0的SSID), # 2 忽略广播 SSID 的探测请求,跟1类似,但是兼容某些不支持空SSID的设备 #ignore_broadcast_ssid=0 #vendor_elements=dd0411223301 # 启用WMM wmm_enabled=1 # # WMM-PS Unscheduled Automatic Power Save Delivery [U-APSD] # Enable this flag if U-APSD supported outside hostapd (eg., Firmware/driver) #uapsd_advertisement_enabled=1 # # Low priority / AC_BK = background #wmm_ac_bk_cwmin=4 #wmm_ac_bk_cwmax=10 #wmm_ac_bk_aifs=7 #wmm_ac_bk_txop_limit=0 #wmm_ac_bk_acm=0 # Note: for IEEE 802.11b mode: cWmin=5 cWmax=10 # # Normal priority / AC_BE = best effort #wmm_ac_be_aifs=3 #wmm_ac_be_cwmin=4 #wmm_ac_be_cwmax=10 #wmm_ac_be_txop_limit=0 #wmm_ac_be_acm=0 # Note: for IEEE 802.11b mode: cWmin=5 cWmax=7 # # High priority / AC_VI = video #wmm_ac_vi_aifs=2 #wmm_ac_vi_cwmin=3 #wmm_ac_vi_cwmax=4 #wmm_ac_vi_txop_limit=94 #wmm_ac_vi_acm=0 # Note: for IEEE 802.11b mode: cWmin=4 cWmax=5 txop_limit=188 # # Highest priority / AC_VO = voice #wmm_ac_vo_aifs=2 #wmm_ac_vo_cwmin=2 #wmm_ac_vo_cwmax=3 #wmm_ac_vo_txop_limit=47 #wmm_ac_vo_acm=0 # Note: for IEEE 802.11b mode: cWmin=3 cWmax=4 burst=102 # 检测客户端不活动超时,是否在线间隔时间,默认每5分钟检测客户端是否在线 # 站点不活动限制,默认5分钟 #ap_max_inactivity=300 # 默认禁用,设置为1,说明只要客户在5分钟内没有活动就断线,即使客户端仍然在AP信号的范围内, #如果客户端过多可以启用来提高带机量。 #skip_inactivity_poll=0 # 对于过度的传输失败或其他连接丢失的情况下,断开连接,这并不适合所有设备 #disassoc_low_ack=1 # 最大允许侦听间隔,默认65535,即不限制 (how many Beacon periods STAs are allowed to remain asleep) #max_listen_interval=100 # WDS(4-address frame)模式,仅在 driver=nl80211 的情况下支持 #wds_sta=1 # 仅在设置了bridge= 时有效,默认情况下,例如当设置了bridge=br0,那么wds_bridge=br0。 # 当然也可以手动指定为wds_bridge=XXXXX。 #wds_bridge=wds-br0 # Start the AP with beaconing disabled by default.没明白是什么意思。 #start_disabled=0 # AP隔离,1启用,0禁用。默认不隔离。 #ap_isolate=1 #bss_load_update_period=50 # 用于测试的 #bss_load_test=12:80:20000 ##### IEEE 802.11n related configuration ###################################### # 启用80211n,你也将需要启用WMM来使用全部HT功能。 ieee80211n=1 # [HT40-]或[HT40+]没有设置的话将只工作在20MHz, # [HT40-]对应可使用的频道为5-13 # [HT40+]对应可使用的频道为1-7(欧洲标准为1-9) # 当多径效应不是很严重时,用户可以将该间隔配置为[SHORT-GI-20][SHORT-GI-40] # 个人理解,如果不上天馈系统的话可以启用[SHORT-GI-20][SHORT-GI-40],前提是硬件支持。 #ht_capab=[LDPC][HT40-][HT40+][SHORT-GI-20][SHORT-GI-40][SMPS-DYNAMIC][GF][TX-STBC][RX-STBC123][DELAYED-BA][MAX-AMSDU-7935][DSSS_CCK-40][40-INTOLERANT][LSIG-TXOP-PROT] # intel Wireless-N 105 (rev c4) 网卡支持的选项 ht_capab=[HT40-][SHORT-GI-20][SHORT-GI-40][DSSS_CCK-40][40-INTOLERANT][GF] # Atheros AR9271 网卡支持的选项 #ht_capab=[HT40-][SHORT-GI-20][SHORT-GI-40][DSSS_CCK-40][40-INTOLERANT][RX-STBC1] #ht_capab=[HT40-][SHORT-GI-20][SHORT-GI-40][DSSS_CCK-40] #ht_capab=[HT40-][SHORT-GI-20][SHORT-GI-40] #ht_capab=[HT40+][DSSS_CCK-40][40-INTOLERANT] # 强制要求客户端使用HT PHY,不使用就拒绝。 #require_ht=0 # 间隔时间(秒) #obss_interval=5 ##### WPA/IEEE 802.11i configuration ########################################## # 1 wpa,2 wpa2, 3 两者。 新的设备可以设置为2,仅使用wpa2版本。 wpa=2 # 指定密码,ASCII码或密码字符。 #wpa_psk=0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef #密码设置 wpa_passphrase=12345678 # 使用密码文件,可以跟客户端MAC地址绑定设置不同的密码,比较实用。 wpa_psk_file=/etc/hostapd/hostapd.wpa_psk # 是否使用验证服务器,0 禁用(默认),1 可用,2 强制使用(其他方式将拒绝) #wpa_psk_radius=0 # 设置密钥管理算法WPA-PSK WPA-EAP或两者 wpa_key_mgmt=WPA-PSK # 设置加密算法,CCMP就是AES,不推荐使用TKIP,除非设备不支持。 wpa_pairwise=CCMP # 默认情况下rsn_pairwise自动设置为wpa_pairwise的值,当然也可以手动指定。 #rsn_pairwise=CCMP #wpa_group_rekey=600 #wpa_strict_rekey=1 #wpa_gmk_rekey=86400 #wpa_ptk_rekey=600 # 预认证 #rsn_preauth=1 #rsn_preauth_interfaces=wlp2s0 br0 enp3s0 #peerkey=1 # 80211w支持,0 禁用(默认),1 可选,2 强制使用(其他方式将拒绝) 有些网卡不支持 #ieee80211w=1 # AES-128-CMAC(默认) BIP-GMAC-128 BIP-GMAC-256 BIP-CMAC-256 四种 # 一般通用设备都支持AES-128-CMAC,其他的不一定 #group_mgmt_cipher=AES-128-CMAC #assoc_sa_query_max_timeout=1000 #assoc_sa_query_retry_timeout=201 #disable_pmksa_caching=0 #okc=1 #sae_anti_clogging_threshold=5 #sae_groups=19 20 21 25 26 ##### IEEE 802.11r configuration ############################################## # Wi-Fi无线漫游标准 #mobility_domain=a1b2 #r0_key_lifetime=10000 #r1_key_holder=000102030405 #reassociation_deadline=1000 #pmk_r1_push=1 ##### Neighbor table ########################################################## #ap_table_max_size=255 #ap_table_expiration_time=3600 ##### IEEE 802.11v-2011 ####################################################### # Wi-Fi节能版 #time_advertisement=2 #time_zone=CST8 # 下面三项有些网卡不支持 #wnm_sleep_mode=1 #bss_transition=1 #proxy_arp=1为了便于使用,将注释去除 (所用协议较老,请参照最新版) interface=wlan0 driver=nl80211 #修改名字 ssid=AP-Pi4 utf8_ssid=1 hw_mode=g channel=7 ieee80211n=1 macaddr_acl=0 auth_algs=1 wmm_enabled=0 wpa=2 #密码设置 wpa_passphrase=12345678 wpa_key_mgmt=WPA-PSK wpa_pairwise=CCMP ssid: WiFi 名称,8~64 个字符,最好用英文字母,不要出现特殊字符 hw_mode: WiFi 网络模式,一般填 g 即可,设备支持的话可以填 a 启用 5G 频段: a = IEEE 802.11a (5 GHz) b = IEEE 802.11b (2.4 GHz) g = IEEE 802.11g (2.4 GHz) channel: 信道编号。如果上面配置了 hw_mode=g 使用 2.4G 频段,则一般填 7 即可。如果配置了 5G 频段,则信道编号有所不同,具体参考:无线局域网信道列表 - 维基百科,自由的百科全书 (wikipedia.org) wpa_passphrase: WiFi 密码,最好用英文加数字,不要出现特殊字符 最新版配置文件 interface=wlan0 driver=nl80211 ssid=AP-Pi4 hw_mode=a channel=0 ieee80211n=1 ieee80211ac=1 ieee80211ax=1 ieee80211d=1 ieee80211h=1 country_code=CN auth_algs=1 wpa=2 wpa_passphrase=123456789 wpa_key_mgmt=WPA-PSK WPA-PSK-SHA256 rsn_pairwise=CCMP macaddr_acl=0 wmm_enabled=1 wmm_ac_bk_cwmin=4 wmm_ac_bk_cwmax=10 wmm_ac_bk_aifs=7 wmm_ac_bk_txop_limit=0 wmm_ac_bk_acm=0 wmm_ac_be_aifs=3 wmm_ac_be_cwmin=4 wmm_ac_be_cwmax=10 wmm_ac_be_txop_limit=0 wmm_ac_be_acm=0 wmm_ac_vi_aifs=2 wmm_ac_vi_cwmin=3 wmm_ac_vi_cwmax=4 wmm_ac_vi_txop_limit=94 wmm_ac_vi_acm=0 wmm_ac_vo_aifs=2 wmm_ac_vo_cwmin=2 wmm_ac_vo_cwmax=3 wmm_ac_vo_txop_limit=47 wmm_ac_vo_acm=0 he_su_beamformer=1 he_su_beamformee=1 he_mu_beamformer=1 he_bss_color=5 he_default_pe_duration=0 he_basic_mcs_nss_set=2 he_oper_centr_freq_seg0_idx=0 require_ht=1 he_su_beamformee=1 he_su_beamformer=1 he_bss_color=3 he_twt_required=1 vht_capab=[SHORT-GI-80][RX-STBC1][TX-STBC][SU-BEAMFORMER][SU-BEAMFORMEE]编辑/etc/default/hostapd文件,将DAEMON_CONF前面的注释去掉,并加上/etc/hostapd/hostapd.conf image-20220208150739117图片 $sudo vim /etc/default/hostapd DAEMON_CONF="/etc/hostapd/hostapd.conf"保存退出后启动hostapd $sudo systemctl unmask hostapd $sudo systemctl enable hostapd $sudo systemctl start hostapdimage-20220208153101418图片 可以看到热点已经开启成功,但是还没有分配IP不能上网。 配置wlan0静态IP 让wlan0的IP地址设置成静态的,然后在通过DHCP同态的去给连接设备分配IP $sudo apt install dhcpcd $sudo vim /etc/dhcpcd.conf在文件最后添加 interface wlan0 static ip_address=192.168.4.1/24 nohook wpa_supplicant保存退出,重启dhcpcd服务: $sudo systemctl restart dhcpcd查看wlan0的IP地址:ifconfig ,可以发现,wlan0的IP已经改变为之前设置的地址 image-20220209160315594图片 安装并配置dnsmasq服务 Dnsmasq 提供 DNS 缓存和 DHCP 服务功能。作为域名解析服务器(DNS),dnsmasq可以通过缓存 DNS 请求来提高对访问过的网址的连接速度。作为DHCP 服务器,dnsmasq 可以用于为局域网电脑分配内网ip地址和提供路由。DNS和DHCP两个功能可以同时或分别单独实现。dnsmasq轻量且易配置,适用于个人用户或少于50台主机的网络。此外它还自带了一个 PXE 服务器。 安装dnsmasq服务 $ sudo apt install dnsmasq $ sudo systemctl stop dnsmasq配置dnsmasq 编辑/etc/dnsmasq.conf文件,将里面的内容删除或者注释掉。 sudo vim /etc/dnsmasq.conf #添加新内容 interface=wlan0 dhcp-range=192.168.4.2,192.168.4.20,255.255.255.0,24h #dhcp 服务会给客户端分配 192.168.4.2 到 192.168.4.20 的 IP 空间,并设置24 小时租期。 #重启dnsmasq服务 $sudo systemctl restart dnsmasq配置完后连接到热点已经自动分配到了一个IP地址,但是还不能上网 image-20220209162149776图片 配置IP转发 编辑 /etc/sysctl.conf 系统配置文件,将 net.ipv4.ip_forward=1 前面的注释去掉。 $sudo vim /etc/sysctl.conf #net.ipv4.ip_forward=1 #将前面的 # 号删除image-20220209162842756图片 修改防火墙规则 安装iptables apt install iptables$sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE $sudo iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT $sudo iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT ##若要通过热点建立NAS开启以下防火墙规则 #sudo iptables -A INPUT -p tcp --dport 139 -j ACCEPT #sudo iptables -A OUTPUT -p tcp --sport 139 -j ACCEPT #sudo iptables -A INPUT -p tcp --dport 445 -j ACCEPT #sudo iptables -A OUTPUT -p tcp --sport 445 -j ACCEPT 为了避免每次重启后都要重新配置,将防火墙规则写入开机启动项 将防火墙规则写入文件 $sudo sh -c "iptables-save > /etc/iptables.ipv4.nat"编辑/etc/rc.local,将iptables-restore < /etc/iptables.ipv4.nat加到exit 0前面。 $sudo vim /etc/rc.local #加在exit 0前面 iptables-restore < /etc/iptables.ipv4.nat 若执行后出现:sh: 1: iptables-save: not found 要先安装iptables $sudo apt install iptablesimage-20220209163455762图片 保存退出后重启树莓派:sudo reboot。 网络测试 经过一段时间的测试,能够正常访问互联网,网速也还可以,但是在流量较大时会间歇性断开连接,上传速率也有些异常,目前还不清楚是什么原因造成。(已解决) image-20220209185439101图片 常见问题修复 网络慢问题分析及解决办法 {% link 树莓派开启个人热点(二)解决网速慢问题,Mstzf,https://blog.teohzy.com/post/startAP2/index.html %} 设置hostapd开机自启失败解决办法 可能原因:NetworkManager占用wlan0导致启动失败 解决办法:禁用 NetworkManager 控制 wlan0 创建一个 NetworkManager 的配置文件 sudo nano /etc/NetworkManager/conf.d/no-wlan0.conf 编辑配置文件 [keyfile] unmanaged-devices=interface-name:wlan0 重启NetworkManager sudo systemctl restart NetworkManager -
Windows环境下安装gcc编译器 原因 在使用VSCode时,我们可以比较方便的编写C语言的代码,但是VSCode并没有自带编译器,这时候我们就需要去安装其他的编译器来对写好的代码进行编译。在Windows上安装gcc编译器并不像Linux中那样方便快捷。 安装MinGW 进入mingw官网下载安装程序 https://sourceforge.net/projects/mingw-w64/files/mingw-w64/mingw-w64-release/ 打开后可以看到如下界面 image-20220403172249018图片 往下滑 image-20220403172828690图片 安装软件 如果选择了在线安装要选择对应架构 MinGW选择参数图片 Version(版本号):一般默认就行 Architecture(架构):64位系统选择x86_64,32位系统选择i686 Threads(设置线程标准):可选posix或win32; Exception(异常处理系统):x86_64可选为seh和sjlj,i686为dwarf和sjlj; Build revision(构建版本号):默认就行 下一步,安装路径最好自己设置,便于添加环境变量 如果下载的是压缩包文件,则只需要将文件解压缩到自己想要的GCC安装目录下即可 设置环境变量 “此电脑->属性->高级系统设置->环境变量” 在系统变量的Path中新加入GCC的安装路径到/bin结束 MinGW环境变量图片 Win+R输入CMD调出Windows终端,输入“gcc -v” GCC安装完成检验图片 如果出现以下界面,说明gcc已经安装成功 -
树莓派开机自动发送邮件 在平时使用树莓派的过程中,大多数人的习惯都是直接使用终端去连接树莓派,很少使用屏幕去直接操作;而在连接终端的时候又必须要知道树莓派的IP地址;这时候如果树莓派能够通过邮件的方式直接将自己的IP地址直接发送给我们,在连接时就会省去很多不必要的麻烦。 安装软件 安装mutt:$sudo apt-get install mutt 安装msmtp:$sudo apt-get install msmtp 设置软件 设置mutt 编辑/etc/Muttrc 系统全局设置 编辑~/.muttrc 为某个系统用户设置 这里对全局进行设置 $sudo vim /etc/Muttrc 在文件最后面添加如下代码 set sendmail="/usr/bin/msmtp" set use_from=yes set realname="Raspberry" #邮箱发送人昵称 set from=xxxxx@xxx.com #自己的发件箱邮箱地址 set envelope_from=yes set crypt_use_gpgme=no 登录邮箱,进入邮箱设置界面,开启邮箱的IMAP/SMTP服务 下图为163邮箱 NHVGLK3YN1G68YJBOYT图片 设置msmtp 创建 ~/.msmtprc 和 ~/.msmtp.log 两个文件分别作为msmtp的配置文件和日志文件 编辑.msmtprc vim ~/.msmtprc account default host smtp.163.com #自己邮箱的smtp地址,我的是163邮箱,所以是这个 from mstz1130@163.com #自己的邮箱地址 auth plain user mstz1130 #自己的邮箱用户名,就是@前的 password xxxxxxxx #这个并不是邮箱密码,是邮箱授权码 logfile ~/.msmtp.log #日志文件地址由于password是明码,所以我们要修改文件的权限 $sudo chmod 600 .msmtprc 163邮箱授权码的开启位置,其他邮箱的具体位置请自行查询。 2FUYGZLJWT4DM@RES图片 测试邮件发送 $ echo "正文" | mutt -s ”主题“ xxx@xx.com -q 附件 获取IP地址脚本 可以在任意可执行位置创建 $vim sendip.sh #!/bin/bash # check network availability SITE_TO_CHECK="www.163.com" while true do TIMEOUT=5 RET_CODE=`ping -s 1 -c 1 $SITE_TO_CHECK` if [ "$?" != "0" ] then echo "Network not ready, wait..." sleep 1s else echo "Network OK, will send mail..." break fi done # get the IP address of eth0, e.g. "192.168.x.x" WLAN0_IP_ADDR=`ifconfig wlan0 | sed -n "2,2p" | awk '{print substr($2,1)}'` ETH0_IP_ADDR=`ifconfig eth0 | sed -n "2,2p" | awk '{print substr($2,1)}'` ETH1_IP_ADDR=`ifconfig eth1 | sed -n "2,2p" | awk '{print substr($2,1)}'` ETH2_IP_ADDR=`ifconfig eth2 | sed -n "2,2p" | awk '{print substr($2,1)}'` # send the Email echo "Current time: `date '+%F %T'` WLAN0 IP Address of Raspberry Pi: $WLAN0_IP_ADDR ETH0 IP Address of Raspberry Pi: $ETH0_IP_ADDR IP address loading completed ! ! !" | mutt -s "IP Address of Raspberry Pi" xxx@xxx.com写入开机启动项 $sudo vim /etc/rc.local 在exit 0之前加入以下命令 su pi -c /home/pi/sh/sentIP.sh &具体路径由自己创建的脚本地址位置来决定,&表示并发执行,在脚本运行时不影响其他脚本