Surface RT 安装 Linux
零:起因
在家无事找出来一台老旧设备 Surface RT 一代的,系统最新是 Windows 8.1 arm版,应用商店都已经打不开了
虽说有破解方法,能运行些软件,但怎么说也不是任意安装,所以局限性还是相当的大,基本上就是个泡面盖子了
之前刷过 Linux,但实用性并不是很强,非常之卡,但现在实测已经可以使用了,还是比较流畅的,而且软件都可以随便安装了,所以就安装在 EMMC 硬盘中,直接替换掉原系统了
现在状态就是开机就是直接进 Linux 了,一下子就有了相当可观的使用性,并不比一些老平板差,虽然说明中说没有二级缓存啥的,但实际使用中感觉不出来差多少,最少现在使用绝对够用了,也许有了会性能更好
该方法的官方网站:Welcome - Windows RT Devices GitBook,网站都是英文的,可以用浏览器的翻译直接翻译,基本都能看懂
下面是基本步聚,其实真是非常简单
-
先破解安全启动:就是用 Yahallo 工具,说明及工具下载地址:Tegra Jailbreak USB - Windows RT Devices GitBook
-
然后按说明安装 Linux 即可,官方用的是 树莓派的 Linux 也是非常好用的,说明及工具下载位置地址:Raspberry Pi OS - Open Surface RT
-
主要操作:
从USB引导:RT 关机状态『按住音量减不松,再按一下开机键,直到显示了U盘系统的引导,就可以松开音量减了』
分区名说明:
mmcplk0p2:mmcplk0(emmc硬盘)p2(第二个分区)
mmcplk1p2:mmcplk1(RT自带读卡器)p2(第二个分区)
sda2:sda(USB接的U盘或TF卡)2(第二个分区)
壹:破解安全启动
先找一台可以正常操作的电脑
一、先下载破解工具
工具名:Tegra_Jailbreak_USB.zip 网页上面有
二、解压工具
将压缩包内容直接解压到一个被格式化为 FAT32 的U盘中(TF卡也行)
注意:一定是要压缩包中的内容,应该是包含有 efi 等多个文件夹及文件,都要放在U盘的根目录下,新手有可能会把解压时生的同压缩包名的目录放里,那样是不行的
三、破解安全引导 - 安装 Golden Keys
官方方法很多,但咱选个最简单的就行,RT 关机,最好弄个USB HUB,接上键盘,再接上 U盘
-
按住 音量减 不松手,再按住开机键,等看到 Surface 的开机画面就可以松开机键,但音量减还要按住,直到开机的 Surface 字样没了,此时应该就是进入了U盘的引导页面,此时就可以松开音量减了,以后只要说从USB启动就是这么操作,如果还是进入了正常的系统就说明失败了,再重新操作或是按官方说明从 Windows 下安装也可以
-
上下键选 Install Golden Keys 后按回车,再选 Accept and Install 后按回车(没有键盘的话可能用音量加减键做为上下,屏幕下面的 Win 田字标可以做回车)
-
有可能会重启,不过无所谓,继续安装,反正就是从开机时就按住音量减就可以从U盘启动,接着安装下一步
四、破解安全引导 - 安装 Yahallo
-
重新从U引导后 选择 Install Yahallo 按回车就可以了
-
可以按说明到 Windows 中检查一下破解情况
五、破解失败的几个情况
一般破解都没问题,但之前查资料时发现有同学破解就会失败,说是因为最后微信有个两个更新锁住了破解还是引导还着,一般这种情况就是将系统恢复一下或重新安装一下,不用更新,一般都可以正常破解
破解完成了以后以后也不用管了,反正正常也看不出来,这 RT 也不存在安不安全的问题了,能用就不错了,嘿嘿
下一步就是安装Linux了,就更简单了
贰:安装 Linux
官方说明网站:Raspberry Pi OS - Open Surface RT
注意:官方说明需要两个U盘,其实一个也能搞定,主要目的是为了后面往系统里拷贝模块
一、先下载准备文件
usb-linux-boot.zip:UEFI boot - Open Surface RT
zImage、tegra30-microsoft-surface-rt-efi.dtb:Prebuilt binaries - Open Surface RT (下载 surface-rt-5.17.0-rc7-kernel-inc-modules.zip 文件就可以,解压出来里面就有这些文件,-efi.dtb是为了使用efi方式引导使用的)
二、下载并制作树莓派的启动U盘
树莓派官网:Raspberry Pi OS – Raspberry Pi
现在最新版本是用的 debian12 为基础的
接上U盘,注意会将U盘重分区并清除原数据,所以要用一个空U盘
打开『树莓派镜像烧录器』后,直接点『选择操作系统』即可(前面的选择设备不用管)
选择一个32位的系统(因为 RT 的处理器就是32位的,唉~)
写入前有可能会提示你先配置什么,不过实测并不会自动配置在系统中,所以如果必须设置就瞎一通保存就可以了
然后就安心等待U盘写完就可以了,只要网速好,还是挺快的
三、放入文件到U盘
之前下载的两个压缩文件都解压出来,从中找出需要拷贝以下几个文件到U盘的引导分区中
efi 目录、startup.nsh、zImage、tegra30-microsoft-surface-rt-efi.dtb
注意1:startup.nsh 中路径要改:原root=/dev/mmcblk1p2(意思是从RT的TF卡读卡器引导),改成root=/dev/sda2(如果实际是从RT的TF卡读卡器引导就不用改了)
注意2:官方说明中的引导分区 『boot/fat32』,并不是 Linux 中的 /boot 目录,而且一个分区,分区的类型是 fat32格式的,如果Windows、macOS应该都只会显示这一个U盘分区,另一个U盘分区因为是LINUX格式的,所以无法显示,但如果使用的Linux系统,那应该就会显示两个分区
四、U盘插入 RT
是插入到RT的哪里要看 startup.nsh 中的设置
mmcblk1p2 就是 TF卡插入RT的读卡器中,sda2 就是接在RT的 USB口中
然后关机状态,使用USB引导即可(上面写过,长按音量减+按一下开机键,直到Linux 开始引导)
注意:最好先接个键鼠,因为新系统需要先设置,新系统是没有虚拟键盘的
安装系统模块:
# 将下载的 surface-rt-5.17.0-rc7-kernel-inc-modules.zip 压缩文件中 lib/modules/5.17.0-rc7-next-20220310-g526f003fca07 目录,拷贝到 linux 系统中,要不然很多功能可能都不好用 # 我是直接将5.17。。。这个目录直接复制到了 Linux 系统 U盘的引导目录中拷贝过去的,也可以使用另一个U盘拷贝也行,无所谓,只能能放在系统的 /lib/modules 目录中就可以,下面的是我的操作 sudo mount /dev/sda1 /mnt cd /mnt sudo cp -r /mnt/5.17.0-rc7-next-20220310-g526f003fca07 /lib/modules/ cd sudo umount /mnt
完成后就可以重新启动系统使用了(此时还是从U盘启动)
如果只是想体验下,到这就结束了,原系统还能保留不影响,想用LINUX就接入U盘从USB引导即可
五、安装到硬盘
注意:安装到硬盘后原系统都没有了,硬盘分区会都会被重新分区
在U盘引导完 Linux 并设置完成,此时系统已经算是可以正常使用了
选左上角菜单 -> 附件 -> SD Card Copier
第一行是选择U盘驱动器做为来源
第二行是选择emmc做为目的驱动器
必须选中『新分区UUID』的复选框,最后点开始,等待即可,最好没事儿动动鼠标,别让它黑屏,以免出问题
写入完成后的重点操作:
修改引导分区中的 startup.nsh (可能还会有好几个带后缀的 startup.nsh 最好都改下)
此时是要在 RT 中进行修改,而系统中默认是看不到引导分区的,所以可以使用以下命令
# 将硬盘的引导分区加载到 /mnt 目录中 sudo mount /dev/mmcblk0p1 /mnt cd /mnt ls -lh startup.nsh* #可以查看到要改的这些文件 sudo nano startup.nsh #修改root=/dev/sda2 不管原内容是什么,最终应为root=/dev/mmcblk0p2 # 用nano 用vi 都可以,习惯哪个用哪个,改完保存后就可以了
Linux系统此时已经完整的安装在了 RT 的硬盘中了
此时就可以关机,拨到所有U盘,并直接正常开机(就是平常按一下开关的那种)
别忘记可以从硬盘中正常开机后需要扩展一下硬盘,要不然太浪费空间
打开终端 -> 输入 sudo raspi-config -> 选择 Advanced Options -> 选择 Expand Filesystem 此时硬盘所有的空间就都是可以使用的了
叁:后续
触摸屏的键盘
sudo apt install onboard sudo apt install at-spi2-core
设置可能会是乱码
一些问题
触摸屏该怎么点出鼠标右键
一些软件中文是乱码
开关机键没法熄屏,但自动熄屏后可以通过开关机键点亮
其它问题慢慢再发现
可以干点啥呢
反正32位LINUX能干的它都能干,但不建议在上面跑数据库,根据以前用开发板的经验发现,这种固态硬盘跑数据库特别容易坏,注意是特别容易坏,别的都没问题,所以数据库文件一定要放在外置的硬盘上,最好是机械盘,准成些
相关文章:
Surface RT 安装 Linux
零:起因 在家无事找出来一台老旧设备 Surface RT 一代的,系统最新是 Windows 8.1 arm版,应用商店都已经打不开了 虽说有破解方法,能运行些软件,但怎么说也不是任意安装,所以局限性还是相当的大࿰…...

