在联想社区论坛上,我的用户名是‘iseon’,我们一直在讨论Miix 2 11的性能问题。似乎这款平板电脑的性能问题源于固件设定的电源限制。我一直试图寻找一种方法来绕过这个电源限制,并认为可能在BIOS设置中。我已经发现了一种解锁BIOS所有高级设置的方法,并进行了一些初步的实验。但遗憾的是,我还没有在解锁的BIOS中找到可以移除电源限制的设置。
所以,如果你只是想提高平板电脑的性能,那么这个BIOS解锁并不能保证你能够做到这一点!尽管如此,隐藏的BIOS高级页面包含了一个巨大的设置列表,可能有一些设置对其他用途很有用——那些想要完全控制平板电脑设置的人可能会想要这样做。我强烈建议只有高级用户继续操作——但我已经用初学者友好的方式编写了这份指南,以便任何感兴趣的人都可以跟随。对于你因操作不当导致设备故障,我概不负责。请谨慎操作,我能保证的只是这在我的平板电脑上有效。
这个BIOS修改不会使你的保修失效,这里所做的任何更改都可以通过加载默认BIOS设置或移除电池重置BIOS来恢复。我在BIOS版本97CN37WW上测试了这个修改,但它可能也适用于97CN39WW(解压缩的BIOS设置页面看起来是一样的)——如果你想尝试其他版本,由你决定,可能会成功,也可能不会。版本97CN39WW增加了一些额外的UEFI安全措施,这可能会阻止你进行此操作——我没有尝试过。它应该适用于i3和i5版本(我使用的是i5)。
在开始之前,这里有一些解锁的BIOS图片(我最近重置了BIOS,所以日期都是错误的):


我们将使用Rufus将Ubuntu ISO放到USB驱动器上,下载链接:Rufus下载链接





进入现有的终端窗口(或打开一个新的终端窗口),执行‘apt-get update’并安装Ghex应用程序(我们将需要它来编辑一些UEFI BIOS变量),在所有提示中都回答“是”:
sudo -i
apt-get update
apt-get install ghex接下来,在终端窗口中输入以下内容(你可以输入部分目录名并按Tab键自动补全,特别是文件名,只需输入‘OilSetup-’并按TAB键,你将得到正确的文件)。
ghex /sys/firmware/efi/efivars/OilSetup-88d1911c-ab4a-4335-9e9a-26be9081acc3


现在执行文件->保存并关闭应用程序,你就完成了BIOS的编辑!恭喜!
关闭计算机,拔掉USB驱动器,再次按住电源+音量上键启动计算机,进入BIOS,你将在BIOS启动屏幕上找到两个新的红色页面!太棒了!高级页面包含许多与电源、热管理、芯片组功能等相关的设置。主页面包含一些常规设置,类似于默认存在的主页面。在更改高级设置时要非常小心,特别是处理器电源屏幕上的自定义TDP设置——我发现这个特定设置会使平板电脑无法启动(到目前为止我更改的其他设置没有使平板电脑无法启动)。
如果你更改了某些设置并且平板电脑无法启动,你需要打开后盖并将电池从主板上拔下(小圆形电池和主电池都要拔下),这将重置BIOS,你可能需要使用Windows救援USB驱动器来使你的Windows安装再次可启动。如果你打算进行实验,请提前制作Windows/Linux恢复USB。
如果你已经解锁了BIOS并尝试了设置,请发表评论分享你的发现!
转载结束
]]>图片来自网络

