标签 Linux 下的文章

Linux 与 Windows 双系统共享蓝牙鼠标

起因

本着“师夷长技以制夷”的想法,装了一个 Windows 10,装完过后发现蓝牙鼠标需要重新配对,切换系统过后又需要重新配对……

看样子蓝牙的配对信息是存储在系统上的,所以要实现在切换系统后不需要重新配对就能正常使用蓝牙鼠标的话,基本思路应该是手动修改其中一个系统上的配对信息使其与另一个系统一致。

查了一圈,蓝牙 3.0 和 4.x 的配对信息还很不一样,总的说来 4.x 的信息量更大,需要改动的参数也多一些,本文主要针对蓝牙 4.x 的鼠标。

基本步骤

  1. 先在 Linux 下配对蓝牙鼠标(用于生成配置文件)
  2. 切换到 Windows 下配对蓝牙鼠标(用于读取配对信息)
  3. 修改 Linux 下的配对信息与 Windows 一致

当然也可以反过来做,修改 Windows 下的配对信息与 Linux 下一致,但是不推荐那样做。

读取 Windows 下的蓝牙配对信息

Windows 的蓝牙配对信息存储在注册表中:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\BTHPORT\Parameters\Keys\<本机蓝牙 MAC>\<鼠标蓝牙 MAC>

其中的 MAC 地址不带分隔符,并且这里需要系统权限才能访问,我找到两个方法来读取这部分信息。

- 阅读剩余部分 -

HAProxy 做 TCP 反代获取客户端真实 IP

大约半年前,因为一些奇怪的原因,需要给博客添加 HAProxy 做基于 TCP 的反代,配置倒也简单,但是遇到一个很麻烦的问题,就是服务端无法获取到客户端的真实 IP 了,所有访问都有一个共同的来源:127.0.0.1,简直可怕。

当初解决这个问题也花了点时间,Google 了好几圈总算给解决了,分享一下解决方案。

全局配置就不贴了,关键配置如下:

frontend ft_ssl_vip
  bind <公网 IP>:443
  mode tcp

  timeout client 5m

  tcp-request inspect-delay 5s
  tcp-request content accept if { req_ssl_hello_type 1 }

  use_backend bk_ssl_nanpuyue_com if { req.ssl_sni -i nanpuyue.com }
  use_backend bk_ssl_nanpuyue_com if { req.ssl_sni -m end .nanpuyue.com }
  default_backend bk_ssl_nanpuyue_com

# nanpuyue.com
backend bk_ssl_nanpuyue_com
  mode tcp
  server http 127.0.0.1:2066 send-proxy

frontend ft_ssl_nanpuyue_com
  mode http
  bind 127.0.0.1:2066 ssl crt /path/nanpuyue_com.pem accept-proxy
  option forwardfor
  reqadd X-Forwarded-Proto:\ https
  default_backend bk_http_nanpuyue_com

backend bk_http_nanpuyue_com
  mode http
  server http 127.0.0.1:80
  server https 127.0.0.1:443 ssl verify none

- 阅读剩余部分 -

GRUB 与系统引导

本文是发到内刊上的一篇文章,感谢帮忙找 typo 的肥猫 ~


计算机引导过程

固件

确切的说,固件(Firmware)也是一种软件,但是它比一般的软件(例如操作系统或者运行在操作系统上的应用软件)更接近硬件,一般是由硬件厂商在硬件出厂前直接固化到硬件内部的芯片上。有些固件是可以升级的,例如大部分计算机主板的固件,这里我们讨论的也主要是计算机主板的固件。

现在我们能看到的计算机主板固件主要上分为两种:BIOS(Legacy BIOS)和 UEFI,BIOS 历史悠久,数十年没有太大的变化,已经不太适应计算机的发展,因而催生了更加先进和适应时代需求的 UEFI。

BIOS 是 Basic Input Output System(基本输入输出系统)的缩写,如前文所说,它也是可执行的程序代码,计算机启动时会首先将 BIOS 载入到内存并执行,并由 BIOS 来完成硬件检测和初始化,然后启动磁盘上的操作系统。

UEFI 是 Unified Extensible Firmware Interface(统一可扩展固件接口)的缩写,它是 BIOS 的替代者,并且本着向下兼容的原则,大部分 UEFI 都包含 BIOS 的兼容模块(Compatibility Support Module/CSM),在其设置中也能找到相关的选项。

- 阅读剩余部分 -

详解三种 SSH 端口转发

平时用 ssh 的端口转发功能也不多,总容易忘记,干脆记下来吧。

参数格式

动态端口转发:

ssh -D <local ip>:<local port> <user>@<remote host>

本地端口转发:

ssh -L <listen port>:<dest host>:<dest port> <user>@<remote host>

远程端口转发:

ssh -R <listen port>:<dest host>:<dest port> <user>@<remote host>

下面举例详解这几种转发。

- 阅读剩余部分 -