星外之神 Blog

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

binfmt_misc flags与QEMU用户模式下的跨架构构建环境

Acrh Linux龙架构移植踩坑

前言 对于部分架构,出于设备较不常见或者设备性能较低等原因,很多时候开发者并不会选择在该架构下进行打包与分发,而是选择使用QEMU等模拟器进行跨架构构建。 QEMU主要有两种模式,一种是全系统模拟,另一种是用户模式模拟。全系统模拟是指QEMU模拟整个系统,包括CPU、内存、外设等,而用户模式模拟则是只模拟用户空间,不模拟内核空间。笔者在之前的测试中,发现对龙架构使用QEMU全系统模拟时,...

varallel开发踩坑

一个用于并行执行命令的Vala命令行工具

前言 笔者曾经在批量并行的图片转码一文中介绍了parallel这个工具,它可以将多个命令行工具的输出进行并行处理,从而充分利用电脑的性能;也可方便地实现参数组的输入,代替较复杂的shell循环等代码(还可以通过多组参数代替嵌套循环等操作)。然而,parallel是一个perl程序,包含多达15000行代码,不支持Windows平台,也较难以维护。为了解决这些问题,笔者决定用Vala语言开发...

修复WPS Office的Fcitx5输入法问题

在KDE Wayland的Fcitx5建议设置下修复WPS Office的输入法问题

前言 以前,Fcitx5一般会要求用户在/etc/environment中添加有关环境变量的配置,例如: XMODIFIERS=@im=fcitx GTK_IM_MODULE=fcitx QT_IM_MODULE=fcitx SDL_IM_MODULE=fcitx GLFW_IM_MODULE=ibus 然而,在Wayland合成器中,如果存在这些环境变量,可能会遇到Fcitx5闪烁...

使用Btrfs Balance调整分配过多的元数据空间

减小Btrfs元数据空间分配大小的方法

前言 笔者只有单一设备,并没有组RAID,一直以来,笔者本以为自己用不上Btrfs的数据平衡功能。 然而,笔者最近却发现,笔者使用的Btrfs文件系统Metadata不知为什么,分配空间达到了96 GiB(加上默认的DUP就是192 GiB),而实际却仅使用了不到4 GiB(DUP后也不到7 GiB)。分配给Metadata的空间是无法给Data使用的,因此文件系统实际可用空间浪费严重。...

体验Bcachefs

一个代码简洁、功能强大的CoW文件系统

前言 Bcachefs是一个功能强大的CoW文件系统,支持快照、压缩、加密、RAID、缓存、多设备、多磁盘等现代文件系统的特性,同时,作者Kent Overstreet声称也具有较好的稳定性,称其为: “The COW filesystem for Linux that won’t eat your data”. 笔者早在Bcachefs合并到主线之前就已经开始尝试Bcache...

KDE Plasma的Wayland现状

在KDE Plasma 5.27中使用Wayland

前言 近几年来,Wayland作为X11的替代方案,已经逐渐成为Linux桌面环境的主流选择。RedHat、SUSE、Canonical等主流Linux操作系统厂商目前都一致力挺Wayland,而X11的维护力量也在逐渐减弱。GNOME桌面环境率先默认启用Wayland,而像Fedora这样比较激进的发行版甚至在积极准备移除X11。 然而,目前大多数主流桌面环境仍然默认使用X11。KDE...

将Squashfs用作日常归档压缩格式

使用完整文件系统代替传统压缩格式

前言 笔者曾经在Linux下的备份方式小结一文中总结过Linux下的备份方式,其中就提到过使用Squashfs进行数据存档与备份的方法。 事实上,Squashfs的适用场景不仅仅局限于备份,它还可以用于日常归档压缩,甚至可以用于替代传统的压缩格式。Squashfs的支持也非常广泛,几乎所有的Linux发行版都支持Squashfs,而Windows和macOS也都有Squashfs的解压工...

批量并行的图片转码

快速将大量图片转码为所需的格式

前言 相机、手机等设备拍摄的照片通常输出为JPEG格式,而直出的JPEG图片不仅压缩率低,而且还为了保存图片上的无用噪点而浪费了大量的存储空间。笔者经常需要将这些JPEG图片转码为WebP格式,以节省存储空间。 笔者以前通常使用bash、zsh或fish的for循环,调用各编解码器的命令行工具来实现批量转码,但是WebP等图片往往无法多线程编码,在转码时只有一个核实际参与计算,导致电脑性...

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

非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)中的相关内容生成,由wszqkzqk进行修改,采用CC-BY-SA-4.0协议发布 玻璃-液体转变 玻璃-液体转变(glass-liquid transition)是指非晶材料或在非晶区的半晶材料,在温度或压力的变化下,由硬而脆且光亮透明的玻璃态逐渐转变为黏性或橡胶态的渐进可逆转变。这种转变不是一种热力学平衡状态之间的相变...

分子对接

分子对接的基本介绍

本文初稿由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),可以通...