发售于2014年,机身11.6寸屏幕,带有配套键盘;机身上有一个USB接口,可传数据或者充电(没错这玩意充电接口是usb)。通过接上键盘后可以拓展两个usb,键盘左右侧各一个usb2.0接口,不能充电。
续航这一块暂且不看,电池已经鼓包,后续要拆卸下来的。屏幕后续也不需要了,计划用上面的MicroHDMI接口进行调试,其余使用远程控制。
机身有扬声器麦克风,和前后摄像头。不过也就是能用的程度。板载网卡仅支持2.4Ghz频段。
我这台是i5的配置,市面上也有四代i3的配置。i5这款理论主频1.6Ghz,最高2.0Ghz。核显为Intel HD 4200,显存128MB,理论可以看H264解码4k视频,不支持h265等新编解码技术。
内存为ddr3 4GB,不可拆卸。硬盘内置128GB SATA,据社区分享是MSATA,或许可以自行更换扩容。
来自百度:
1、支持windows 8.1操作系统,办公娱乐无障碍;2、超强的双核
3、全高清ISP屏;4、WIFI网络无极限,更有3G版本
5、超长8小时待机;6、轻薄的机身
7、多功能键盘底座;8、拥有前后设想图
9、Intel Hasewell 双核处理器我这台已经刷入了tiny10,系统镜像链接:https://archive.org/details/tiny-10_202301
刷入后仍需打一堆驱动,所幸官方驱动入口还没有关闭,官网服务入口:https://newsupport.lenovo.com.cn/products_index.html?fromsource=products_index&selname=IdeaPad%20MIIX2-11
以防万一官网下架,导致老设备没得折腾,备份了一手(仅备份了官方win10的驱动)
主:https://www.123865.com/s/Dpq0Vv-8ueHd?提取码:Lj2E
备:https://www.123684.com/s/Dpq0Vv-8ueHd?提取码:Lj2E
1、挂机宝 功耗仅10w左右的挂机宝,办公性能还可以
2、win服务器 系统支持虚拟化,可以用wsl、docker等挂一些简单的服务
3、linux服务器 实测刷入ubuntu后,wifi等外设可以免驱驱动,但亮度、电池等仍无法识别,不过也方便折腾了
4、小型nas 虽然只有一个硬盘位,但可以作为一个小型文件站,低功耗也挺不错的
本文先到这里,简单介绍了这个板子。后续会有更多折腾,比如解除BIOS高级菜单等。这块板子社区普遍反应温度高了降频严重,因此计划拆出来主板,设计个简单外壳并加上风扇,尝试让其稳定运行服务。
]]>DD重装本质上是利用Linux的指令来进行硬盘擦写填充文件。
菜鸟编程:Linux dd 命令用于读取、转换并输出数据。dd 可从标准输入或文件中读取数据,根据指定的格式来转换数据,再输出到文件、设备或标准输出。
本文使用Github开源项目 reinstall ,并将云电脑系统重装为Windows 10 LTSC 2021。
一键重装脚本 English 项目介绍
- 支持安装 16 种常见 Linux 发行版
- 支持用官方原版 iso 安装 Windows,并且脚本会自动查找 iso 和驱动
- 支持任意方向重装,也就是支持 Linux to Linux、Linux to Win、Win to Win、Win to Linux
- 专门适配低配小鸡,解决内存过少导致无法进行网络安装
- 自动判断动静态 IPv4 / IPv6,无需填写 IP / 掩码 / 网关
- 支持 ARM,支持 BIOS、EFI 引导,原系统支持 LVM、BTRFS
- 不含第三方自制包,所有资源均实时从源站点获得
- 有很多注释移动云电脑切记需要下载好远程软件在数据盘,并保证软件打开就可以使用,否则在无鼠标驱动下安装远程控制软件相当困难
天翼云电脑实测无需远程,重装系统后仍然可以在官方客户端键鼠操控,也无需强制数据盘
打开设置 - 更新与安全 - Windows安全中心,点击左侧病毒与威胁防护,将选项全部关闭。
如使用天翼云电脑,系统可能预装火绒等杀毒软件,直接退出杀毒软件即可。
使用快捷键Win+X,选择 Windows Powershell(管理员)打开即可

复制以下脚本,并粘贴到Powershell终端内(右键终端界面即可粘贴)
certutil -urlcache -f -split https://github.299993.xyz/https://raw.githubusercontent.com/bin456789/reinstall/main/reinstall.bat注:这里的脚本使用了Github加速源。如以后该加速源关闭,将无法正常执行脚本,可使用Github原链接,可能需要加速器。
备用链接
国内加速源
certutil -urlcache -f -split https://jihulab.com/bin456789/reinstall/-/raw/main/reinstall.bat
国外(Github原链接)
certutil -urlcache -f -split https://raw.githubusercontent.com/bin456789/reinstall/main/reinstall.bat执行完成
复制以下脚本,并粘贴到Powershell终端内(右键终端界面即可粘贴)
这里要安装的为Windows 10 LTSC 2021系统,稳定且性能占用较低。如有其他系统需求,可以在https://drive.massgrave.dev/网站查找所需镜像。
./reinstall.bat windows --iso='https://drive.massgrave.dev/zh-cn_windows_10_enterprise_ltsc_2021_x64_dvd_033b7312.iso' --image-name='Windows 10 Enterprise LTSC 2021'期间会出现软件安装的窗口,无需理会,等待其自动安装和配置。
当最后几行出现下面内容时则为初期准备完成,可以重启安装:
***** INFO *****
windows
Username: administrator
Password: 123@@@
Reboot to start the installation.
You can run this command to reboot:
shutdown /r /t 0
PS C:\Users\Administrator>
在Powershell内输入以下指令,重启系统进入Linux子系统,开始自动DD重装。
shutdown /r /t 0系统重启后,无需任何操作,一直等待或者关闭云电脑客户端放后台慢慢装即可。花费时间取决于网速和硬盘读写速度,如云电脑为机械硬盘可能会慢一些。
由于我这个天翼云电脑带宽只有50M,因此下载速度特别慢,前前后后需要30到50分钟左右。
全程为脚本自动操作,请勿手动介入,可能会打断脚本。一直等待到系统开机输入密码阶段才算安装完成。

