想要实现4G上网有两种方式,要么加多一个4G路由器,再通过优先接入;要么通过增加4G模块(可为USB或PCIE等多种接口),直接进行拨号上网。尝试在一款J1900工控机上(该工控机自带SIM插槽),通过增加PCIE接口的美格4G模块SLM750
,进行拨号上网。Windows系统下已测试过,直接安装厂家提供驱动,可以正常上网,说明硬件方面是完全支持的。本文参照厂家提供的嵌入式方案,进行驱动编译安装,并编译拨号软件,最终实现工控机4G上网功能。
系统为Cento 7.6 64bit,基本环境为Basic Web Server安装(理论上与安装环境模式无关,最小安装也可以)。需要下载内核源码,Centos 7.6的内核版本为3.10.0-957
,源码可在此链接下载。另外还需要厂家提供的GobiNet
网卡拨号的驱动及拨号工具源码,一张能4G上网的手机卡或物联网卡,接好模块天线。
将下载好的源码,解压到看到linux-3.10.0-957.21.3.el7.tar.xz
文件,将其放到/usr/src/kernels
文件夹下,并执行如下命令:
1 | $ tar xvf linux-3.10.0-957.21.3.el7.tar.xz // 解压内核源码文件 |
之所以要更改文件夹名称,是因为厂家的GobiNet
驱动源码,Makefile
文件中:
1 | obj-m := GobiNet.o |
如果为其他版本的系统,将文件夹对应修改为uname -r
得到的名称即可。
打开内核源码文件 /3.10.0-957.el7.x86_64/drivers/usb/serial/option.c
,在/* Vendor and product IDs */
下增加宏定义:
1 | /* Vendor and product IDs */ |
在option_ids
结构体数组增加4G模块的VID
和PID
:
1 | static const struct usb_device_id option_ids[] = { |
使用option
驱动,修改 /3.10.0-957.el7.x86_64/driver/usb/serial/option.c
,在option_probe
函数添加如下代码:
1 | static int option_probe(struct usb_serial *serial, |
使用usb-serial
驱动,/3.10.0-957.el7.x86_64/driver/usb/serial/usb-serial.c
,在usb_serial_probe
函数添加如下代码:
1 | serial = create_serial (dev, interface, type); |
### 配置编译参数
1 | $ cd /usr/src/kernels/3.10.0-957.el7.x86_64 # 切换到内核源码所在路径 |
需要说明的是,Centos 6.7默认就开启了device drivers->usb support->usb serial converter support->USB driver for GSM and CDMA modems
和device drivers->Network device support->usb Network Adapters->Multi-purpose USB Networking Framework
这两个组件,所以拷贝原有内核的编译配置即可使用。
执行如下命令开始编译源码,对应的线程数字按照实际机器进行配置,这个过程会比较慢。
1 | $ make -j 8 |
如果有其他错误提示,则安装对应的软件包依赖即可,这里编译后不进行安装,因为内核是一样的,编译内核只是为了编译驱动时能找到一些依赖。
这里采用的是单独编译的方式,所以上一个步骤没有和内核一块打包编译,主要是为了在不动原来内核的情况下使用,以防上面的其他软件运行受影响。
到驱动目录下,执行如下命令:
1 | $ make # 编译驱动 |
正常编译安装的话,不会有其他的警告或者错误,驱动成功后,可以看到新的网卡。一般是ethX
这种格式,但还没有IP地址,需要使用拨号软件。
在厂家提供的源码中,由于是嵌入式的方案,默认获取IP地址的是busybox
中的udhcpc
命令,在udhcpc.c
文件中,可以注释掉这样代码,以及这行代码上面两行的寻找默认配置文件的语句。本文管理网卡的工具是NetworkManager
,Gobinet拨号后,会自动检测网卡状态,进行获取IP地址操作。其它系统根据实际需要,进行修改。本文做出的修改如下:
1 | if (profile->ipv4.Address) { |
执行如下命令编译拨号工具
1 | $ make # 编译 |
如果拨号成功,可以看到对应的网卡会获取到IP地址,并可以正常上网。
可以使用systemctl
管理拨号工具,新建一个文件MeiG-CM.service
,并写入如下内容:
1 | [Unit] |
执行以下命令可配置服务并设置开机自启动:
1 | $ cp MeiG-CM.service /usr/lib/systemd/system/ # 拷贝服务文件到系统目录 |
至此,在Centos 7.6上就可以自动配置MeiG SLM50 4G模块上网。如果卡被停用后·再启用,也不需要重新启动机器,会自动重新拨号。
]]> 之前修好后的MacBook Pro (13-inch, Mid 2010),去年开始就发现偶尔找不到自带的无线网卡,用着也还经常死机。屏蔽了无线功能后,一直只能有线上网。最近终于忍不住,要无线上网了。。。由于囊中羞涩,先找了一块MERCURY(水星)的usb无线网卡MW150US 2.0 (170107),想在macOS Hight Sierra 10.13.5上驱动它。
由于水星这款网卡,不同时期生产的是不一样的芯片,我手头上这块是这样子的:
在苹果系统上的硬件信息如下:
1 | 802.11n NIC: |
在Windows系统上,驱动后显示的网卡名称包含rtl 8188eu
字眼,成功得到对应芯片型号信息。
一开始在网上下载一些别人试过的Mac版本驱动,安装后仍无法使用,有可能是我的系统版本比较新的缘故。转而开始从芯片版本入手,查找其他也使用了这款芯片的厂家,看是否有对应的macOS驱动。后来了解到,Edimax
这个厂家的EW-7811Un 这款 USB 无线网卡,采用了类似芯片,也是最高150Mbps。在Download页面上有如下的驱动列表:
刚好有1.0.1.8这个版本可以支持macOS 10.13,直接下载解压后,有如下四个文件:
双击Installer.pkg
安装驱动
选择继续
选择继续,会弹出如下窗口
同意软件许可协议中的条款
点击安装开始执行安装,这个过程可能需要几分钟,耐心等待
安装完成后会提示需要重新启动,同时在第一次运行会提示需要有额外的权限,允许即可。
如果安装完成,在右上侧状态栏中会出现新的图标,插上USB网卡,成功驱动后会显示周围的WiFi网络:
打开Wireless Utility显示信息如下,左上角的图标和网上其他人发的那些驱动图标一模一样:
现在就可以开心地重新享受无线上网了,其他81XX芯片型号的网卡也可以试试这个厂家的驱动,对于黑苹果用户也可以参考使用。
]]> 由于博客使用的插件较多,文章内包含的图片越多越大,会影响到博客的加载速度,影响访问效果。其中图片对文章加载速度影响较大,如果可以的话,可以使用国内的一些图床,但如果图床挂了,也会导致图片无法访问,迁移麻烦等,所以本博客还是挂在Github上进行访问。为此开始从资源文件大小上进行优化,了解到可以使用Gulp对博客的js、css、img、html等静态资源文件进行压缩。
1 | $ npm install gulp -g |
本博客安装的Gulp版本为4.0.2。
在blog
文件夹(站点根目录)下,安装必备的插件:
1 | $ npm install gulp gulp-minify-css gulp-uglify gulp-htmlmin gulp-htmlclean gulp-imagemin --save |
安装完成后,可以在package.json
下查看到具体的插件版本信息,本博客的插件版本对应信息如下:
1 | "dependencies": { |
在blog
文件夹(站点根目录)下,新建gulpfile.js
文件,并编写如下内容:
1 | // 引入需要的模块 |
这里要注意,压缩过程中排除*min.css
和*min.js
这两类文件,因为这些文件其他人已经经过处理,不需要再进行压缩,否则可能无法正常使用。其他人网上的脚本使用的是imagemin.jpegtran
,由于gulp-imagemin
在7.0.0开始,已经被替换为 mozjpeg
,具体可以在release版本说明中查看。
1 | $ hexo clean// 可以先清除缓存文件和已生成的静态文件(特别是更换主题后需要执行此操作) |
在执行压缩过程中,可能会遇到压缩jpg、压缩png、压缩gif时的错误,或者提示类似于imagemin-*
组件无法找到的错误。此时应该注意,gulp-imagemin
也有对应的相关依赖,如本博客中版本为7.1.0
,有以下特定版本的依赖:
1 | "optionalDependencies": { |
若对应依赖组件的版本有问题,可能会导致压缩对应格式的图片出错,为此建议当出现某个组件压缩失败时,手动安装对应特定的版本,npm
安装软件包特定版本的命令格式如下:
1 | $ npm install imagemin-mozjpeg@8.0.0 // 在软件包后面加上@版本号 |
一次压缩过程输出内容如下:
1 | $ gulp |
index.html
在压缩前的大小为37,326
字节,压缩后为33,537
字节;utils.js在压缩前的大小为15,982字节,压缩后仍为 15,982
字节;main.css在压缩前大小为49,538字节,压缩后为38,183
字节。
由本次压缩可看出,Gulp对图片的压缩效果比较明显,在html、css、js上也有一定的效果,总体上讲还是有比较好的优化。
]]> 今天在用Hexo发布博客文章时,遇到上传Github失败问题,主要提示为
1 | Connection reset by 52.74.223.119 |
由于已经在Git bash
中配置过SSH免密访问,且已正常使用过也没有进行修改,所以排除SSH key配置问题。怀疑是无法连接到github.com
,尝试执行ssh -T git@github.com
得到如下结果:
1 | $ ssh -T git@github.com |
竟然真的无法SSH连接到github.com???增加-v
选项查看一下详细信息,反馈如下:
1 | $ ssh -T -v git@github.com |
在Windows系统下,打开控制面板->系统和安全->Windows Defender 防火墙->高级设置,选择入站规则,点击新建规则,选择端口,在特定本地端口写入22,连续选择下一步三次,输入一个名称(随意命名规则),点击完成,然后再执行命令得到如下格式结果:
1 | $ ssh -T git@github.com |
再尝试发布Hexo博客到Github就可以正常上传了…暂时不知道这其中的原理,即使将刚添加的规则删除了,再打开新的Git bash
窗口也不会出现Connection reset错误了。。。
在站点配置文件中的Site
配置进行如下修改:
1 | language: zh-CN # 简体中文 |
将头像图片放在/blog/themes/next/source/images/
下,然后在主题配置文件下搜索avatar.gif
,修改为要替换的头像图片名称。
1 | # Replace the default image and set the url here. |
在/blog/themes/next/source/css/_common/outline/sidebar
文件夹下编辑sidebar-author.styl
文件,做出如下修改:
1 | .site-author-image { |
在站点配置文件中的Site
配置进行如下修改:
1 | # Site |
新版nexT已增加版权说明模块,只需要在文章开头设置copyright: true
即可,也可以修改~/scaffolds/post.md
文件,设置新建文章自动开启 copyright
:
1 |
|
新建「标签」页面,并在菜单中显示「标签」链接。「标签」页面将展示站点的所有标签,若你的所有文章都未包含标签,此页面将是空的。 底下代码是一篇包含标签的文章的例子:
1 | title: 标签测试文章 |
请参阅官方 Hexo 的分类与标签文档,了解如何为文章添加标签或者分类。
在终端窗口下,定位到 Hexo 站点目录下。使用 hexo new page
新建一个页面,命名为 tags
:
1 | $ cd your-hexo-site |
注意:如果有集成评论服务,页面也会带有评论。 若需要关闭的话,请添加字段 comments
并将值设置为 false
,如:
禁用评论示例
1 | title: 标签 |
新建「分类」页面,并在菜单中显示「分类」链接。「分类」页面将展示站点的所有分类,若你的所有文章都未包含分类,此页面将是空的。 底下代码是一篇包含分类的文章的例子:
1 | title: 分类测试文章 |
请参阅官方 Hexo 的分类与标签文档,了解如何为文章添加标签或者分类。
1 | $ cd your-hexo-site |
注意:如果有集成评论服务,页面也会带有评论。 若需要关闭的话,请添加字段 comments
并将值设置为 false
,如:
禁用评论示例
1 | title: 分类 |
在主题配置文件中搜索busuanzi_count
,做出如下修改:
1 | # Show Views / Visitors of the website / page with busuanzi. |
在主题配置文件中搜索tag_icon
,做出如下修改:
1 | # Use icon instead of the symbol # to indicate the tag at the bottom of the post |
首先在博客目录下执行:
1 | #cmd 进入博客根目录 |
在站点配置文件尾部新增:
1 | # Live2d |
npm
安装需要的宠物文件
1 | npm install {packagename} |
如本博客宠物名为hijiki, 则为 npm install live2d-widget-model-hijiki
,其他宠物包点击live2d-widget-models。详细内容可参考hexo-helper-live2d。
近来发现,之前学习过、实践过的东西,要用的时候经常一时想不起来。习惯性添加进谷歌浏览器的书签,也会因为对方博客文章删除等无法继续看到。特别的是,部署一个东西需要看几个网上资源才可以完成,书签列表越来越长,难以维护。为此,觉得还是很有必要通过写博客的方式进行分类记录,也方便分享经验。本着能折腾就不闲着
的宗旨,在网上查阅有关资料后,决定在GitHub上搭建Hexo个人博客,顺便学习使用Markdown。
在Git的官方下载地址上,选择要安装平台的安装文件进行安装
上述图片是在Mac OS上访问网页的截图,官网一般会自动检测当前电脑的系统,如果是Windows上浏览网页右侧显示会略有不同,当然也可以在Downloads下选择特定平台的版本安装文件。
在Node.js的官方下载地址上,选择要安装平台的安装文件进行安装
这里我选择的是12.16.3 LTS版本进行安装。
在命令行执行以下命令(Mac、Linux下需要加上sudo权限)
1 | $ npm install -g hexo |
在磁盘上创建好一个文件夹(本文章文件夹名为blog),用于保存网站文件,并切换到文件夹后,执行一下命令
1 | $ cd blog |
1 | $ hexo generate # 也可以简写为 hexo g |
1 | $ hexo server # 也可以简写为 hexo s |
默认的本地预览服务地址为 http://localhost:4000 ,需要先确保端口4000没有被占用,以免影响访问网页。不出意外,在浏览器上可以看到如下默认网页。
如果对默认主题风格不满意,可以在hexo的官网上寻找自己喜欢的主题,并下载到theme目录下面。本博客使用的是NexT主题,可执行如下代码下载
1 | $ git clone https://github.com/iissnan/hexo-theme-next themes/next # 若通过git clone下载,后续如果修改了主题配置,则无法提交修改后子模块源码到GitHub,建议下载后手动拷贝到themes文件夹下 |
在 Hexo 中有两份主要的配置文件,其名称都是 _config.yml
。 其中,一份位于站点根目录下,主要包含 Hexo 本身的配置;另一份位于主题目录下,这份配置由主题作者提供,主要用于配置主题相关的选项。
为了描述方便,在以下说明中,将前者称为 站点配置文件, 后者称为 主题配置文件。打开 站点配置文件, 找到 theme
字段,并将其值更改为 next
,以启用 NexT 主题
theme: next
在切换主题之后、验证之前, 我们最好使用 hexo clean
来清除 Hexo 的缓存。重新执行hexo g
和hexo s
即可查看应用新主题后的默认网页。
由于Hexo博客文章是通过提交代码实现,所以需要拥有github传输权限,但是直接使用用户名和密码不够安全,所以我们使用SSH Key来解决本地和服务器的连接问题。
1 | $ cd ~/.ssh |
如果没有任何结果,说明你是第一次使用git;如果仅有known_hosts文件,没有包含id_rsa
字样文件,则需要创建SSH Key:
1 | $ ssh-keygen -t rsa -C "邮件地址" |
然后连续3次回车(默认不添加密码),最终会生成两个文件(id_rsa
和id_rsa.pub
)在用户目录下,打开用户目录,找到.ssh/id_rsa.pub
文件,执行
1 | $ cat id_rsa.pub |
并复制里面的内容(ssh-rsa
开头、你输入的邮件地址
内容结尾),打开你的github主页,进入Settings -> SSH and GPG keys -> New SSH key:
将刚复制的内容粘贴到Key那里,Title按实际需要填写内容,保存后测试是否配置成功。
1 | $ ssh -T git@github.com #注意地址不用改 |
如果提示Are you sure you want to continue connecting (yes/no)?
,输入yes,如果返回如下信息,说明SSH已配置成功:
Hi XXX! You’ve successfully authenticated, but GitHub does not provide shell access.
这里需要注意的是,仓库名字格式为xxx.github.io
,且前缀需要和Username一致,如果你的github账户名为blog,那么对应的的仓库名为blog.github.io。新建成功后,复制SSH地址。
如果不绑定域名,只能通过默认的 xxx.github.io
来访问,如果你想更个性一点,可以在阿里云上注册一个域名(需要实名认证),并到控制台->域名->解析->解析设置->添加记录。
域名解析配置最常见有2种方式,CNAME和A记录,CNAME填写域名,A记录填写IP,由于不带www方式只能采用A记录,所以必须先ping一下你Username.github.io
的IP,然后到你的域名DNS设置页,将A记录指向你ping得到的IP,将CNAME指向Username.github.io
,这样可以保证无论是否添加www都可以访问,如下所示:
此时需要到仓库下面,选择Settings
->options
,并下拉滚动条到GitHub Pages->Custom domain
内填写上你的个人域名地址,如下所示:
可以开启Enforce HTTPS,个人页面Github会自动添加HTTPS证书,不会提示连接不安全的问题。
此时还不能直接通过域名验证,由于阿里云免费的域名解析需要10分钟时间才能完全同步,且Github会自动申请添加HTTPS证书,需要一定时间。建议等待十分钟后,再查看是否可以正常访问。
hexo可以通过命令直接上传到git,但需要安装一个插件:
1 | $ npm install hexo-deployer-git --save |
安装后,打开站点配置文件,找到deploy
部分,修改repository
项内容:
1 | deploy: |
此时,到blog下输入
1 | $ hexo deploy # 也可以简写为 hexo d |
就会将本次有改动的代码全部提交到master
:
为方便在MacOS、Windows不同电脑上随时编辑博客,且防止当前电脑故障,导致找不到Hexo配置及博文原始md文件,可以在存放Hexo博客生成的页面上创建一个新分支source,用于专门提交博客源码。
操作步骤如下:
1 | $ cd blog # 切换到博客文件夹下 |
由于站点配置文件指定了上传博客网页的是master分支,所以提交Hexo博客源码切换的source
分支,不会影响到hexo d
的正常提交,两者互不冲突。
至此,Hexo博客的安装部署工作已经完成!
]]>