星外之神 Blog

天下难事,必作于易;天下大事,必作于细

免提权验证挂载本地存储设备

非USB设备挂载设置

去年就打算写这篇博客来记录一下,现在才想起来,简单写一下吧( 前言 主流Linux发行版一般可以使用udisks2来方便地挂载存储设备。然而,默认情况下,udisks2挂载USB设备不需要手动输入密码,而挂载非USB设备需要手动输入密码,这样的行为不仅不方便,还会影响KDE等桌面环境的自动挂载功能。 笔者在这里介绍一种方法,可以让udisks2挂载非USB设备时不需要手动输入密...

使用WebP编码超高像素图像

将2亿像素的图像编码为WebP格式

前言 WebP是一种由Google开发的图像编码格式,同时支持无损压缩和有损压缩,其在压缩率与视觉质量上均优于JPEG或PNG,同时还支持透明度与动画。 而相比较新、压缩率更高的AVIF格式,WebP目前的支持要广泛得多:Google Chrome、Mozilla Firefox、Microsoft Edge、Opera、Safari、Android、iOS、各搭载了FFmpeg的Lin...

免拆机免root权限查看小米手机的闪存编号

硬件信息查询方法

前言 本文主要讨论如何在不拆机、不root的情况下查看小米手机的闪存编号 小米手机的闪存编号在手机的设置等自带应用中无法查看。目前,网上的多数查看方法都需要root权限或者拆机,笔者在这里总结一下如何在不拆机、不root的情况下查看小米手机的闪存编号。 步骤 笔者的设备为Redmi Note 13 Pro+,搭载MIUI 14与Android 13。 小米的MIUI系统自带...

2023年的刷机

为小米8 SE刷入LineageOS 20

刷机的时代其实早已过去,但对于一些老旧的设备来说,刷机是令其焕发新生的一种方式。 前言 笔者最近重新从iPhone切换到搭载Android系统的小米Redmi Note 13 Pro+,原来作为Android系统备用机(以防iOS不支持一些功能)的小米8 SE完全失去了作用,小米8 SE发布于2018年,距今已有5年,MIUI的更新也已经停止在MIUI 12.5。为了找回当年刷机...

使用Stellarium观月

LCPU中秋游园会活动

前言 Stellarium是一款开源的天文模拟软件,目前基于Qt6与OpenGL技术,采用了与Linux内核相同的GNU GPLv2许可证分发,可以模拟天空中的恒星、行星、卫星、星系等天体的运行,还可以模拟日食、月食、流星雨等天文现象。Stellarium的模拟效果非常逼真,广受天文爱好者赞誉。 北京大学Linux俱乐部将在中秋游园会暨社团招新活动中使用Stellarium演示虚拟天空,...

Linux下的快速重启

systemd的特殊重启方式

前言 Linux下有很多可以用于重启的命令,例如reboot、shutdown -r和sudo systemctl reboot等。然而,前面列出的这些命令都是执行完整重启的命令,会关闭所有的进程,然后从UEFI引导程序重新启动系统,重启耗时较长。 本文简单介绍在Linux下快速重启的方案。 kexec 首先是较为知名的kexec。kexec是一个用于加载内核镜像的命令,可以在绕过U...

玻璃转化

Wikipedia条目推荐

本文采用CC-BY-SA-4.0协议发布,来自我扩充、编辑、重写的Wikipedia条目玻璃转化,由于个人水平限制,本条目难免会有知识谬误以及描述不清等情况,欢迎读者在维基条目中编辑修改或对本网站在GitHub上的源代码提供Pull request,也欢迎在评论区多多指教。 玻璃转化(glass transition)又称玻璃化转变,是玻璃-液体转变(glass-liquid tr...

分子对接

分子对接的基本介绍

本文初稿由New Bing根据Wikipedia (en)中的相关内容生成,采用CC-BY-SA-4.0协议发布 分子对接(macromolecular docking)是分子模拟的重要方法之一,其本质是两个或多个分子之间的识别过程,其过程涉及分子之间的空间匹配和能量匹配。分子对接方法在药物设计、材料设计等领域有广泛的应用。 背景 大多数蛋白质的生物学作用,例如它们与哪些其他大...

用EROFS进行存储与备份

试用EROFS文件系统

本文封面背景图采用CC-BY-SA-4.0协议,来源于Wikipedia 前言 本文主要讨论EROFS文件系统的使用 EROFS是一个只读文件系统,主要由Gao Xiang开发,在Linux 5.4中合并到主线内核。EROFS的设计目标是提供高性能、低资源开销的只读文件系统,设计上主要针对的场景是ROM、系统分区、应用分区等较轻量级的手机或者嵌入式环境。笔者在这里对ER...

在systemd-nspawn容器中root登录Arch Linux

容器使用

前言 在systemd-nspawn容器中使用root登录Arch Linux时,会发现即使输入正确的密码,也会提示密码错误。这是因为Arch Linux的安全策略仅允许root用户在console、tty1、tty2、tty3、tty4、tty5、tty6、ttyS0、hvc0这些终端登录,而容器中的终端并不在这些终端列表中。 解决方法 解决方法很简单,只需要在容器中的/etc/se...

使用FFmpeg进行声道调整

FFmpeg常用功能使用回顾

前言 平时,我们可能会遇到部分视频文件的音频使用的是5.1、6.1甚至7.1声道,一般封装在dts或ac3格式中,而我们正常压缩的视频往往不需要这样高保真的音频,可以采用AAC、MPEG或是OPUS等方式有损压缩,大幅节省音频空间。同时,我们一般的设备也不能够支持这么多声道,因此,我们可以将这些高保真的音频转换,压缩到2个声道,即左声道和右声道,这样可以大幅减小音频文件的体积,同时也避免了...

Markdown Math 及 mhchem 测试

在 Markdown 中使用数学公式及化学式

前言 本文主要讨论在 Markdown 中使用数学公式及化学式的方法 MathJax 在 Markdown 中使用 MathJax 的方法是在 Markdown 文件的头部添加以下内容: <script src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"...

在QEMU User模式下测试龙芯新世界软件

轻量级龙芯新世界测试环境

前言 本文主要讨论使用 QEMU User 模式下测试龙芯新世界软件的方法 笔者之前写过一篇使用QEMU配置龙芯新世界环境,那篇文章主要介绍了如何在完整的 QEMU 虚拟机中运行龙芯新世界的环境,但是这种方法的缺点是只能利用宿主机的 4 个核心,因此性能较低;而且,完整模拟的方法环境较重,不够简洁。 本文在此提供一种更加轻量、更能利用宿主机性能的方法。 环境配置 本方法的轻...

Linux双音频设备输出

在Linux下实现双音频设备输出

前言 本文主要讨论在Linux下实现双音频设备输出的方法 方法 pactl命令可以用来控制音频输出设备,通过pactl list sinks可以查看当前的音频输出设备列表,通过pactl set-default-sink可以设置默认的音频输出设备。 我们还可以用pactl来实现双音频设备输出,执行: pactl load-module module-combine-sink...

分子印记聚合物

Wikipedia条目推荐

分子印记聚合物 分子印迹聚合物(MIP) 是一种是一种使用分子印迹技术加工而成的聚合物,该技术在聚合物基质中留下空腔,对选定的“模板”分子具有亲和力。制作 MIP 的过程通常涉及在模板分子存在下引发单体聚合,然后将模板分子提取出来,留下与之互补的空腔。这些聚合物对原始分子有亲和力,并且已经用于化学分离、催化或分子传感器等应用领域。相关研究可以追溯到20世纪30年代。 分子印迹技术的最新技...

小新笔记本的Linux控制调优

特异性调优方法

前言 本文主要讨论为小新笔记本的Linux系统添加一些控制调优的方法 电池养护模式 联想提供了一个管理工具,可以设置笔记本电池的养护模式,即让电池充电到55%-60%时停止充电,但这个工具只提供Windows版(笔者甚至在Windows下也没有安装这个软件)。 在Linux下,可以通过内核方法或者ACPI方法实现这个功能。 内核方法 小新的电池养护模式配置文件在/sys/...

Btrfs文件系统修复日记

记录作死之后的力挽狂澜的失败

前言 笔者最近在自己备用盘的Btrfs分区上疯狂作死,先是往同一个里面塞了5个Linux发行版,然后又把整个硬盘设备直接作为虚拟机磁盘使用,启动其中的Linux系统,又尝试在虚拟机的Windows中使用winbtrfs读取其中的内容,又在NTFS分区中安装Linux并将boot分区放在Btrfs中,还尝试同时在宿主机和虚拟机中挂载同一个Btrfs分区,最后在对外置的Btrfs分区有读写时尝...

将本地安装的操作系统作为虚拟机启动

使用QEMU及virt-manager启动本地安装的操作系统

前言 本文主要讨论使用QEMU及virt-manager启动本地安装的操作系统的方法 为了测试开源软件在龙芯架构上的适配情况,笔者在最近将自己所使用的虚拟机由VirtualBox切换到了QEMU,这才发现基于QEMU的虚拟机工具竟然如此强大,具有高度的可定制性。 笔者用QEMU及virt-manager实现了将本地安装的操作系统作为虚拟机启动的功能,在某些情况下可以有效避免多系...

在NTFS分区上安装Linux

使用Ventoy和ntfs3实现的对Windows系统全透明的Linux文件系统布局

前言 本文主要讨论在NTFS分区上安装Linux的方法 笔者实现了完全在Windows可以直接访问的分区上安装完整的Arch Linux操作系统 仅使用FAT与NTFS文件系统实现Linux的文件系统布局 笔者在Linux下使用NTFS时无意中发现现在的ntfs3似乎已经支持了较为完整的Linux权限,也支持软/硬链接等特性,还有ACL、透明压缩支持: 因此意识到:现在在N...

使用QEMU配置龙芯新世界环境

Loongarch新世界踩坑记录

前言 本文主要讨论使用QEMU配置龙芯新世界环境的方法 作为北京大学Linux俱乐部探索项目的重要组成部分,新架构处理器的软件适配工作是我们的重点工作之一。 QEMU配置 安装QEMU 首先,需要安装QEMU。 Linux 这里以Arch Linux为例: sudo pacman -S qemu-full 由于Arch Linux的软件都是最新版,这里不会存在因Q...

USB连接的SSD设备使用trim命令

为USB桥接的NVMe设备添加trim支持

前言 本文主要讨论USB连接的SSD设备使用trim命令的方法 trim命令是用于清除闪存设备上的无效数据的命令。trim可以将文件系统中的删除操作通知给闪存设备,以便闪存设备可以在后台擦除删除的数据。这样可以提高闪存设备的写入性能,也可以减小写放大,延长闪存设备的寿命。 对于USB桥接的NVMe设备,trim命令并不可用,然而,很多硬盘盒都支持类似的命令(unmap),可以通...

数据备份的方法讨论

Linux下的备份方式小结

本文封面背景图采用CC-BY-SA-4.0协议,来源于Wikipedia 前言 本文主要讨论Linux下的数据备份方式 rsync rsync是一个远程数据同步工具,可通过ssh或rsh传输数据,支持匿名传输,速度快,安全性高。 可按文件大小、时间等进行过滤 可使用include和exclude文件进行过滤 可使用--delete参数删除目标端没有的文...

Arch Linux安全启动的终极方案

共享分区下Ubuntu引导的Arch Linux系统

前言 Arch Linux是一个非常优秀的Linux发行版,但是它并不支持安全启动。虽然笔者的笔记本的安全启动长期处于关闭状态,但是笔者还是想把自己的移动硬盘打造成随处可用的移动系统,这就需要支持不依赖于特定设备注册是安全启动。因此,笔者就想到了一个办法,就是在Arch Linux上安装Ubuntu,然后使用Ubuntu的grub引导来引导Arch Linux,并直接使用Ubuntu的内核...

在本地Linux环境使用Gaussian

计算化学软件使用

在计算化学中,Gaussian是一款十分常用的软件,然而,笔者之前在本地Linux下使用它时,却一直出现段错误的报错提示,无法使用。 由于段错误一般是程序设计缺陷导致的,笔者之前一直以为Gaussian的Linux版程序有问题。 Gaussian的文件架构设计很容易让人联想到这点:Gaussian在Linux下的二进制文件具有.exe的后缀名,但是却真的是elf格式;都2023年了G...

使用Ventoy直接引导本地安装的Linux

高级Linux安装及引导方式

前言 Ventoy是一个多系统启动U盘解决方案。笔者首次接触Ventoy是软件开发初期Ventoy的作者在deepin论坛宣传,当时即感受到了这款软件的诸多强大之处: 不用像Rufus、Unetbootin等工具一样需要在更换U盘中的镜像时格式化,只需要重新拷贝镜像文件 支持在U盘中存放多个镜像,在启动时可自行选择 支持更多用于存放镜像的文件系统,如exfat、ntfs、x...

Vala中的类型系统简介

Vala语言知识介绍

Vala语言的类型系统较为多样,可能会让初学者感到困惑,但其实部分内容只是为了减小性能开销,表现上并没有太多区别(对于初学者只用struct和继承自GLib.Object的class其实就行了)。笔者在此对Vala中的类型系统进行简单介绍,可以用来了解那些不常用的类在什么时候有用QwQ。 Vala中的类型 继承自GLib.Object的类 非对象类 紧凑类 不透明紧凑类...

Vala中的所有权简介

Vala语言知识介绍

与Rust等语言类似,Vala中也有所有权的概念。Vala主要采用自动的引用计数进行内存管理,对于支持引用计数的类,需要关注其中有没有循环引用,如果存在循环引用,则需要手动使用week关键字标记,打破循环。Vala中还存在着一些没有在GObject类型系统中注册的紧凑类,这些类型往往不支持引用计数,Vala同样利用所有权与生命周期来管理它们。 本文主要介绍Vala中的所有权操作方式及其意义...

GUI版GtkPacker开发日记(一)

开发概要简记

说明 本项目是笔者的第一个GTK项目,这篇开发日志亦为笔者的学习日志。 大致设计 由于笔者预期到该项目的界面较为简单,而xml格式的UI描述文件的布局工具Glade已经停止更新,不再会支持GTK4,手动编写xml格式的UI描述文件的语法又不太友好,再加上Vala语言实际上相对简洁,笔者决定直接用Vala构建程序的图形用户界面。 然而,笔者在开发没多久便开始后悔没有采用UI描述文件了…...

GTK/Vala开发基础教程

基础教程

本文采用CC-BY-SA-3.0协议发布,但本文代码采用LGPL v2.1+协议公开 前言 本文假设读者已经掌握Vala语言的基本语法。如果对Vala的基本语法仍然不熟悉,推荐首先阅读Vala语言官方教程;如果在学习Vala语言前有C#、Java、C、C++等其他语言的开发经验,也可以阅读面向C#程序员的Vala教程或者面向Java程序员的Vala教程,阅读笔者的相关介绍性博客对快速了解...

使用Meson自动获取并写入软件版本信息

Meson构建工具使用技巧

Meson是GNOME社区目前主要使用的构建工具,也是Vala语言的推荐构建工具。Meson采用了类似于Python的语法,很多配置相比其他构建工具更简洁。 本文简要介绍在Meson作为构建系统的Vala程序中如何获取程序的版本号。 原理 对于C/C++这样预处理功能完善的语言,可以直接在Meson中传递-D编译参数定义含有版本信息的宏,进而方便地在程序中获取版本信息。 然而,Val...