注:天翼云电脑在重装后还是原系统卸载系统软件,都不影响在官方客户端的控制使用(截至2024/7/30是可行的)。但偶尔会出现弹窗显示异常提醒建议重启,点以后再说即可。

在Linux系统部署完成后,自动重启到Windows安装中。全程无需手动操作,也不要去介入操作,会打断进程。

安装完成后自动开机,默认开机密码:123@@@

移动云电脑需要开机后用键盘打开远程软件,进行远程连接后才能控制。
使用快捷键 Win+E 打开此电脑,方向键选择D盘,并选择Todesk_lite.exe,回车键打开软件进行远程连接。
天翼云电脑可直接用官方客户端控制。

天翼云电脑可在修改分辨率手动全盘。重装后无法进行自适应分辨率、硬盘映射等等功能,有需要可使用原系统。
刚安装好的系统分辨率不对,可以手动在桌面-右键-显示设置,手动调整分辨率为1920x1080即可。
激活推荐使用HEU-KMS,可参考我前面的文章 安利个Windows激活工具 HEU-KMS
最便捷的文件传输方式可使用第三方远程控制软件,进行文件传输;也可以提供各种网盘进行传输。官方客户端文件传输能力失效。
仔细研究了一下ecloud的驱动相关,按自己需求整理出了适用于官方客户端的驱动优化
修复以下问题:
需下载以下链接内三个文件(经fiddler抓包后未发现上报连接,但不排除定时上报。程序已精简过,去除其他服务如远程录屏、打印等服务)
https://yanhy.lanzouj.com/b033zndfuj
密码:5k43
先创建好文件夹,在C:\Program Files (x86)\ctyun\clink(也不一定要指定位置,这是原系统安装路径,为确保不出错还是推荐本路径)
解压后,将64文件夹放到clink目录内,如下图

打开64文件夹,右键点击以管理员身份运行来打开clink_agent.exe和clink_cb_helper.exe。运行后没任何反应,但可以通过任务管理器看到已经在运行了。注:如不使用管理员身份运行,则在一些系统中可能因为没权限导致无法使用部分功能。

经多次测试,核心服务程序为必须运行项,否则其他程序无法正常工作,;服务程序则为跟着客户端窗口调整分辨率、剪贴板同步、文件拖拽传输等功能。
音频驱动直接双击安装即可

随意解压一个位置,打开文件夹后,选择 qxldod.inf 文件,右键-安装。安装后没有弹窗,但如果第一次安装屏幕会闪烁并修改分辨率为很低的一个状态。
如果前面有安装了守护程序,只需要缩放一下官方客户端窗口,即可自动调整云电脑分辨率大小。
如果不使用守护程序,只安装驱动,可以手动在桌面-右键-显示设置,手动调整“显示器1”的分辨率为1920x1080即可,可以修复双重鼠标指针。(单独安装除了修复双重鼠标指针好像意义不大,经过测试这个驱动貌似就是配合守护程序调整分辨率使用)
当云电脑DD重装后,会失去一些便利的特性,但是同时也有一些好处。使用全新系统,省去官方定制系统臃肿的性能占用和一堆无用的软件,删除官方监控后门,甚至部分云电脑可以重装后直接变成不休眠(天翼云还是会休眠),能更好的由自己控制。
本文部分内容摘抄自该博主(https://kui.li/989.html),如有版权问题请留言,会及时处理
补充:移动云电脑家庭版操作较麻烦,可以参考这篇文章获得更多移动云电脑相关内容:https://www.yuque.com/scynull/cloud/ikxva5t32sii3lrn
本文到此结束,如有更多感兴趣的话题可以关注本博客,不定期更新~
]]>本文部分内容来源于 什么值得买:每天一个群晖小tip 篇三十四:五步操作将群晖RAID1阵列降级为Basic模式
首先要拔掉一块硬盘,破坏Raid1的阵列,群晖会提示存储池降级,并有个“堪用”警示。


1、使用ssh登陆群晖并获取root账户;
sudo -i2、输入命令,查看当前分区;
cat /proc/mdstat
3、根据数字大小确认需要处理的分区状态,由于我的硬盘为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确保网络安全。插回刚刚的硬盘,重新初始化并创建存储池、存储空间即可使用。