C++中的函数重载:多功能而强大的特性
引言 函数重载是C编程语言中的一项强大特性,它允许在同一个作用域内定义多个同名函数,但这些函数在参数类型、个数或顺序上有所不同。本文将深入探讨函数重载的用法,以及它的优势和应用场景。 正文 在C中,函数重载是一项非常有…...

数据分析实战 | K-means算法——蛋白质消费特征分析
目录 一、数据及分析对象 二、目的及分析任务 三、方法及工具 四、数据读入 五、数据理解 六、数据准备 七、模型训练 编辑 八、模型评价 九、模型调参与预测 一、数据及分析对象 txt文件——“protein.txt”,主要记录了25个国家的9个属性,主…...

HTTP协议详解-下(Tomcat)
如何构造 HTTP 请求 对于 GET 请求 地址栏直接输入点击收藏夹html 里的 link script img a…form 标签 通过 form 标签构造GET请求 <body><!-- 表单标签, 允许用户和服务器之间交互数据 --><!-- 提交的数据报以键值对的结果来组织 --><form action&quo…...
acwing算法基础之搜索与图论--prim算法
目录 1 基础知识2 模板3 工程化 1 基础知识 朴素版prim算法的关键步骤: 初始化距离数组dist,将其内的所有元素都设为正无穷大。定义集合S,表示生成树。循环n次:找到不在集合S中且距离集合S最近的结点t,用它去更新剩余…...
Amazon EC2 Serial Console 现已在其他亚马逊云科技区域推出
即日起,交互式 EC2 Serial Console 现也在以下区域推出:中东(巴林)、亚太地区(雅加达)、非洲(开普敦)、中东(阿联酋)、亚太地区(香港)…...
hdlbits系列verilog解答(100输入逻辑门)-39
文章目录 一、问题描述二、verilog源码三、仿真结果一、问题描述 构建一个具有 100 个输入in[99:0]的组合电路。 有 3 个输出: out_and: output of a 100-input AND gate. out_or: output of a 100-input OR gate. out_xor: output of a 100-input XOR gate. 二、verilog源…...
Python 中 Selenium 的屏幕截图
文章目录 使用 save_screenshot() 函数在 Python 中使用 selenium 捕获屏幕截图使用 get_screenshot_as_file() 函数在 Python 中使用 selenium 捕获屏幕截图使用 Screenshot-Selenium 包在 Python 中使用 selenium 捕获屏幕截图总结我们可以使用 Selenium 在自动化 Web 浏览器…...
scrapy发json的post请求
一 、scrapy发json的post请求: def start_requests(self):self.headers {Content-Type: application/json}json_data {"productName": "", "currentPage": "1", "recordNumber": "10", "langua…...

一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
目录 1解题思路: 2代码如下: 3运行结果: 4总结: 5介绍: 1解题思路: 利用循环(穷举法)来 对 所 需要的数 进行确定 2代码如下: #include <stdio.h>int main() …...

自主开发刷题应用网站H5源码(无需后端无需数据库)
该应用使用JSON作为题库的存储方式,层次清晰、结构简单易懂。 配套的word模板和模板到JSON转换工具可供使用,方便将题库从word格式转换为JSON格式。 四种刷题模式包括顺序刷题、乱序刷题、错题模式和背题模式,可以根据自己的需求选择适合的模…...
java 读取excel/word存入mysql
引入依赖 <!--poi--><dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>4.0.1</version></dependency><dependency><groupId>org.apache.poi</groupId><artif…...

11.(vue3.x+vite)组件间通信方式之ref与$parent、$children
前端技术社区总目录(订阅之前请先查看该博客) 示例效果 注: (1)ref 加在标签(div等)上,是拿到dom 对象 (2)ref加上组件上,拿到的是组件的引用 (3)让父组件获取子组件的数据或者方法需要通过defineExpose对外暴露,另外让父组件获取子组件的数据或者方法需要通过d…...

[工业自动化-12]:西门子S7-15xxx编程 - PLC从站 - ET200 SP系列详解
目录 一、概述 1.1 概述 二、系统组成 2.1 概述 2.2 与主站的通信接口模块 2.3 总线适配器 2.4 基座单元 2.5 电子模块 2.6 服务器模块 一、概述 1.1 概述 PLC ET200 SP 是西门子(Siemens)公司生产的一款模块化可编程逻辑控制器(PL…...

消息队列简介
消息队列 在认识rabbitMQ之前,我们需要先认识下消息队列。 消息队列,一般简称为MQ(Message Queue)。先不管消息(Message)这个词,先看看队列(Queue)。 队列就是一种先进先出的数据结构。 所以消息队列可以简单理解为&a…...
SQL中实现汉字的拼音首字母查询
由于汉语拼音首字母也就23个,该方法利用汉字字符按拼音字母排序的特点来生成对应的拼单首字母,只需找到这23个汉语拼音首字母中分别排序在第一的汉字生成23条临时表数据用于参照,即可简单实现汉字匹配拼音首字母 CREATE FUNCTION f_GetPyAcr…...
今天知道LiveData的ktx是真的香
主要还是认知问题,Android 官网从一开始就在推ktx,现在都已经2. 版本了,但是呢,因为之前没有从0开始写过一个Kotlin的APP,就陷入了一个JAVA 思维,在JAVA 中我们知道要做到像协程这么处理不是不能࿰…...
SpringBoot中的桥接模式
桥接模式是一种结构型设计模式,它的主要目的是通过将抽象部分与实现部分分离,提高系统的灵活性和可扩展性。在桥接模式中,有四个主要参与者:抽象类、具体抽象类、桥接类和具体类。 抽象类是定义了抽象方法的基类,这些…...

AI爆文变现脚本:易用且免费的自动写作脚本更新了
之前给大家分享的AI爆文变现写作脚本 由于时间仓促,加上我对很多东西不熟悉 免费版本对新手小白来说,安装部署起来是非常的困难 于是这几天我加班加点把整个软件的部署简化 现在无需复杂的环境配置安装,下载配置下就可以使用了。 免费版…...
代码随想录算法训练营Day 49 || 123.买卖股票的最佳时机III 、188.买卖股票的最佳时机IV
123.买卖股票的最佳时机III 力扣题目链接(opens new window) 给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你最多可以完成 两笔 交易。 注意:你不能同时参与多笔交易(你必须…...
[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解
突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 安全措施依赖问题 GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...
SkyWalking 10.2.0 SWCK 配置过程
SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外,K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案,全安装在K8S群集中。 具体可参…...

Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例
使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件,常用于在两个集合之间进行数据转移,如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model:绑定右侧列表的值&…...
QMC5883L的驱动
简介 本篇文章的代码已经上传到了github上面,开源代码 作为一个电子罗盘模块,我们可以通过I2C从中获取偏航角yaw,相对于六轴陀螺仪的yaw,qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...
linux 错误码总结
1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...

Redis数据倾斜问题解决
Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中,部分节点存储的数据量或访问量远高于其他节点,导致这些节点负载过高,影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...
2023赣州旅游投资集团
单选题 1.“不登高山,不知天之高也;不临深溪,不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...

【从零学习JVM|第三篇】类的生命周期(高频面试题)
前言: 在Java编程中,类的生命周期是指类从被加载到内存中开始,到被卸载出内存为止的整个过程。了解类的生命周期对于理解Java程序的运行机制以及性能优化非常重要。本文会深入探寻类的生命周期,让读者对此有深刻印象。 目录 …...

vulnyx Blogger writeup
信息收集 arp-scan nmap 获取userFlag 上web看看 一个默认的页面,gobuster扫一下目录 可以看到扫出的目录中得到了一个有价值的目录/wordpress,说明目标所使用的cms是wordpress,访问http://192.168.43.213/wordpress/然后查看源码能看到 这…...