yanhy的学习记录匣 - Linux https://www.yanhy.top/index.php/tag/Linux/ 群晖硬盘阵列Raid1降级拆分硬盘 https://www.yanhy.top/index.php/archives/359/ 2024-06-22T13:06:00+08:00 一开始组nas时买了一块全新4TB和二手4TB,刚入坑nas那会各种数据安全焦虑,所以组了Raid1软阵列。现在想拆分,可要麻烦不少,记录一下~本文部分内容来源于 什么值得买:每天一个群晖小tip 篇三十四:五步操作将群晖RAID1阵列降级为Basic模式破坏阵列首先要拔掉一块硬盘,破坏Raid1的阵列,群晖会提示存储池降级,并有个“堪用”警示。登陆SSH1、使用ssh登陆群晖并获取root账户;sudo -i2、输入命令,查看当前分区;cat /proc/mdstat3、根据数字大小确认需要处理的分区状态,由于我的硬盘为4TB大小,根据容量大概可以确认这里为md2分区,然后执行下列命令;mdadm --grow --raid-devices=1 --force /dev/md2出现 raid_disks for /dev/*** set to 1 即为降级成功命令解析; mdadm:这是一个用于管理软件 RAID 阵列的 Linux 实用程序。 --grow:这个选项用于修改现有的 RAID 阵列,比如更改设备数量、布局或其他属性。 --raid-devices=1:这个选项指定 RAID 阵列应该具有的新设备数量。在当前情况下,将其设置为 1,这实际上意味着将 RAID 阵列缩小为单个设备,即降级为Basic模式。 --force:这个选项用于强制应用更改,即使这些更改可能是危险的或不受支持的。使用 --force 应该非常小心,因为它可能导致数据丢失或损坏。 /dev/md5:这是尝试修改的 RAID 设备的路径。md5 通常指的是系统中的第五个软件 RAID 阵列。 md0/1 通常为群晖的系统分区。建立存储池回到群晖DSM后,无需刷新网页即可看到阵列类型变成了Basic,并且状态为良好操作完成后,记得关闭SSH确保网络安全。插回刚刚的硬盘,重新初始化并创建存储池、存储空间即可使用。 随身wifi折腾入门(番外)-- openwrt优化使用 https://www.yanhy.top/index.php/archives/338/ 2023-04-19T18:18:00+08:00 本篇与debian同,随缘更新,记录实用操作使用环境使用esim卡使用@苏苏小亮亮的openwrt 2022-06-05 包棒子板号:001B 512MB+4GB使用电脑usb连接,wifi作为调试刷入系统系统发布页面:https://www.kancloud.cn/a813630449/ufi_car/2792820刷入方式可见棒子第三章,进入fastboot后,执行压缩包内的fastboot.bat,多次回车刷入即可成功如果进不去fastboot,可在9008模式格式化boot分区,再次上电自动进入fastboot优化使用由于openwrt的无线驱动尚未解决,因此连接热点网速会很慢,目前没有好的解决方法,因此本文主要满足通过usb供网,并分享ipv6地址,热点仅作为管理端。更换modem使用sftp连接openwrt,然后将之前系统备份的 NON-HLOS.bin 文件解压或者通过镜像软件打开,将里面全部文件提取出来,再上传到 /root 目录中(可直接通过ssh远程软件自带的文件管理器上传,原理相同)上传完成后,执行指令,将文件移动到 /lib/firmware 内mv ./IMAGE/* /lib/firmware/切换esim卡正常来说,这个版本的openwrt是可以直接读取外卡槽的,如果想使用esim卡,则需要手动切换。因为有些软件包和debian系统不一样,但原理相差不多,所以修改部分指令并直接扔到 rc.local 内依旧是可以使用的。打开网页管理,进入 系统-启动项-本地启动脚本 ,加入一行在原有的指令之前:echo 255 > /sys/class/leds/sim\:sel/brightness重启系统,在ssh输入 mmcli -m 0 即可查看esim连接状态,此时会显示disable再执行指令:mmcli -m 0 -e即可启用sim卡此时openwrt即可使用sim卡上网,重启之后仍然正常联网 增加虚拟内存棒子本身内存只有0.5GB,且openwrt很多服务会运行比debian多且频繁,通过虚拟内存可以增加一定的稳定性。这里由于棒子存储只有4GB,装完openwrt后仅剩余2.7GB,且重点不在于跑docker等服务,因此创建800MB的虚拟内存即可够用。在 ssh 控制台输入指令创建个分区文件:dd if=/dev/zero of=/usr/swap bs=1M count=800输入指令查看创建的分区大小是否为800MB:du -sh /usr/swap将分区文件设置为swap分区文件,并启用分区:mkswap /usr/swap swapon /usr/swap设置开机自动挂载swap分区,一键指令(如果已经添加了挂载其他分区请勿使用该指令,会覆盖全部内容):echo /usr/swap swap swap defaults 0 0 > /etc/fstab也可以手动在文件 vi /etc/fstab 最后一行添加: /usr/swap swap swap defaults 0 0在openwrt网页端 系统-启动项-本地启动脚本,最后一行添加:swapon /usr/swap保存并执行重启后,输入 free -m 指令即可看到swap分区添加成功。如果磁盘不够用等原因想卸载swap分区,可执行指令:swapoff /usr/swap rm /usr/swap在 /etc/fstab 内删除前面添加的那一行内容,并删除openwrt网页端 系统-启动项-本地启动脚本 内的前面添加的指令,即可完成卸载swap。目前先到这里,剩下的随缘更新...资料参考开启swap分区 debian优化使用 随身wifi折腾入门(番外)-- debian优化使用 https://www.yanhy.top/index.php/archives/336/ 2023-04-18T12:33:00+08:00 注意:ipv6部分未完篇,但方法可行,如有建议可评论区留言,后面随缘更新... 本来这篇文章是为了ipv6热点而写的教程,后面发现方法很多但是争议也多,因此干脆作为日常使用及优化的记录篇,在本篇可以看到使用sim卡、切卡、网桥、led控制、更改usb模式等多个玩法,可按需学习使用...环境与工具本文使用 酷安@jsbsbxjxh66 大佬的ufi001b-debian超频版1.2Ghz Debian进行修改使用esim卡环境(如使用实体卡可跳过切esim卡步骤)使用电脑进行连接(需打开cmd进行adb操作,以及ssh工具)制作网桥本节修改内容:网关:192.168.2.1选卡:esim网桥:br0新建网桥br0先使用 adb shell 删除全部的连接,如 nmcli c del wifi usb使用ssh或者adb shell连接后,使用指令新建个网桥,并新建两个从机,为usb与wifi,执行指令:nmcli c add type bridge ifname br0 con-name br0 ipv4.method manual ipv4.addresses 192.168.2.1/24 ipv4.gateway '' ipv4.dns '223.5.5.5' nmcli c add type ethernet ifname usb0 con-name usb-share nmcli c add type bridge-slave ifname usb-share con-name usb-share master br0修改默认网关修改 /etc/dnsmasq.conf 最后两行listen-address=192.168.2.1 dhcp-range=192.168.2.10,192.168.2.254,12h执行重启 adb reboot ,重启后再次输入 adb shell 进入终端,此时usb是无IPV4分配的,执行指令systemctl enable dnsmasq.service systemctl start dnsmasq.service再次重启后,即可分配到usb的ipv4,可以通过ssh连接添加wifi网络通过ssh连接debian后,执行 nmtui ,选择 编辑连接 ,选择网桥br0点进去,手动添加一个wifi连接。 常用修正接下来的内容按需采取,ipv6部分存在争议,可自行尝试替换 HT40 驱动(可选)将驱动文件上传到root目录,执行指令覆盖原驱动即可mv wcn36xx.ko /lib/modules/5.15.0-handsomekernel+/kernel/drivers/net/wireless/ath/wcn36xx/替换基带文件使用sftp连接至debian,将之前全分区备份中的 NON-HLOS.bin 文件使用7z打开或者软碟通打开,将里面的IMAGE拖出来,并通过sftp上传到debina root目录执行指令,替换 /lib/firmware 内的驱动文件mv IMAGE/* /lib/firmware/切换esim卡sim:sel 为esim卡的位置,如果要切换到sim卡槽,一般为 sim:sel2 ,可以用指令看一下列表内是否有sim:sel2ls /sys/class/leds/如果没有 sim:sel2 则默认外置卡槽,可按需切换esim输入指令 mmcli -m 0 ,如果显示有内容但显示 sim-missing ,此时则为卡槽模式,可插入自己的卡。切换esim卡可直接修改 /etc/rc.local 文件,使开机自动修改!/bin/sh -e echo 255 > /sys/class/leds/sim\:sel/brightness modprobe -r qcom-q6v5-mss sleep 1 modprobe qcom-q6v5-mss sleep 1 systemctl restart rmtfs sleep 1 systemctl restart ModemManager exit 保存后输入 reboot 重启系统,重启后输入 mmcli -m 0 ,如出现 state: connected 即为连接正常。同时在重启后检查wifi是否以及开启,执行 nmcli 后是否出现modem连接信息,如果出现连接ip等信息即为一切顺利(如下图)。如果前面不顺利,后面设置ipv6转发会出问题。重启sim卡如果出现输入 mmcli -m 0 后,显示卡未连接disconnect或者未发现卡,可以使用sim卡重启大法尝试一下。如果多次出现,可以试试看加入到开机启动脚本中 rc.local(自行添加sleep 1延时)systemctl stop ModemManagerqmicli -d /dev/wwan0qmi0 --uim-sim-power-off=1qmicli -d /dev/wwan0qmi0 --uim-sim-power-on=1systemctl start ModemManager查看emmc芯片寿命棒子debian系统可通过执行指令查看emmc寿命,数值仅参考,也有部分型号查看为0x00的,为芯片未定义,0x01为最佳寿命,同理数值越大寿命越低,该值仅供参考cat /sys/class/mmc_host/mmc0/mmc0\:0001/life_time切换为USB模式执行指令可断开棒子usb共享,更改为host主机模式,可用于棒子专用拓展坞使用echo host > /sys/kernel/debug/usb/ci_hdrc.0/role相反的,也可以切换回网络共享模式echo gadget > /sys/kernel/debug/usb/ci_hdrc.0/role快速开启一个wifi如果棒子无wifi或者误删,可以用这个指令在adb shell内快速创建一个wifi热点,名字为4G-wifi,密码为123456789nmcli d wifi hotspot ifname wlan0 con-name wifi ssid 4G-wifi band bg channel 11 password 123456789关闭全部led指示灯如果觉得led灯太闪(没壳的会显得很亮),可以执行指令关闭led,同时可以放rc.local开机启动自动关闭led灯echo none > /sys/class/leds/red\:os/triggerecho none > /sys/class/leds/blue\:wifi/triggerecho none > /sys/class/leds/green\:internet/triggerAP启用ipv6共享(待补充)输入指令启用ipv6转发,执行过程中可能会掉线ssh,建议在 adb shell 内执行echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf echo "net.ipv6.conf.all.forwarding=1" >> /etc/sysctl.conf echo "net.ipv6.conf.all.proxy_ndp=1" >> /etc/sysctl.conf echo "net.ipv6.conf.all.accept_ra=2" >> /etc/sysctl.conf sysctl -p nmcli connection up br0 systemctl restart dnsmasq.service nmcli connection up usb安装依赖apt install radvd ndppd dhcpcd5编写配置文件br0为要监听的网络/etc/radvd.conf.demointerface br0 { AdvSendAdvert on; MinRtrAdvInterval 3; MaxRtrAdvInterval 10; AdvManagedFlag off; AdvOtherConfigFlag off; prefix REPLACEIPV6 { AdvOnLink on; AdvAutonomous on; AdvRouterAddr off; }; };/etc/ndppd.conf.demoroute-ttl 30000 proxy wlan0 { router yes timeout 500 rule REPLACEIPV6 { auto } }/etc/dhcpcd.confinterface br0 ipv6 ipv6rs ipv6ra_other_information启动服务systemctl restart radvd systemctl restart ndppd systemctl restart dhcpcd理论上v6部分就结束了,但是试过不同设备有几率并不能分发地址,还存在争议,也可以参考这位大佬的文章开启v6共享:https://zyyme.com/msm8916-wifi.html本篇暂时完结,不研究debian了,后续随缘更新... 随身wifi折腾入门(3)-- 简单控制GPIO https://www.yanhy.top/index.php/archives/334/ 2023-04-11T17:12:00+08:00 本章节待慢慢补充... linux下的GPIO一般可以在/sys/kernel/debug/gpio下查询到信息,但是由于棒子的PCB没有开源,无法得知目前那些GPIO可以使用。但是通过表面可知,至少有3颗LED、2路SIM卡控制端口可用,且板载Uart串口调试点,因此,如果能对其中几个IO进行操作,通过IIC协议,即可可以控制多路外设,成为真正的硬件开发板...控制LED行为从最简单的开始,控制一颗LED的亮灭。刷了Debian系统后,板子上只有红色、蓝色灯为启用状态,而绿色灯为None状态。因此,我们可以先拿没用的绿色LED下手。了解LED控制方法查询目前棒子上已知的GPIO引用:ls /sys/class/leds/查询后可得:蓝色LED默认分配为WIFI状态绿色LED默认分配为网络状态红色LED默认为系统运行指示灯SIM:EN为SIM卡启用状态,该焊盘位于ESIM底座GND处,预测SIM1同理SIM:SEL为SIM选择状态,物理位置目前未测量进入green的目录内,可看到以下几个文件:主要文件为brightness、max_brightness、trigger,这三个文件即为LED引脚的属性brightness:可读可写; 所以这个属性文件是用于设置 LED的亮度等级或者获取当前 LED 的亮度等级。max_brightness: 该属性文件只能被读取,不能写,用于获取 LED 设备的最大亮度等级。trigger: 触发模式,该属性文件可读可写,通过 cat 命令查看该属性文件触发模式其中,trigger 内有以下的模式:这里中括号选中为none,即为禁用。常见模式有:timer:使用系统定时器控制,可用于作为伪PWM控制,定时闪烁等功能heartbeat:心跳模式,可用于作为监控系统运行状态,定时有规律的闪烁default-on:默认开启模式,此模式会使LED常亮,可用于寻找板载物理位置使用mmc:读写存储器(emmc)的时候会闪烁phy0tx(rx):接收(发送)wifi数据时会闪烁尝试控制LED行为模式使用echo的方式写入该文件即可控制LED的状态,如这里使它运行为心跳包闪烁模式:echo heartbeat > /sys/class/leds/green\:internet/trigger同理,如果写入 none 则为禁用led灯,指令如下:echo none > /sys/class/leds/green\:internet/trigger也可以设置led为wifi状态指示灯:echo phy0radio > /sys/class/leds/green\:internet/trigger仅需执行指令,即可控制led状态,重启后恢复原始模式,可写入rc.local让其每次开机都设置为该模式。制作温控PWM风扇可以将其设置为 timer 定时器模式,通过手动调整延时开与延时关的方式模拟PWM占空比:echo timer > /sys/class/leds/green\:internet/trigger echo 90 > /sys/class/leds/green\:internet/delay_off echo 10 > /sys/class/leds/green\:internet/delay_on同理,可以使用绿色LED的IO用来控制风扇,实现温控风扇。以下代码为即兴发挥,可自行测试,将风扇连接至绿色LED引脚上,或者更改 GPIO_PIN 值为其他IO引脚;可以自行更改 pwm_v 的值,以1000为满值,分4个档位。代码仅供测试,如果有问题可评论区留言。#python 3 import time import os pwm_v = [300,500,700,900] #档位速度设置,满值为1000 GPIO_PIN = "green\:internet" #IO引脚设置 print("开始初始化GPIO...") os.system(f"echo timer > /sys/class/leds/{GPIO_PIN}/trigger") while True: time.sleep(1) try: temp_file=open("/sys/class/thermal/thermal_zone0/temp",'r') temp = int(int(temp_file.read())/1000) temp_file.close() print(f"当前温度为:{temp}") except OSError as e: print(f"打开文件出错:{str(e)}") if temp <25: print(f"温度在(0,25)区间内,关闭风扇,PWM占空比0%") os.system(f"echo 0 > /sys/class/leds/green\:internet/delay_on") os.system(f"echo 1000 > /sys/class/leds/green\:internet/delay_off") if temp >= 25 and temp <35: print(f"温度在[25,35)区间内,开启第一档,高电平时间{pwm_v[0]},低电平时间{1000-pwm_v[0]},PWM占空比{pwm_v[0]/1000*100}%") os.system(f"echo {pwm_v[0]} > /sys/class/leds/green\:internet/delay_on") os.system(f"echo {1000-pwm_v[0]} > /sys/class/leds/green\:internet/delay_off") if temp >= 35 and temp <45: print(f"温度在[35,45)区间内,开启第二档,高电平时间{pwm_v[1]},低电平时间{1000-pwm_v[1]},PWM占空比{pwm_v[1]/1000*100}%") os.system(f"echo {pwm_v[1]} > /sys/class/leds/green\:internet/delay_on") os.system(f"echo {1000-pwm_v[1]} > /sys/class/leds/green\:internet/delay_off") if temp >= 45 and temp <55: print(f"温度在[45,55)区间内,开启第三档,高电平时间{pwm_v[2]},低电平时间{1000-pwm_v[2]},PWM占空比{pwm_v[2]/1000*100}%") os.system(f"echo {pwm_v[2]} > /sys/class/leds/green\:internet/delay_on") os.system(f"echo {1000-pwm_v[2]} > /sys/class/leds/green\:internet/delay_off") if temp >= 55 and temp <65: print(f"温度在[55,65)区间内,开启第四档,高电平时间{pwm_v[3]},低电平时间{1000-pwm_v[3]},PWM占空比{pwm_v[3]/1000*100}%") os.system(f"echo {pwm_v[3]} > /sys/class/leds/green\:internet/delay_on") os.system(f"echo {1000-pwm_v[3]} > /sys/class/leds/green\:internet/delay_off") if temp >= 65: print(f"温度大于65摄氏度,开启最大功率,PWM占空比100%") os.system(f"echo 1000 > /sys/class/leds/green\:internet/delay_on") os.system(f"echo 0 > /sys/class/leds/green\:internet/delay_off") 除了简单的控制LED的行为以及模拟PWM,这几个引出的IO或许还可以更改输出输入模式,待本文后续更新继续探索...参考文章https://github.com/Yushi-Xing/openstick_fan/blob/main/main.cpphttps://gitee.com/anhui1995/ufi_auto-fan/blob/master/autofan.chttps://blog.csdn.net/qq_26226907/article/details/128027533https://www.kancloud.cn/handsomehacker/openstick/2637560 Debian10系统下LNMP三件套安装与配置——Nginx与初始环境篇 https://www.yanhy.top/index.php/archives/231/ 2022-05-22T04:37:00+08:00 近期需要搭建个简易的小型网站,原想着用服务器面板解决,但是网站程序要求苛刻(如使用PHP函数、安装模块、资源性能分配等),环视了一圈服务器面板也没有找到中意的,不是限制太多就是自身占用过大,因此决定自己搭建配置LNMP三件套来部署网站程序,以达到最佳性能与最小损耗...预备LNMP是一种用于配置网站前端程序的运行环境组合。‘L’指Linux系统环境,‘N’指Nginx,‘M’指MySQL或者MariaDB数据库,‘P’指PHP程序。类似的环境组合还有LAMP,该包使用Apache作为网页服务器驱动程序,与Nginx相比占用较大但是相对稳定,但是近年来搭建小型网站项目依然是Nginx更加流行。此处我预备的环境版本为:Linux = Debian 10.2 64bit Nginx = 稳定版1.20.2 MySQL = 8.0.29 PHP = 8.1/7.4 服务器使用腾讯云的香港区域服务器,配置为2C2G,搭建小型网站性能足够使用LNMP环境包之‘L’——Linux服务器使用腾讯云提供的纯净Debian 10.2镜像,无预装其他环境进入系统后先更新软件包:apt update apt upgrade由于腾讯云的服务器都是预置好软件源的,因此购买大厂的机器后一般无需手动换源即可开箱即用LNMP环境包之‘N’——Nginx本文使用的Nginx版本官网下载链接(适用于Debian buster系统): nginx_1.20.2-1~buster_amd64.debCentOS 8系统Nginx下载链接: nginx-1.20.2-1.el8.ngx.x86_64.rpm其他系统或者版本下载链接可见列表: http://nginx.org/packages/安装步骤通过SSH连接至服务器,并获取root权限:su下载Nginx 1.20.2软件安装包(下载链接可根据自己的系统环境从上方列表查找),本文以Debian 10.2为例:wget http://nginx.org/packages/debian/pool/nginx/n/nginx/nginx_1.20.2-1~buster_amd64.deb安装Nginx软件包:dpkg -i nginx_1.20.2-1~buster_amd64.deb安装完成后查看版本:nginx -v如果显示为nginx version: nginx/1.20.2即为安装成功,删除软件包即可初始化配置Nginx的配置文件一般存放于/etc/nginx/conf.d/文件夹内,编辑里面的文件即可默认网站配置文件名为default.conf,使用nano编辑器进行初始配置:nano /etc/nginx/conf.d/default.conf文件内容有这几处需要修改:在"location"项的index内需要添加 index.php ,root项内的路径可指定好也可保持默认,后面配置网页时可再修改。如图所示:找到"location ~ .php$"项,将其与大括号内的内容注释取消掉,并修改:root项指定好网站根目录修改 fastcgi_pass 项为 unix:/run/php-fpm/www.sock;,Nginx 通过 UNIX 套接字与 PHP-FPM 建立联系,该配置与 /etc/php-fpm.d/www.conf 文件内的 listen 配置一致。将 fastcgi_param SCRIPT_FILENAME 后的 /scripts$fastcgi_script_name; 替换为 $document_root$fastcgi_script_name;。修改完成后如下图所示:按Ctrl+O写入文件,Ctrl+X退出编辑最后将Nginx配置为开机启动即可:systemctl start nginx systemctl enable nginx验证配置本文修改后的配置文件如图:由于测试所用的为一个静态页面,因此只需要指定根目录与域名即可。另存为test.conf,重启Nginx,检查无报错后所用浏览器访问域名,网页加载正常,说明Nginx配置验证成功。拓展:多网站配置如果要配置多个网站,只需要在域名服务商多解析几个到服务器IP的域名,然后将/etc/nginx/conf.d/default.conf文件重复拷贝作为模板使用,每次修改完配置文件,需要重新启动Nginx服务使其生效,同时要确保Nginx没有报错。在配置文件时,只需要使location项内的root所指定的网站根目录不相同、server_name所指定的域名不相同,即可通过不同域名访问到不同站点根目录的index文件。反代、伪静态本文暂且不提及。 Linux轻量云服务器云硬盘搭建网盘(上) https://www.yanhy.top/index.php/archives/191/ 2022-03-29T06:44:00+08:00 腾讯云今年春节活动优惠力度较大,在这期间我也采购了一台服务器与俩数据盘,准备作为网盘...资源:轻量云服务器2c4g 6M带宽云盘程序-cloudreve云硬盘100G+1000G云服务器挂载硬盘前往轻量服务器云硬盘后台挂载硬盘至目标服务器上云硬盘初始化挂载成功后,通过ssh连接至服务器,输入fdisk -l可查看到新挂载的硬盘容量大小及硬盘id(此处主硬盘为vda,新挂载的硬盘为vdb、vdc)由于该云硬盘在之前挂载过windows server系统的服务器,使用指令fdisk -l得知已经被win分区处理过。因云硬盘上没有重要信息需要转移,所以这里准备直接进行重新初始化操作...如果硬盘为新购挂载的可以直接查看“云硬盘初次使用初始化”...win转linux云硬盘二次初始化执行以下指令,进入 fdisk 分区工具,开始对新增数据盘执行分区操作。以新挂载的数据盘 /dev/vdb 为例,则执行以下命令:sudo fdisk /dev/vdb从前面得知,这块硬盘已经被win分区过了,所以先删除全部分区,再重新格式化以挂载给linux使用输入指令 d 来删除分区,分别删除1、2号分区删除分区后,再重新建立个新的分区并格式化为ext4输入指令 n 来新建分区,有时会提醒要选择分区类型,一般可输入 p 来创建个主要分区(p 表示主要分区,e 表示扩展分区)之后要选择的主分区编号、初始扇区、截止扇区可直接回车默认即可。操作结束后,输入指令 p 即可看到新建的分区。确认无误后,输入指令 w 将分区结果写入分区表中。如果上述操作有失误之处,直接输入 q 可不保存退出退出分区软件后,输入指令将分区表同步到系统:partprobe如果此指令提示找不到命令,需要安装软件包parted来解决:apt install parted执行以下命令,将新建分区文件系统设置为系统所需格式:sudo mkfs -t <文件系统格式> /dev/vdb1不同文件系统支持的分区大小不同,请根据实际需求合理选择文件系统。以设置文件系统为 EXT4 为例,则执行以下命令:(格式化需要一段时间,请稍等一会)sudo mkfs -t ext4 /dev/vdb1再输入 fdisk -l 可看出,该硬盘文件系统已经变成“Linux filesystem”再如法炮制,将第二块硬盘也初始化一番...此时云硬盘已经初始化结束,接下来就可以挂载使用了。云硬盘初次使用初始化执行以下命令,查看磁盘名称:sudo fdisk -l第一步挂载成功后可以在列表中看到服务器有两块磁盘,/dev/vda 为系统盘,/dev/vdb 为新挂载数据盘(多块硬盘将以vdc、vdd依次排序)执行以下命令,将新建分区文件系统设置为系统所需格式:sudo mkfs -t <文件系统格式> /dev/vdb1不同文件系统支持的分区大小不同,请根据实际需求合理选择文件系统。以设置文件系统为 EXT4 为例,则执行以下命令:(格式化需要一段时间,请稍等一会)sudo mkfs -t ext4 /dev/vdb1再输入 fdisk -l 可看出,该硬盘文件系统已经变成“Linux filesystem”,可以被挂载至系统文件夹使用了。云硬盘挂载本文将会把硬盘挂载至/mnt文件夹内(大部分系统、设备也是如此),之后可以通过访问该文件夹来使用云硬盘新建文件夹用于挂载不同的一批:(文件夹名可自定义)mkdir /mnt/data1 mkdir /mnt/data2执行以下命令,将设备挂载至新建的挂载点。执行以下命令:sudo mount /dev/vdb1 /mnt/data1 sudo mount /dev/vdc1 /mnt/data2执行以下命令,查看挂载结果。sudo df -h因为是为了网盘服务,所以要保证服务器启动时硬盘也可以同时被加载,接下来设置硬盘开机自动挂载...本文使用的是腾讯云购买的云硬盘,可以直接使用云硬盘的软链接。官方文档:挂载方式优缺点信息获取方式使用云硬盘的软链接(推荐)优点:每个云硬盘的软链接固定且唯一,不会随卸载挂载、格式化分区等操作而改变。缺点:只有云硬盘才有软链接。无法感知分区的格式化操作。执行以下命令,查看云硬盘的软链接。sudo ls -l /dev/disk/by-id使用文件系统的 UUID可能会因文件系统的 UUID 变化而导致自动挂载设置失效。例如,重新格式化文件系统后,文件系统的 UUID 将会发生变化。执行以下命令,查看文件系统的 UUID。sudo blkid /dev/vdb使用设备名称可能会因设备名称变化而导致自动挂载设置失效。执行以下命令,查看设备名称。sudo fdisk -l执行以下命令,备份 /etc/fstab 文件。以备份到 /home 目录下为例:sudo cp -r /etc/fstab /home执行以下命令,使用 VI 编辑器打开 /etc/fstab 文件。sudo vi /etc/fstab按 i 进入编辑模式。将光标移至文件末尾,按 Enter,添加如下内容。<设备信息> <挂载点> <文件系统格式> <文件系统安装选项> <文件系统转储频率> <启动时的文件系统检查顺序>(推荐)以使用云硬盘的软链接自动挂载为例,结合前文示例则添加:/dev/disk/by-id/virtio-disk-xxxxx /data ext4 defaults 0 0若您需挂载分区,则结合前文示例则添加:/dev/disk/by-id/virtio-disk-xxxxx-part1 /data/newpart ext4 defaults 0 2以使用磁盘分区的 UUID 自动挂载为例,结合前文示例则添加:UUID=d489ca1c-5057-4536-81cb-ceb2847f9954 /data ext4 defaults 0 0若您需挂载分区,则结合前文示例则添加:UUID=d489ca1c-5057-4536-81cb-ceb2847f9954 /data/newpart ext4 defaults 0 2以使用设备名称自动挂载为例,结合前文示例则添加:/dev/vdb /data ext4 defaults 0 0若您需挂载分区,则结合前文示例则添加:/dev/vdb1 /data/newpart /data/newpart ext4 defaults 0 2按 Esc,输入 :wq 并按 Enter 保存设置并退出编辑器。执行以下命令,检查 /etc/fstab 文件是否写入成功。sudo mount -a 如果运行通过则说明文件写入成功,新建的文件系统会在操作系统启动时自动挂载。输入 reboot手动重启后再输入 df -h`,可以看到硬盘已经自动挂载成功了本章节(上)部分内容结束,感谢阅读~ 在树莓派Linux多方式安装Java https://www.yanhy.top/index.php/archives/66/ 2022-03-29T06:34:00+08:00 (已更新Zsh无法使用环境变量问题)一:使用apt自动化安装jdk一般如果需要运行java程序时,需要一个简单、稳定的jdk或者jre环境,如下操作即可快速搭建java环境...使用指令 sudo apt search jdk 即可搜索软件源中的jdk各类版本,找到需要的版本并复制下包名,使用 sudo apt install 包名 即可安装,如图:通常情况下安装这个版本即可,使用指令 sudo apt install openjdk-11-jdk二:手动下载安装自己所需jdk版本如果所需的应用需要特定java环境或者想安装更新版本,可以去手动下载安装包,然后上传并解压等...下载JDKjava常见下载站:AdoptOpenJDK(支持各平台): https://adoptopenjdk.net/releases.htmlLiberica OpenJDK(嵌入式适用): https://bell-sw.com/OracleJDK(甲骨文jdk,部分程序不兼容): https://www.oracle.com/java/OracleJAVA(传统JRE,版本较低,稳定): https://www.java.com/以AdoptOpenJDK为例,我们本篇文章是为树莓派安装jdk环境,因此选择的“其他平台”本文推荐选择OpenJDK 11 ,此版本为长期支持版,较稳定,且此版本可以通过上面方法一快速安装。本文演示了OpenJDK 15版本的手动安装依次选择 OpenJDK 15 —— HotSpot,在下面Operating System出选择Linux,Architecture处选择系统版本如果是树莓派官方系统,应选择arm32,除非你的树莓派是安装了64位系统版本在下面筛选出的版本中选择JDK版本下载(如果没有编译等生产需求,可以下载JRE版本,文件体积较小)配置JDK下载完后将压缩包上传至树莓派内,并解压,指令为 tar -zxvf 压缩包名使用指令 mv ./jdk-15.0.2+7 /usr/java 将解压出的文件夹放在 /usr/java 文件夹,或者也可以放到 /etc/java 等其他地方,记下路径,可以输入 pwd 查看当前路径,选中后右键即可复制配置环境变量:sudo nano /etc/profile在文件末尾添加上以下内容:export JAVA_HOME=/usr/java/jdk-15.0.2+7 export CLASSPATH=$:CLASSPATH:$JAVA_HOME/lib/ export PATH=$PATH:$JAVA_HOME/bin其中,第一行的路径应该改成java存放的位置,如上述中我将解压出来的 jdk-15.0.2+7 文件夹放到了 /usr/java/ ,因此第一行填入当前的路径修改完毕后按 Ctrl+O 保存,按 Ctrl+X 退出编辑输入 source /etc/profile 刷新环境变量(无需重启)输入 java -version 查看版本信息,如果出现版本信息即为安装成功新增zsh解决如果安装了zsh,在zsh下使用java指令会显示zsh: command not found: java此时可以将/etc/profile添加的内容复制到用户目录下的.zshrc文件内,然后再输入source .zshrc如图:本文到此结束,感谢支持! Linux使用 Oh-My-Zsh 美化终端 https://www.yanhy.top/index.php/archives/182/ 2022-03-29T04:55:00+08:00 Zsh 属于 Shell 的一种,和 Bash 一样,但比 Bash 更好用,Zsh 完全兼容 Bash,拥有极其丰富的插件,其强大的自动补全参数、文件名以及自定义功能,可以大大提高我们使用 Linux 的效率。本文将会展示安装zsh、美化主题与安装自动填充插件的过程。本文摘选自网络,原文:https://www.cnblogs.com/ShawnChan/p/11723626.html查看当前shellecho $SHELL安装zshapt install -y zsh切换默认shellchsh -s /bin/zsh安装gitapt install -y git安装oh-my-zsh管理器自动安装sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"手动安装 git clone https://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh 复制配置文件: cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc修改主题:主题列表可见github:https://github.com/ohmyzsh/ohmyzsh/wiki/Themesvim .zshrc 修改 ZSH_THEME="ys""ys"为要修改主题的名称,可见github列表安装自动补全插件incr自动补全插件插件列表可见github:https://github.com/ohmyzsh/ohmyzsh/wiki/Plugins官网:Incremental completion on zsh(https://mimosa-pudica.net/zsh-incremental.html)wget -O incr-0.2.zsh https://mimosa-pudica.net/src/incr-0.2.zsh复制incr*.zsh文件到pluginscp incr-0.2.zsh .oh-my-zsh/plugins/在.zshrc 文件末尾添加下面这行source ~/.oh-my-zsh/plugins/incr*.zsh重新打开终端,以使配置生效zsh-autosuggestions自动补全插件下载插件(该命令会将插件自动clone到.oh-my-zsh目录中)git clone git://github.com/zsh-users/zsh-autosuggestions $ZSH_CUSTOM/plugins/zsh-autosuggestions编辑.zshrc文件(找到plugins=(git)这一行,如果没有添加。更改为如下)plugins=(git zsh-autosuggestions)最后使用source ./zshrc重新加载zsh配置文件 Linux常用操作指令(更新中) https://www.yanhy.top/index.php/archives/151/ 2022-03-29T04:48:00+08:00 凭个人需求和经验慢慢收录各种各样的Linux指令,包括且不仅于Debian系、红帽系等系统常用指令...apt/apt-getDebian系系统常用软件包管理指令,常用子命令: install 从仓库寻找并安装软件包(软件包名字后加"="再加版本号,可以安装指定版本的软件包) remove 移除软件包及重要依赖 autoremove 自动移除软件包及相关依赖 update 更新软件仓库 upgrade 获取软件更新并自动更新到最新版本 search 关键词搜索软件包yum红帽系系统常用软件包管理指令,同系统下类似的指令还有dnf等(没详细了解) install 同上,安装用man单词manual的缩写,即使用手册的意思,可以通过指令如`man apt`来查看apt指令的使用手册 q 退出 Enter 按行下翻 Space 按页下翻 b 上翻一页 /字符串 在手册页中查找字符串netstat用来显示网络状态,比较常用的有查看当前使用的端口等功能 netstat -tunlp 用于显示 tcp,udp 的端口和进程等相关 netstat -tunlp | grep 端口号 查看指定端口占用情况 netstat -ntlp 查看全部tcp端口占用 netstat -apu 查看UDP端口占用 netstat -i 显示网卡列表Linux用户与用户组添加://添加可登陆的普通账户,无su权限,无默认密码 sudo useradd yanhy //设置初始密码 sudo passwd yanhy //添加sudo权限,先修改sudoers为可写权限 chmod u+w /etc/sudoers //编辑sudoers vi /etc/sudoers 在 root ALL=(ALL:ALL) ALL 下面添加xxx ALL=(ALL) ALL yanhy ALL=(ALL:ALL) ALL //允许用户yanhy执行sudo,需要密码 %yanhy ALL=(ALL:ALL) ALL //允许用户组yanhy里面的用户执行sudo,需要密码 yanhy ALL=(ALL:ALL) NOPASSWD: ALL //允许用户yanhy执行sudo且不输入密码 %yanhy ALL=(ALL:ALL) NOPASSWD: ALL //允许用户组yanhy里面的用户执行sudo且不输入密码 //撤销sudoers写入权限 chmod u-w /etc/sudoers //查看全部用户 cat /etc/passwd 补充: 默认添加账户指令详细内容: [root@localhost ~]# grep "yanhy" /etc/passwd yanhy:500:500::/home/yanhy:/bin/bash UID从500开始,自动创建home目录,bash默认为/bin/bash 新增账户时默认密码配置: [root@localhost ~]# grep "yanhy" /etc/shadow yanhy:!!:15710:0:999:7::: 密码为“!!”即无密码,密码有效期为999天,到期前7天将会提醒 新增账户时默认用户组配置: [root@localhost ~]# grep "yanhy" /etc/group yanhy:x:500: 创建用户时默认会创建和用户名相同的用户组,且GID也是从500开始 ===以下为samba添加用户时附加操作=== //新增用户组为samba,用户组id为2000 sudo groupadd samba -g 2001 //添加无法登陆的账户,用于网盘等子账户,uid为2000,用户组id为2001(无法登陆终端的账户) sudo useradd yanhy -u 2000 -g 2001 -s /sbin/nologin -d /dev/null //授予访问权限 sudo chown -R yanhy:samba /home/ubuntu/ //同时再给自己一边权限 sudo chown -R ubuntu:ubuntu /home/ubuntu/ //添加samba用户密码 sudo smbpasswd -a yanhy Screen使用方法简要总结(指令区分大小写) - screen -ls 列出所有创建的窗口 - screen -S xxxx 新建一个名字为`xxxx`的新窗口并进入 - screen -r xxxx 进入一个名字为`xxxx`的窗口,如果没有这个名字的窗口会显示`There is no screen to be resumed matching xxxx.` - screen -R xxxx 进入一个名字为`xxxx`的窗口,如果没有这个窗口会自动创建新窗口且名字为`xxxx` - 关闭screen 进入一个窗口,然后关闭当前的项目,再输入exit,即可退出窗口并从列表中移除 - Ctrl + a + d 暂离当前窗口(进入一个窗口后,先按ctrl+a,保持ctrl键再按d即可离开该窗口,不影响运行的项目) - screen -wipe 列出全部窗口并自动移除无效的窗口 - 出现名字相同的多个窗口时,进入窗口时需要输入id而不是窗口名,如:列表中有`114514.test` `1919810.test`,进入窗口时需要输入`screen -r 114514` - kill 9 id号 强制杀死窗口进程(id号为`23333.Name`中的`23333`,如 `kill 9 23333`,不能输入窗口名) 修改bashrc文件后刷新- 重新打开终端 - sudo source .bashrc [Linux系统] Fedora体验 https://www.yanhy.top/index.php/archives/133/ 2021-11-17T07:43:00+08:00 经常为了在linux跑编译去安装虚拟机或者wsl,但其都有共同特征,即虚拟环境...为了更稳定的生产力以及学习linux,我找到了Fedora...前言为搭建个正常的linux环境,我之前曾尝试了debian系的ubuntu、deepin、raspbian(PC版)、kali等,但因为都是同一系列的,总感觉操作有些乏味,于是找上了红帽系的系统,而Fedora正是红帽系广受欢迎的社区发行版系统,因此准备将其安装为第二系统。这个系统使用体验不错,之前在搞服务器的时候用过centos,曾了解过yum软件包管理器等,但红帽系的系统操作还需学习,正好是个机会,写在博客上记录自己从安装双系统到优化fedora的日常使用。安装完成后的截图:安装因为日常开发还是windows系统,因此我选择从win来安装双系统。下载镜像官网链接:https://getfedora.org/因为考虑到可能日用,基本功能要有,所以这边选择工作站workstation版本下载。在下载镜像的同时,打开分区软件(如diskgunius),为Fedora系统腾出一些空间(推荐60-80GB),将腾出的空间融为一块,且不创建新分区(后续Fedroa安装时会自动分配)(此文在fedroa系统下所写,因此无法提供截图)安装镜像下面操作步骤为回忆内容,至于为啥这么熟练,因为第一次分区分小了,重装了N次...下载完毕后我选择使用u盘来安装(手头刚好有闲置u盘,其他的方法暂时不考虑),使用ultraiso将镜像写入到u盘,随后插入u盘,重启电脑,并按住F12不放(华为荣耀笔记本是F12选择启动设备,其他电脑自行查询),选择USB启动即可。进入grub选择页后,直接选择默认的第一条进入即可,会进入到体验版系统,并会弹出系统安装引导软件。选择中文、时区后,第三个选择硬盘需慎重。一般电脑内仅一块硬盘,选择默认硬盘后下方勾选自定义,再点左上角完成,会进入自定义分区页面进入自定义分区页面后,确保下面显示空余空间为几十个GB而不是只有MB大小,如果是MB,可能分区的时候自动创建分区了,在下面列表找到目标分区后点下面的“-”号即可删除分区,小心不要把其他有重要数据的分区或者win系统分区删除了;如果是正常的几十GB,直接选择上面自动分区即可,无需多余操作,最后返回到主页面就可以开始安装系统了。启动系统安装完成后,点击重启后拔出u盘,再次开机会自动引导到linux的grub启动,正常情况下grub启动项前两个分别是正常启动入口和恢复安全紧急模式入口,第三个引导项则是win的启动入口。(在fedora下,引导项无需且严重不推荐手动修改,系统会通过脚本自动找到可启动的linux内核,如果有安装多个版本,可以在系统内卸载旧内核版本,而不应该直接修改grub)系统默认的grub可以说是非常简陋的了,因此在后面优化操作体验的时候会提到修改启动页面主题部门...使用按照我个人的linux使用习惯,一般情况下没有国内优化的系统开箱第一件事就是换源了,不知道是不是错觉,没有换源总感觉装依赖都特别慢...换源更新红帽系系统感觉换源还挺复杂的(之前给centos换源也是头疼了半天),这边就总结一下快捷指令吧,如果有特殊需要请做好备份sudo sed -e 's|^metalink=|#metalink=|g' \ -e 's|^#baseurl=http://download.example/pub/fedora/linux|baseurl=https://mirrors.ustc.edu.cn/fedora|g' \ -i.bak \ /etc/yum.repos.d/fedora.repo \ /etc/yum.repos.d/fedora-modular.repo \ /etc/yum.repos.d/fedora-updates.repo \ /etc/yum.repos.d/fedora-updates-modular.repo中科大源帮助文档:https://mirrors.ustc.edu.cn/help/fedora.html换源后输入sudo dnf makecache即可产生软件包缓存,随后即可yum update(yum、dnf都是软件包管理器)换源后速度明显提升不少(截图来自fedora系统内置截图软件)(圆角好评在这波更新后,浏览器、文件管理区、应用商店等众多软件都需要重新打开以生效新版本(至少我这个系统版本是这样,而且印象里内核还有个更新应用商店打开速度也快了起来,软件包也能加载出来清理缓存、旧内核一般在大型更新后,我是习惯输入sudo yum clean all来清理更新产生的缓存(原因是因为之前翻目录发现缓存cache目录占用特别大,查了一下发现很多软件包缓存),效果如图:在较大更新或者应用商店明示你要更新内核时,更新完经常会留下旧内核,这时候就需要手动清理了(也可以不理会,就是开机引导时会有脚本把全部内核启动项给仍到grub,会显得不好看)查看当前内核版本 uname -r我这里提示版本为“5.14.10-300.fc35.x86_64”查看系统内安装的内核相关包 rpm -qa | grep kernel明显可以看出同一个包(如kernel-core)有两个不同的版本,再根据上面查到的当前内核版本,可以确定要卸载的包:kernel-headers-5.14.9-300.fc35.x86_64 kernel-core-5.14.10-300.fc35.x86_64(旧版本需卸载) kernel-modules-5.14.10-300.fc35.x86_64(旧版本需卸载) kernel-5.14.10-300.fc35.x86_64(旧版本需卸载) libreport-plugin-kerneloops-2.15.2-6.fc35.x86_64 abrt-addon-kerneloops-2.14.6-9.fc35.x86_64 kernel-modules-extra-5.14.10-300.fc35.x86_64(旧版本需卸载) kernel-core-5.14.17-301.fc35.x86_64 kernel-modules-5.14.17-301.fc35.x86_64 kernel-5.14.17-301.fc35.x86_64 kernel-modules-extra-5.14.17-301.fc35.x86_64接下来,输入 sudo yum remove kernel-5.14.10-300.fc35.x86_64等手动移除这四个旧版本即可(-core可能无法移除,可重启后尝试)最后输入reboot重启即可结束至此,fedora已经安装完毕,且软件包等更新完成,可正常使用。想要了解更多玩法,欢迎继续关注本博客!