如题,在此文章之前的都是从wordpress迁移到typecho再迁移到wordpress再迁移回来typecho的情况,因此不仅是非Markdown编写,而且一些格式还错乱了(悲
从该文章之后开始认真起来了,博客之所以停更了这么久,一方面是毕业了,现在找到了一份还算过得去的工作,后面可能只有零零散散的文章了,不过还是准备继续写下去的,毕竟自己写的东西都是自己的经验,自己的知识。
这次重新迁移,也整理了一下分类等,大部分属于linux的经验都扔服务器运维里面了;删了技术杂谈等分类;然后修改教程分享为教程经验,在这个分类里面将会出现各种领域的自己总结的教程和经验,当然这些并不算标准答案,我自己发现有问题也会变更。
本文就这样了,算是做个公告,或许没有多少人来访,但是哪怕留给以后的自己看,也是不错的选择~
]]>本章节待慢慢补充...
linux下的GPIO一般可以在/sys/kernel/debug/gpio下查询到信息,但是由于棒子的PCB没有开源,无法得知目前那些GPIO可以使用。但是通过表面可知,至少有3颗LED、2路SIM卡控制端口可用,且板载Uart串口调试点,因此,如果能对其中几个IO进行操作,通过IIC协议,即可可以控制多路外设,成为真正的硬件开发板...
从最简单的开始,控制一颗LED的亮灭。刷了Debian系统后,板子上只有红色、蓝色灯为启用状态,而绿色灯为None状态。因此,我们可以先拿没用的绿色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数据时会闪烁
使用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让其每次开机都设置为该模式。
可以将其设置为 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.cpp
https://gitee.com/anhui1995/ufi_auto-fan/blob/master/autofan.c
https://blog.csdn.net/qq_26226907/article/details/128027533
https://www.kancloud.cn/handsomehacker/openstick/2637560
(需更新)
社区已经有很多编译的系统可玩了,但是为了追求彻底,我还是想自己编译一个系统用用看,顺便试着调整内核进行超频...
本文参照多个文章整理后编写
编译UFI设备的Debian固件
编译410随身wifi_Debian超频版教程&经验
关于 OpenStick
如果只想刷入社区的系统镜像,可看第5节 系统刷入
编译需要在主机为Linux系统下进行,因此本次选择vmware虚拟机进行
系统镜像: Ubuntu2210_Desktop_amd64
编译过程中全程以普通用户进行,不能进入root用户编译,仅使用sudo提权
系统安装完成后打开终端开始换源,如果不换源后续安装软件会较慢:
sudo vi /etc/apt/sources.list注释全部内容,更换为:
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ kinetic main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ kinetic main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ kinetic-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ kinetic-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ kinetic-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ kinetic-backports main restricted universe multiverse
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ kinetic-security main restricted universe multiverse
# # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ kinetic-security main restricted universe multiverse
deb http://security.ubuntu.com/ubuntu/ kinetic-security main restricted universe multiverse
# deb-src http://security.ubuntu.com/ubuntu/ kinetic-security main restricted universe multiverse
# 预发布软件源,不建议启用
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ kinetic-proposed main restricted universe multiverse
# # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ kinetic-proposed main restricted universe multiverse输入指令安装软件包:
sudo apt install binfmt-support qemu-user-static gcc-10-aarch64-linux-gnu kernel-package fakeroot simg2img img2simg mkbootimg bison flex gcc-aarch64-linux-gnu pkg-config libncurses-dev libssl-dev unzip git克隆仓库代码:
git clone https://github.com/OpenStick/linux.git --depth=1此时不急着去编译源码,为了获得更佳的性能,先对其进行超频修改
进入目录 linux/drivers/clk/qcom 找到 a53-pll.c文件,进行修改
打开文件后,可根据下图为参考,21-27行内,第一块为运行频率,第二块则为供电电压。根据前面的规律,大致可以判断为每提升200Mhz增加10电压值,但是由于再往后就超出了芯片设计频率,同时要考虑功耗与发热,因此往后提升时要略增加一些电压值,如 { 1841600000, 96, 0x0, 0x1, 0 }
static const struct pll_freq_tbl a53pll_freq[] = {
{ 998400000, 52, 0x0, 0x1, 0 },
{ 1094400000, 57, 0x0, 0x1, 0 },
{ 1152000000, 62, 0x0, 0x1, 0 },
{ 1209600000, 63, 0x0, 0x1, 0 },
{ 1248000000, 65, 0x0, 0x1, 0 },
{ 1363200000, 71, 0x0, 0x1, 0 },
{ 1401600000, 73, 0x0, 0x1, 0 },
{ 1621600000, 84, 0x0, 0x1, 0 },
{ 1841600000, 96, 0x0, 0x1, 0 },
{ 1951600000, 103, 0x0, 0x1, 0 },
{ }
};
找到第二个目录 linux/arch/arm64/boot/dts/qcom 修改其中的 msm8916.dtsi 文件,在220行左右出现默认频率,在此之后进行增加,增加的频率需要在前一个文件内添加好 opp-1363200000 {
opp-hz = /bits/ 64 <1363200000>;
};
opp-1401600000 {
opp-hz = /bits/ 64 <1401600000>;
};
opp-1621600000 {
opp-hz = /bits/ 64 <1621600000>;
};
opp-1841600000 {
opp-hz = /bits/ 64 <1841600000>;
};
opp-1951600000 {
opp-hz = /bits/ 64 <1951600000>;
};回到刚刚git拉取的终端,开始执行编译前的配置
cd linux
export CROSS_COMPILE=aarch64-linux-gnu-
export ARCH=arm64
make msm8916_defconfig
make menuconfig具体的make配置可以参考网上公共教程,也可以直接使用默认配置进行下一步
这里的 -j4 请根据自己CPU的核心数或虚拟机分配核心数来修改
make -j4生成debian格式的deb软件包:
fakeroot make-kpkg --initrd --cross-compile aarch64-linux-gnu- --arch arm64 kernel_image kernel_headers生成结束后,输入 ls ../ 即可查看生成的deb文件包
在上一级目录创建bak文件夹,将必要的文件提取出来备用
路径:arch/arm64/boot/Image.gz
设备树dtb路径:arch/arm64/boot/dts/qcom/msm8916-handsome-openstick-xxxxxx 这里要根据设备型号选择,本文使用001B设备
也可以一次性打包多个设备版本,如再拉取一个 003 的棒子的设备树(与001c通用)
mkdir ../bak
cp arch/arm64/boot/Image.gz ../bak/
cp arch/arm64/boot/dts/qcom/msm8916-handsome-openstick-ufi001b.dtb ../bak/
cp arch/arm64/boot/dts/qcom/msm8916-handsome-openstick-ufi001c.dtb ../bak/下载debian底包,并将解压后的rootfs.img放到bak目录内
cd ../bak
wget https://github.com/OpenStick/OpenStick/releases/download/v1/debian.zip && unzip debian.zip
mv ./debian/rootfs.img ./simg2img rootfs.img root.img
sudo mount root.img /mnt
sudo mount --bind /proc /mnt/proc
sudo mount --bind /dev /mnt/dev
sudo mount --bind /dev/pts /mnt/dev/pts
sudo mount --bind /sys /mnt/sys将前面生成的deb软件包复制到 /mnt 目录
sudo cp ../linux-*.deb /mnt
使用 chroot 进入挂载的系统,移除系统内原有的linux-image包,并安装刚刚生成的deb软件包,安装后删除deb文件
sudo chroot /mnt
dpkg -l | grep -E "linux-headers|linux-image" |awk '{print $2}'|xargs dpkg -P
dpkg -i *.deb
rm linux-*.deb 与正常debian系统一样进行换源等常规优化操作
换源:
cat>/etc/apt/sources.list<<EOF
deb http://mirrors.ustc.edu.cn/debian stable main contrib non-free
# deb-src http://mirrors.ustc.edu.cn/debian stable main contrib non-free
deb http://mirrors.ustc.edu.cn/debian stable-updates main contrib non-free
# deb-src http://mirrors.ustc.edu.cn/debian stable-updates main contrib non-free
EOF安装常用软件并调整时区 区域:6 Asia 时区:70 Shanghai
apt install locales usbutils curl wget fdisk net-tools nano
dpkg-reconfigure locales
dpkg-reconfigure tzdata启用Root并默认自动登录,并修改root密码(本文设置为123123)
sed -i '/PermitRootLogin /c PermitRootLogin yes' /etc/ssh/sshd_config
sed -i '/PasswordAuthentication /c PasswordAuthentication yes' /etc/ssh/sshd_config
passwd root创建 rc.local 开机启动脚本
cat>>/etc/systemd/system/rc-local.service<<EOF
[Unit]
Description=/etc/rc.local
ConditionPathExists=/etc/rc.local
[Service]
Type=forking
ExecStart=/etc/rc.local start
TimeoutSec=0
StandardOutput=tty
RemainAfterExit=yes
SysVStartPriority=99
[Install]
WantedBy=multi-user.target
EOFcat <<EOF >/etc/rc.local
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
exit 0
EOF
systemctl daemon-reload && systemctl enable rc-local
history -c配置结束,输入 exit 可退出
将 /mnt/boot/initrd**.img 取出到 bak 文件夹内备用
cp /mnt/boot/initrd.img-* ./取消刚刚的boot.img的挂载
sudo umount /mnt/proc
sudo umount /mnt/dev/pts
sudo umount /mnt/dev
sudo umount /mnt/sys
sudo umount /mnt将 boot.img 转为刷机用的 rootfs.img 格式
img2simg root.img rootfs.img将Image和dtb合并(由于前面拉了两个设备树,这里合并两次)
cat Image.gz msm8916-handsome-openstick-ufi001b.dtb>ufi001b-kernel-dtb
cat Image.gz msm8916-handsome-openstick-ufi001c.dtb>ufi001c-kernel-dtb将前面提取出来的 initrd**.img 改名为 initrd.img
mv initrd.img-* initrd.img生成001b的镜像
mkbootimg --base 0x80000000 --kernel_offset 0x00080000 --ramdisk_offset 0x02000000 --tags_offset 0x01e00000 --pagesize 2048 --second_offset 0x00f00000 --ramdisk initrd.img --cmdline "earlycon root=PARTUUID=a7ab80e8-e9d1-e8cd-f157-93f69b1d141e console=ttyMSM0,115200 no_framebuffer=true rw" --kernel ufi001b-kernel-dtb -o ufi001b-boot.img生成001c/003的镜像
mkbootimg --base 0x80000000 --kernel_offset 0x00080000 --ramdisk_offset 0x02000000 --tags_offset 0x01e00000 --pagesize 2048 --second_offset 0x00f00000 --ramdisk initrd.img --cmdline "earlycon root=PARTUUID=a7ab80e8-e9d1-e8cd-f157-93f69b1d141e console=ttyMSM0,115200 no_framebuffer=true rw" --kernel ufi001c-kernel-dtb -o ufi001c-boot.img
整理文件,将boot与rootfs.img整理出来(可选)
mkdir ufi_debian
mv ufi001*.img ./ufi_debian/
mv rootfs.img ./ufi_debian/最后,将这些文件从虚拟机复制到主机,接入棒子,准备下一个环节:开始刷机
要想把Debian刷入到棒子内,需要在棒子的fastboot模式下刷入。如果棒子是刚做完第一章的备份工作后,只需要跳过第0节继续往下跟着做即可;如果棒子已经刷入过openwrt或者Debian等linux系统,请备份好必要资料后,看下面第0节进入fastboot模式。除了esim,务必不要插入sim卡的时候刷机,否则可能会无法检测到卡,出现这种情况重新刷入就可以了(除非刷机包有要求插卡刷入)
已刷机的棒子进fastboot
如果你的棒子是新买的并且已经做完备份工作了,可以直接跳过该小节,直接使用adb重启至fastboot
备份好必要文件后,拔下棒子
按板子上的RST按钮,并插入到电脑,此时电脑会识别到9008设备
使用第一章的软件 Qualcomm Premium Tool V2.4 ,打开后扫描分区,按下图所示格式化boot分区
格式化完成后,拔掉棒子,重新插入,即可自动进入fastboot模式
打开第一章的adb工具包 tools 文件夹,在文件夹上方地址栏输入cmd,打开cmd窗口
输入指令 fastboot devices 即可查看是否有设备连接
如果连接成功,即可开始跳转到第2节
进入到fastboot模式,如果是从第0节完成,则可以跳过这一节往下看;如果棒子刚买回来且做了备份工作后,可以看这一节进入fastboot
正常插入棒子,等待其开机,设备管理器显示adb即可
如果显示如下图,同时出现adb与9091设备,代表设备还没有完全开机,稍等片刻即可
打开第一章内的adb工具包 tools 文件夹,在文件夹上方地址栏输入cmd,打开cmd窗口
输入指令 adb devices ,查看是否有adb设备连接,如有,可继续执行指令 adb reboot bootloader
此时电脑会提示新设备接入,输入指令 fastboot devices 即可查看是否有设备连接
此时棒子成功进入fastboot模式,可以进行刷机
准备Debian\linux\openwrt刷入工具包,优先刷入ufi003(001c)
如果使用社区提供的刷机镜像压缩包,里面一般有全部分区文件和 flash.bat 刷机脚本,可以直接使用包里面的 flash.bat 一键刷入;如果只准备了rootfs.img 与 boot.img 和本文一样,那就需要下载基础包,将这俩文件放基础包内,并把 *-boot.img 改名为 boot.img 即可
基础包链接:https://www.123pan.com/s/Dpq0Vv-p9UHd.html 提取码:dkdF (本文采用这一个)
源链接:https://github.com/OpenStick/OpenStick/releases/tag/v1 (建议使用前面链接,本文有改动刷入脚本,可自动刷入lk2nd与rootfs、boot)
源链接配合源教程食用更佳:https://www.kancloud.cn/handsomehacker/openstick/2636506
将基础包下载后解压,可得到一个base文件夹。将前面生成的 rootfs.img 与 ufi001c-boot.img 复制到该文件夹内,并将 ufi001c-boot.img 改名为 boot.img ,然后运行 flash.bat 即可开始刷入,不会超过3分钟(如果rootfs包较大,耗时也会久,如果长时间不跑进度可以尝试重新刷入,进入fastboot方法看第0节)
等显示 All done!! 之后棒子会自动重启,并尝试开机
如果在电脑里面找不到设备,可以参考文章:https://www.kancloud.cn/handsomehacker/openstick/2636506
本文结束,后续折腾请等待更新
终于想升级到win11了,结果是因为眼馋WSLg这个功能,不过既然都到Win11了,顺手也安装一下WSA吧,既然有特性就算不用也得要装(
本篇学习自:https://www.tjsky.net/tutorial/384
由于很晚才升级win11,以至于想用Magisk+GApps的WSA时,却发现Github的项目页面一个醒目的提醒:This repository has been disabled.
查了一下,原来是因为太多人用Github的Action流导致项目被封禁了,看样子云端编译是没辙了。所幸LSposed团队又出了一个项目 MagiskOnWSALocal ,我们可以使用这个项目进行本地编译,只需要有WSL子系统环境或者虚拟机Linux系统都可以编译运行。正好网上也有大佬做了博客,我就根据自己的经验二次整理了一下。
系统环境:
编译环境:



不想自己构建可以去下面的“安装”章节下载本篇文章构建好的
0、 (可选) 打开Github,前往作者团队的项目MagiskOnWSALocal(https://github.com/LSPosed/MagiskOnWSALocal) 并Star,支持作者团队
1、打开虚拟机,打开终端,输入指令sudo apt update来更新软件源,稍后我们要安装几个软件包(保持网络畅通)
2、切换到Home目录,然后安装Git工具并克隆项目,如果网络不好可能会很慢,耐心等待
cd ~
sudo apt install git -y
git clone https://github.com/LSPosed/MagiskOnWSALocal.git
3、等克隆完毕且没有明显报错(报错可能就是网络不好无法继续克隆)后,切换目录到项目内
cd MagiskOnWSALocal4、开始运行一键脚本,自动安装与配置环境
sudo ./scripts/run.sh
5、经过大概20分钟的等待,终端内会显示选项,此时开始自定义安装;如果中途有选择错误,强制退出再重新执行脚本即可
接下来的小标题格式为:菜单选项 | 大致意思 | 推荐选择
5-1、Build Arch | 编译架构 | 默认
用键盘方向键选择X64 (个人电脑一般都是Intel或者AMD,大多数为X64架构,可能也有部分Arm设备,可以自行编译试试看)

5-2、WSA release type | WSA发行类型 | 默认
一般选择retail,零售版,也解释为稳定版;如果想体验预览版,可选择Beta或者Dev通道的版本

5-3、Magisk version | 面具版本通道 | 默认
顾名思义是面具的更新通道,一般来说稳定就好,和手机上刷root用的面具玩法一样

5-4、Install GApps | 安装GApps | 是
如果没有一个好的网络环境也可以不安装,可以使用第三方安装器安装软件

5-5、Which GApps do you want to install? | 安装哪种版本的GApps | OpenGApps
推荐使用OpenGapps,体验过就明白了

5-6(略过)、Variants of gapps | 选择安装什么体积的GApps | 无
此选择目前略过,因为GApps没跟上WSA安卓版本(12)的更新,目前只有Pico量级的能用,默认跳过
5-7、 Remove Amazon Appstore | 移除亚马逊市场 | 否
憨憨亚马逊市场,app真的少,大部分游戏还都是益智游戏,建议选否,不保留

5-8、Root solution | Root解决方案 | Magisk
嗯,就一个面具,就选它,或者你不想root可以选none,这样就可以构建个无root但有GApps的WSA了

5-9、Compress output | 压缩构建包 | 是
如果你是老电脑,建议选否,压缩是一件很吃cpu的事情,虚拟机推荐压缩,方便导出文件,咱这边要分享到社区,所以选择压缩

5-10、Compress format | 压缩格式 | zip
同上述,压缩很吃cpu,7z更吃,tar.xz会好一些,但是在win下需要压缩软件支持,zip适合大众需求,空格选择,回车即确定

6、选择完成后,即可开始构建WSA安装包(会下载一些软件包,需要保持好的网络环境)

7、等待十几分钟,即可构建完毕(包体大概八百多MB)


此处为第一次安装WSA,如果之前有WSA请先卸载再安装,如果之前也是MagiskOnWSA,需要更新的话看下文,本篇文章构建包分享:https://www.123pan.com/s/Dpq0Vv-ORuHd提取码:CcO3
1、将上一步中构建完成的包(或是本文分享的构建包)解压到D盘/WSA文件夹中,文件夹可自行创建,但解压后不可删除,解压路径即为运行路径,我给解压到了D:/Users/xxxx
(一开始没改名,改名时检测被占用,一看果然这个文件夹是WSA的本体,悲,只能等下次更新的时候找机会换掉)

(和我上一次构建的版本一样,就是不知道里面小版本有没有改,本文会放出本次构建的共享链接)
(云盘校验没通过无法秒传,看样子里面小版本可能修改过,也可能只是文件属性变了)
2、进入文件夹,找到run.bat,运行即可(图中为我上一次构建的安装,稍后会讲到更新MagiskOnWSA,那时候再把我自己的包更新了)

3、等待安装完毕,会自动打开Magisk软件与Play商店,也可能只弹出一个,但是只要能运行即可代表安装完成。我参考的那篇教程里面说,Magisk默认是没开Zygisk,需要手动安装LSposed_Zygisk,但是在本文编写的时候,Zygisk就已经内置进Magisk内了

首先,请勿在微软商店内更新WSA,并且记得关掉微软商店的自动更新
更新方法:删除上一次git克隆文件夹,重新拉取代码并重新构建,得到压缩完的构建包后,先关闭WSA(用适用于Androidtm的windows子系统设置),再解压替换文件夹,并再次运行run.bat,用户数据会被保留
(确实会保留,我那小米12的Win11WSA还在(doge))
此处摘抄原文教程(链接在顶部)
安装WSAHelper(https://github.com/LSPosed/WSAHelper/releases/tag/v1.0),重新恢复开始菜单里的APP图标。
]]>近期需要搭建个简易的小型网站,原想着用服务器面板解决,但是网站程序要求苛刻(如使用PHP函数、安装模块、资源性能分配等),环视了一圈服务器面板也没有找到中意的,不是限制太多就是自身占用过大,因此决定自己搭建配置LNMP三件套来部署网站程序,以达到最佳性能与最小损耗...
上期文章: Debian10系统下LNMP三件套安装与配置——Nginx与初始环境篇
本文将使用手动安装MySQL的方式来介绍流程。
MySQL社区版官网下载地址: MySQL Community Downloads
进入网站,选择系统版本(以本文Debian 10.2为例):

接下来直接点击第一行的 DEB Bundle 右侧下载按钮进入下载页面,无需注册登录账户,直接点击最下方"No thanks, just start my download."即可获取到下载链接,也可以右键复制该超链接,进入SSH使用wegt下载该链接
MySQL 8.9.29下载直链:
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-server_8.0.29-1debian10_amd64.deb-bundle.tar新建文件夹并将下载的tar包移动进去,因为解压会解压出大量依赖与组件包:
mkdir mysql && cd mysql
tar -xvf mysql-server_8.0.29-1debian10_amd64.deb-bundle.tar
rm mysql-server_8.0.29-1debian10_amd64.deb-bundle.tar之后可以在目录里面看到一堆MySQL相关的软件包:

注意:MySQL手动安装软件包是需要顺序的,否则会报错提醒MySQL-xxx未安装(顺序不一定完全一致,此处为个人经验)
dpkg -i mysql-common_8.0.29-1debian10_amd64.deb
apt install libmecab2 libnuma1
dpkg -i mysql-community-server-core_8.0.29-1debian10_amd64.deb
dpkg -i mysql-community-client-plugins_8.0.29-1debian10_amd64.deb
dpkg -i mysql-community-client-core_8.0.29-1debian10_amd64.deb
dpkg -i mysql-community-client_8.0.29-1debian10_amd64.deb
dpkg -i mysql-client_8.0.29-1debian10_amd64.deb
dpkg -i mysql-community-server_8.0.29-1debian10_amd64.deb安装完最后一个软件包后,会自动弹出配置窗口,一般情况下第一个页面是需要设置root密码,输入后回车;第二个页面为确认密码,重新输入一次;第三页选择Use Strong Password Encryption (RECOMMENDED)

最后查看版本号,如果输出正常即为安装成功
mysql -V类似输出:mysql Ver 8.0.29 for Linux on x86_64 (MySQL Community Server - GPL)
在一些平台上,MySQL进程名一般为
mysqld,但是在Debian 10系统环境下,暂不知道是版本问题还是环境问题,这里使用的进程名字是mysql
设置开机启动,并手动启动mysql,最后查看运行状态,如无报错即为运行正常
systemctl enable mysql
systemctl start mysql
systemctl status mysql执行以下命令,执行 MySQL 安全性操作并设置密码(如果前面有设置的话,这步里面设置密码环节可以跳过)
mysql_secure_installation输入指令后,根据下面流程进行配置:
y 并按 Enter 开始相关配置选择密码验证策略强度,建议选择高强度的密码验证策略。输入 2 并回车
y 移除匿名用户y 禁止root远程登录y 删除即可y 即可以下为测试环境下的配置流程图:
有关数据库的操作与用户的增删,本文不再详细描述。
]]>近期需要搭建个简易的小型网站,原想着用服务器面板解决,但是网站程序要求苛刻(如使用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,搭建小型网站性能足够使用
服务器使用腾讯云提供的纯净Debian 10.2镜像,无预装其他环境

进入系统后先更新软件包:
apt update
apt upgrade由于腾讯云的服务器都是预置好软件源的,因此购买大厂的机器后一般无需手动换源即可开箱即用
本文使用的Nginx版本官网下载链接(适用于Debian buster系统): nginx_1.20.2-1~buster_amd64.deb
CentOS 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$"项,将其与大括号内的内容注释取消掉,并修改:
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文件。
反代、伪静态本文暂且不提及。
]]>