Tag: Linux

Linux实现惠尔顿上网认证客户端

最近公司由于某些特殊原因,需要上一套惠尔顿的上网行为管理系统,局域网内的所有设备在连接互联网时都需要通过惠尔顿上网认证客户端进行登录,或者需要管理员在上网行为管理中设置免监控。 惠尔顿官方只提供了 Windows 上的客户端进行用户登录,也可以访问网页版进行临时登录,效果如下: 不过 Linux 服务器设备就没法登录了,为此我写了个 Python 程序模拟惠尔顿的网页版客户端实现 Linux / macOS 等系统下的上网认证功能。 Python 程序 我编写的 wholeton-auth.py Python 程序可以通过 Pastebin 分享链接 下载,写的很简单粗糙,这里贴出来说明一下: […]

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 官 […]

使用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 也注意 […]

Linux下使用tcpkill工具重置NFS连接

有些时候在 Linux 系统中使用 NFS 挂载远程共享(使用默认的 TCP 方式)之后,偶尔会因为网络异常出现 NFS 连接出错的问题,这种情况下使用任何 ls 或者 df 等等常用的命令对 NFS 挂载目录进行简单的查看操作都可能卡顿几十秒乃至几分钟的时间。 此时如果在别的 Linux 客户机系统上又是可以正常访问 NFS 共享的,而 NFS 服务器端考虑到有多个客户机正在使用不方便直接重启服务,一般只能等待 NFS 挂载连接恢复正常或者重启客户端系统,这样还是很麻烦的,为此我专门找了个使用 tcpkill 命令重置 NFS 连接的方法分享给大家。 tcpkill 命令属于 Dsniff […]

Win10年度更新开启Bash on Ubuntu

关于 Bash on Ubuntu 之前为了能在 Windows 上使用 Bash 等类似 Unix(Linux)系统的体验,我都是安装了 Cygwin、MSYS 等运行环境,都体验上都存在一些问题:Cygwin 上的程序基本都需要重新编译出基于其运行库(cygwin1.dll)的版本,MSYS 虽然提供了 Linux 下常用的开发工具链、移植过的运行库等等,但基本还是受限于 Windows API 本身的。 当我看到 Windows 10 Build 14316 内部预览版时爆出的 Bash on Ubuntu 功能之后还是比较期待的,因为微软并不是以虚拟机的方式运行 Ubuntu 系统,而 […]

Linux下USB 3.0移动硬盘读写错误问题分析

为了解决 Chromebook 上自带 SSD 空间不足的问题,之前我在淘宝上购入了一个绿帆 F200 USB 3.0 移动硬盘盒,该硬盘盒使用的是 JMicron JMS567 这款使用还比较广泛的 SATA 6.0Gbps to USB 3.0 桥接芯片,准备配上 N 年前的神船笔记本淘汰下来的 2.5 寸硬盘给 Chromebook 使用,这样我就可以在 Chromebook 上安装的 Crouton Ubuntu 系统里无碍的使用各种编译开发环境了。 移动硬盘问题说明 首先我在宏碁 W700 Windows 10 平板上接上此移动硬盘建了一个 NTFS 分区并做各种读写拷贝大文件之类的 […]

解决Linux下使用davfs2挂载坚果云的问题

坚果云算是现在国内云存储提供商里比较另类的一个了,没有提供巨大的容量空间,也没有非常多的人使用他的分享功能,但好在基本功能非常全面,桌面同步客户端做的比较清爽,各种类型的客户端基本都能支持,特别像多个用户协作修改文件的同步、文件版本历史这些我比较看重的功能做的还不错。坚果云也有一定的付费用户,稍微坑一点的就是坚果云免费用户的初始容量只有 1GB,之后每个月免费用户可以再上传 1GB 的数据(免费用户同时限制每个月下行流量 3GB)。 坚果云虽然没有提供 API 功能,但好在其算是国内唯一提供 WebDAV 方式访问的网盘(国外的类似网盘也比较少,免费的像 Box.com 就算一个了),这样基本 […]

在Koding云平台上编译Chromebook kernel

最近从淘宝收了一台三星的 Series 3 ARM Chromebook,平时当作上网本用起来还是可以的,可以运行一些 Chrome packaged 原生 App,Chrome OS 的运行速度也还凑合,主要电池续航比一般的笔记本要给力多了,这篇博文的编辑及实际 kernel 编译操作我都是在 Chromebook 上完成的。 由于 Chromebook 底层使用的还是 Linux 内核,装了 Crouton 插件之后可以在 Chromebook 里以 chroot 的方式跑另外的 Ubuntu 系统,只不过 Chromebook 自带的内核模块有些缺失,比如我需要的 binfmt_misc […]

Linux kernel DM map_info接口改为per-bio data

最近在将一个之前版本的 Linux DM(device mapper)驱动移植到新的 3.18 版本 Linux kernel 上出现编译报错,提示 DM target_type 中的 dm_map_fn 等成员函数指针类型不正确。 看看老版本上 dm_map_fn 函数指针的声明: typedef int (*dm_map_fn) (struct dm_target *ti, struct bio *bio, union map_info *map_context); 这个是新的 3.18 版本 Linux 上的形式: typedef int (*dm_map_fn) (struct dm_ […]