分类: 软件技术

华为擎云 W510 折腾记

前言去年在朋友推荐下买了这台灵车,虽然物超所值,但一直由于种种原因,没能把资源充分利用上。 首当其冲的就是没有办法使用 Ubuntu 以及 原装的 UOS 以外的操作系统;倒也不是不能安装,只是会出现无限重启的 Bug(又或者是 Feature)。 为了充分利用资源,计划安装 PVE,但当时一直没有发现可用的 PVE/ARM64 镜像。 但在今天…事情有了转机。 PVE/ARM...

记容器内运行 KVM 虚拟化的权限问题

前言一直以来有个想法,想要将大象(OpenStack)塞进冰箱(Docker),像 OpenStack 这样的庞然大物,每次部署都会浪费至少大半个小时。 当然,这个想法在一年前就被本人验证可行了,但是仍存在一些不完善的地方…… 特权模式的KVM虚拟化特权模式,即使用--privileged选项创建容器,在这种场景下,会将宿主机中的设备目录(/dev),毫无保留的暴露到容器中,并且允许使用...

记 macOS 下 Electron GPU 不完整支持的解决方案

前言前段时间,有友人赠予了一枚NVIDIA GeForce GTX 1050 Ti 2 GB,思来想去,这枚只有 2GB 显存的图形卡并不能带动游戏需求;但是作为黑苹果的亮机卡的话,还是绰绰有余的。 于是乎,在 macOS Ventura 13.5.2 (22G91) 上驱动起来后,遇到了不少问题。 多屏窗口不显示问题 解决方案:关闭 “系统设置 - 桌面与程序坞 - 显示器具有单独的空间” 即可...

DinD 场景下IO性能问题分析

前言Docker in Docker(DinD)是一种在容器内运行 Docker 的解决方案,但在未为 DinD 容器使用 Volume 时,内部容器的 Copy-on-Write(写时复制)存储驱动会严重影响性能。 分析当试图在容器内使用 Docker,且不使用 Volume 为内部 Docker 提供存储时,内部 Docker 将无法使用 OverlayFS 作为 Storage Driver...

在 Vite 项目中使用 DataV

前言距离 Vite 发布已经有几个年头,但由于长期维护历史遗留项目,鲜有机会去尝试使用其提升开发效率。 传闻 Vite 较于 Webpack 有将近十倍的性能提升,考虑到开发机的性能难以支撑数千个模块编译的即时响应,以及项目后续对于 Electron 的适配,便决定使用 Vite 来替代原有组件。 但项目迁移途中并不顺利,因为DataV模块迁移后遇到了以下错误: Uncaught SyntaxEr...

使用 Rosetta 建立 Ubuntu x86 开发环境

前言尽管换了 M1 设备也有一年多了,但平时仍然依赖于 x86 平台进行开发,为此不得不单独部署一套 x86 的开发环境在 intel PC 上。 随着 macOS 更新到了 Ventura (13.0.1),以及 UTM 4.0 的更新,现已可以在 Linux 环境下启用 Rosetta 对 x86(含amd64) 应用进行加速。 使用 Rosetta 加速后,在构建项目的速度上甚至几年前的 i...

修复Chroot环境下APT包管理对systemd环境识别问题

前言近期在折腾Chroot环境下的设备时,发现软件包无法更新,得到以下错误: (Reading database ... 77272 files and directories currently installed.) Preparing to unpack .../mariadb-server-10.3_1%3a10.3.34-0ubuntu0.20.04.1_arm64.deb ... Ru...

Gunicorn+GeventWorker环境下fork进程意外结束的问题

前言在使用Gunicorn+GeventWorker托管Flask应用,使用os.fork时出现了以下问题。 Parent changed, shutting down : <Worker xxxx> 本文摘录自本人毕业设计论文。 问题分析通过os.fork创建进程,实际上是将当前进程的内存数据复制了一份给子进程,当子进程发现其不是由Gunicorn主进程所创建时,Gunicor...

通过chroot实现Linux子系统

前言在一些精简的Linux发行版里,很多时候会有无法运行需要某些依赖的程序的情况。 然而,会搭载这种精简系统的设备,一般无法重新安装系统;例如:路由器、手机等其他嵌入式设备。 而且受限于系统内核(缺少cgroup的一些高级特性等),也无法安装docker。 同时,在不同的Linux发行版下,使用的C语言标准库也不尽相同;如:glibc、musl等。 即使CPU支持程序所使用的指令集,使用glibc...

PHP无法获取环境变量解决办法

前言在开发PHP项目时,遇到了无法通过getenv获取PATH的情况,检查phpinfo发现PHP无法获取环境变量。 解决方法 修改php-fpm.conf,添加以下内容即可。 clear_env = no 默认情况下,php-fpm会清除环境变量,以提高安全性。