Category: 技术

Linux修改ELF解决glibc兼容性问题

Linux glibc 问题 相信有不少 Linux 用户都碰到过运行第三方(非系统自带软件源)发布的程序时的 glibc 兼容性问题,这一般是由于当前 Linux 系统上的 GNU C 库(glibc)版本比较老导致的,例如我在 CentOS 6 64 位系统上运行某第三方闭源软件时会报: CentOS 6 自带的 glibc 还是很老的 2.12 版本,而下载的第三方程序依赖 glibc 2.17 版本,这种情况要么自己重新编译程序,要么只能升级系统的 glibc 版本。由于我使用的程序是第三方编写并且是闭源软件无法自己编译,升级 glibc 固然可能能解决问题,但是 glibc 做为最核 […]

Linux C++程序使用Intel OpenCL的问题

Intel OpenCL 问题 最近想在 Linux 环境下使用 Intel 核显测试我们的某个程序,该程序是用 C++ 写的,主要调用 OpenCL 库使用 GPU 进行运算。之前我用 AMD 和 NVIDIA 的显卡都测试过没有问题,还以为会比较顺利,结果在程序刚开始调用 clGetPlatformIDs 检测 OpenCL platform 的时候就直接报错退出了。 我的测试环境使用的是 Intel i3-6100 CPU,该处理器自带 Intel HD Graphics 530 核显,操作系统则是 CentOS 6.9 64 位(比较老,为了和使用环境一致),安装的也是 Intel 官 […]

在Docker容器中使用FUSE文件系统

容器使用 FUSE 的问题 我们一般使用的 Docker 容器都是非特权容器,也就是说容器内的 root 用户并不拥有真正的 root 权限,这就导致很多属于系统管理员的操作都被禁用了。 最近有个在 IBM Bluemix 容器内部挂载 FUSE 文件系统的需求,例如我使用 davfs2 挂载 WebDAV 服务器不出意外地会报错: mount.davfs 命令报错表示无法打开 fuse 设备,而 fuse 设备实际上是存在的(说明 fuse 模块也已经加载了): 从容器内部可以查看到 cgroup 实际允许访问的设备,并没有包含 fuse 设备: 手工允许 fuse 设备自然也是不可行的: […]

使用Software Collections编译最新Linux kernel

关于 Software Collections 使用 Software Collections(SCL)的契机是最近我需要在 CentOS 6 系统上编译最新版本的 Linux kernel,主要用于测试 Btrfs 的数据校验对于 AVX2 指令的支持情况。然而大家都知道 CentOS 6 自带的软件包版本都是非常老的,glibc 维持在 2.12 版本,老的 gcc 4.4 版本则根本就不支持 AVX2 指令,这样编译 Linux kernel 时会自动关闭 async xor 对 AVX2 的支持。 如果要自己动手编译新版本 gcc,这感觉还是有点吃力不讨好,幸好 Red Hat 也注意 […]

复制MIFARE Classic小区门禁卡记录

上个月忙着找房搬家换新住处,住进去发现新小区除了稍有点远的大门,平时方便行人出入的侧门都是必须刷门禁卡的,而房东那只有一张 IC 门禁卡,小区物业也无法办理新卡了,因此想着是不是能用手机模拟或者复制门禁卡的方式自己解决。 尝试手机模拟 由于我使用的华硕 Zenfone 2 手机是支持 NFC 功能的,首先可以用手机读取现有的门禁卡信息,这里我使用的是 NXP 官方推出的 NFC TagInfo App: 从 IC Info 里可以看到小区 IC 门禁卡是最常见的 MIFARE Classic EV1 S50 也就是 M1 1k 卡。 另外 App 下方还提示我的手机不兼容此卡,我们可以在 FU […]

Arukas容器使用ge.tt替代Endpoint域名

ge.tt 与 Endpoint 前面写了一篇介绍日本 Arukas 樱花容器及使用其 Endpoint 域名的文章,目前我在 Arukas 上面跑了一个 Shadowsocks 容器用于路由器自动爬墙。不过还是发现如果 Arukas 容器的开放端口里开启了 UDP 端口(给 OpenWRT 路由器上的 ss-tunnel 用于转发解析被封锁的域名),这种情况下 Arukas 的 Endpoint 地址就基本没办法正常访问了。文章中我写的 OpenWRT 下自动获取 Arukas 容器 Shadowsocks 配置的脚本也经常出错,用起来还是不太方便。 刚好之前为了给其他人分享文件,我还写了一 […]

ge.tt文件分享服务CLI及API的问题

关于 ge.tt 最近我一直在寻找支持直链形式的文件分享服务: 支持通过 cURL 或者公开 API 上传文件生成分享地址; 用户可以通过 wget、cURL 等程序直接下载文件; 上传者后续可以更新文件并保持分享地址不变; 国内的普通用户可以正常访问下载分享的文件。 如果使用 Dropbox、Google Drive 应该也可以实现前面几个需求,但这两个网盘的最大问题在于国内难以描述的墙,而且上传下载还是稍微有点复杂。 以前我使用过 DriveHQ 服务,免费用户支持通过 FTP 方式上传文件(付费用户还支持通过 WebDAV 上传),上传到 Web 分享目录的文件可以直接通过 HTTP 下 […]

Arukas樱花Docker容器及Endpoint体验

Arukas 容器介绍 之前我在了解目前主流的容器服务商时除了 IBM Bluemix 还知道了日本 Arukas 容器,不过一直都没有测试的机会,最近 Arukas 难得给我发了注册通过的邮件,最新的政策显示免费测试期会延长到 2017 年 6 月 30 日(未来收费策略待定)。 下面的基本操作都在 Arukas 控制面板: https://app.arukas.io/ Arukas 容器限制 Arukas 容器还处于免费测试阶段,有一些限制需要先说明: 不支持特权容器,无法使用 TUN/TAP 设备(目前的容器服务商基本都不支持); 没有固定公网 IP 地址,容器可能每隔几天甚至几个小时就 […]

小内存OpenVZ VPS使用UML开启BBR

前言 Bottleneck Bandwidth and RTT(BBR)是 Google 最近提交到 Linux 4.9 版本内核的新 TCP 拥塞控制算法,BBR 相对于 Linux 中已经用了好多年的默认 CUBIC 算法的主要改进是在有一定丢包率的网络链路上充分利用带宽,另外也能有效降低延迟。这对于很多使用美帝 VPS + Shadowsocks 爬墙方案的人来说应该还是比较有用的,目前从一些更新了内核开启 BBR 的 KVM VPS 用户的反馈来看效果也还是不错的。 我目前使用的爬墙服务器是 AlphaRacks 的低配 OpenVZ VPS,内存只有 96 MB,到国内的线路质量倒还 […]

PHP 7找回MySQL扩展解决WordPress问题

PHP 7 使用 MySQL 的问题 最近将 VPS 上的博客程序都迁移到 Bluemix 容器上之后,运行起来倒还算稳定,前两天手贱将 Bluemix 系统上的 LNMP 环境更新到了 1.3 版本,顺带地把 PHP 也更新到 7.0.7 版本了,不过更新完成之后访问博客就碰到了 WordPress 报错: 这才想起来 PHP 7 已经完全移除了 MySQL 扩展支持,通过 phpinfo 也能看到老的 mysql_ 系列的函数都不能使用了,一般建议使用新的 PHP mysqli 或者 pdo 扩展进行替换。 我的博客程序使用的还是 WordPress 3.6 版本,自然不支持 PHP 7, […]