15AH, San Francisco

California, United States.

Send Your Mail At:

tianyingkejishe@sina.cn

Working Hours

Mon-Sat: 9.30am To 7.00pm

归档标题

Autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et dolore feugait.

月度归档 11月 28, 2018

Ubuntu:apt-get update出错:由于没有公钥,无法验证下列签名

1、问题出现的原因

当我打开我的Ubuntu的准备写点内容的时候,窗口提示我系统升级,当时没有在意,大概浏览了下更新列表感觉不错,就更新了,有16更新到18版。使用sudo apt-get update的时候,提示没有公钥无法验证下列签名。

2、问题解决

通过提示很容易理解,

sudo aptkey adv keyserver keyserver.ubuntu.com recvkeys 40976EAF437D05B5

注意:

解决方法中的 40976EAF437D05B5要与你提示错误中的签名(如下)一致。

由于没有公钥,无法验证下列签名: NO_PUBKEY 40976EAF437D05B5

测试下效果,

python3 中ssl.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:833)的错误

File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py", line 1318, in do_open
    encode_chunked=req.has_header('Transfer-encoding'))
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py", line 1239, in request
    self._send_request(method, url, body, headers, encode_chunked)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py", line 1285, in _send_request
    self.endheaders(body, encode_chunked=encode_chunked)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py", line 1234, in endheaders
    self._send_output(message_body, encode_chunked=encode_chunked)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py", line 1026, in _send_output
    self.send(msg)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py", line 964, in send
    self.connect()
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py", line 1400, in connect
    server_hostname=server_hostname)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ssl.py", line 407, in wrap_socket
    _context=self, _session=session)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ssl.py", line 814, in __init__
    self.do_handshake()
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ssl.py", line 1068, in do_handshake
    self._sslobj.do_handshake()
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ssl.py", line 689, in do_handshake
    self._sslobj.do_handshake()
ssl.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:833)

 

python2.7升级到python3需要对ssl进行校验

所以需要引入模块ssl

import ssl

在urlopen中

context添加ssl._create_unverified_context()

关闭ssl校验即可

url = "https://www.baidu.com"context = ssl._create_unverified_context()get = urllib.request.urlopen(url, context = context ).read()

print(get)

 

但是这种办法不推荐,因为最好不要关闭验证

> from urllib import request
>>> url = 'https://www.baidu.com'
>>> with request.urlopen(url) as f:
... data = f.read()
... print(f.status)

 

以上办法可能会无效

取消全局验证

import ssl

ssl._create_default_https_context = ssl._create_unverified_context

 

然后使用urllib.urlopen(‘url’)

无意卸载Ubuntu Python造成无法启动进入桌面

这个话题说起来真实一波三折,卸载Python是为了升级新版本,不然Python多版本共用还是挺占空间的,再说了也没有必要,你说一个Python3.5,一个Python3.6都在意义何在吗。

但危险的时刻还是到来了,当卸载完所有旧版本Python后,安装新版本Python,重启了。没有想到的是,竟然无法进入桌面,一片漆黑,啥也没法操作。

本以为是重新安装桌面,就可以恢复,但是奇迹并没有发生,看来Ubuntu桌面对Python库的依赖蛮大的。不知道是哪里少安装了啥。于是百度呼,谷歌呼。

输入以下命令可以进入了桌面,但是还是嘿嘿嘿,无法进行操作。

sudo apt-get install ubuntu-minimal ubuntu-standard ubuntu-desktop

接下里在输入指令,重启解决一切问题:
sudo apt-get install unity

为啥要输入以上指令呢,后来想了想,因为我实在VMware里壮的Ubuntu,而在设置里面我选择了3D加速模式。所以需要安装unity。你要是不需要3D加速模式的话,那第一条命令就可以解决,无法进入桌面的问题了,谢谢大家。一起探讨。

OPENWRT新刷固件,网口不通

编译完以后,下载可以启动,但是lan口不通,指示灯不亮。wifi可以正常连接。

打开target/linux/ramips/base-files/etc/board.d/02_network 文件对应机型下增加以下内容就可以了。
                ucidef_add_switch “switch0” \
                        “1:lan” “2:lan” “3:lan” “4:lan” “0:wan” “6@eth0”

OpenWrt将Python安装到U盘

1、挂载优盘

//命令
root#mount /dev/sda1 /mnt/sda1 
root#mkdir /mnt/sda1/opkg

2、修改opkg的配置文件

echo dest usb /mnt/sda1/opkg >> /etc/opkg.conf

3、安装python到设定的U盘目录

opkg -d usb install python

4、连接python目录

ln -s /mnt/sda1/opkg/usr/bin/python /usr/bin/python 
ln -s /mnt/sda1/opkg/usr/lib/libpython2.7.so.1.0 /usr/lib/libpython2.7.so.1.0

 

设置环境变量:
输入

  1. vim /etc/profile

编辑文件,添加两行

点击(此处)折叠或打开

  1. export LD_LIBRARY_PATH=”/mnt/usb/optware/usr/lib:/mnt/usb/optware/lib”
  2. export PATH=/usr/bin:/usr/sbin:/bin:/sbin:/mnt/usb/optware/usr/bin:/mnt/usb/optware/usr/sbin

按下 Shift+;    输入wq!    (保存退出)

让修改后的profile立即生效

  1. source /etc/profile

至此,通过opkg install XXXX -d usb 来指定安装至/mnt/usb目录下了

pkg_hash_fetch_best_installation_candidate: Packages for python found, but incompatible with the architectures configured

Unknown package ‘python’.
Collected errors:

* pkg_hash_fetch_best_installation_candidate: Packages for python found, but incompatible with the architectures configured
* opkg_install_cmd: Cannot install package python.

在安装Python的时候提示这种错误让我很奇怪,因为这个ipk安装包是我在固件下编译生成的,怎么会架构不符合呢。

百思不得。问了好多人,觉得莫名其妙。后来想想,这个是跟源有关啊。

解决方法:

python_2.7.15-1_mipsel_24kc.ipk

根据IPK包,在OPKG.CONF添加相应的软件安装架构。

//指令
vim /etc/opkg.conf

修改如下图:

 

OpenWRT-dist

目录列表:

目录 简介
chinadns-c 无需服务器的反 DNS 污染方案 – @GitHub
dnsmasq 添加了 ChinaDNS 功能的 Dnsmasq – @GitHub
shadowsocks-libev 添加了 ss-rules, 国内流量不走代理 – @GitHub
depends-libs 提供相应的依赖包下载

架构列表:

架构 CPU型号
ar71xx AR7xxx/AR9xxx/QCA9xxx
atheros AR231x/AR5xxx
bcm53xx BCM47xx/53xx (ARM CPU)
brcm47xx BCM47xx/53xx (MIPS)
brcm63xx BCM63xx
ramips_24kec RT3x5x/RT5350/MT7620a/MT7620n/MT7621

安装说明:

注: 下文中 packagename 和 initname 请根据实际情况修改

  • 自动安装
    1. 将下载的IPK上传至路由器, 或者直接在路由器使用 wget 下载;
    2. SSH 登录到路由器, 使用 opkg install {packagename}.ipk 安装;
    3. 修改配置文件后使用 /etc/init.d/{initname} start 命令启动.

    当架构不兼容时会提示 but incompatible with the architectures configured,
    此种情况一般在 ramips_24kec 架构的软件包安装时出现.
    可以通过编辑 /etc/opkg.conf 调整架构支持,
    在文件末尾添加(也可以在 LuCI 设置页面修改):

    arch all 100
    arch ramips 200
    arch ramips_24kec 300

    添加完成后使用 opkg update 更新一次
    再次使用 opkg install {packagename}.ipk 安装

  • 手动安装
    1. 解压 ipk 包: tar xzf {packagename}.ipk
    2. 解压 data 包完成最终安装: tar xzf data.tar.gz -C /
    3. 删除安装包残留: rm {packagename}.ipk control.tar.gz data.tar.gz debian-binary

    注: 上面 3 条命令注意复制完整并替换 packagename
    手动安装后没有卸载信息, 建议只在自动安装失败时使用
    如需要卸载, 可以直接删除步骤 2 中解压出的文件

RT5350 openwrt uboot备份

不管是是刷路由器,还是换flash,备份一个安全的UBOOT防止变砖。

1、通过串口连接路由器,查看flash分布区间

//命令
root@OpenWrt:~# cat /proc/mtd 
dev:    size   erasesize  name
mtd0: 00030000 00001000 "u-boot"
mtd1: 00010000 00001000 "u-boot-env"
mtd2: 00010000 00001000 "factory"
mtd3: 007b0000 00001000 "firmware"
mtd4: 0015b347 00001000 "kernel"
mtd5: 00654cb9 00001000 "rootfs"
mtd6: 002bb000 00001000 "rootfs_data"

2、备份uboot

root@OpenWrt:/# dd if=/dev/mtdblock0 of=/tmp/uboot.bin
384+0 records in
384+0 records out

3、拷贝uboot到优盘,当然这个需要你们自己想办法导出去,我用的是优盘。

root@OpenWrt:/tmp# cp uboot.bin /mnt/sda1/

4、查看优盘

root@OpenWrt:/tmp# ls /mnt/sda1/
opkg
readme.txt
uboot.bin

 

Openwrt生成固件受Flash大小限制,无法生成固件

为了测试openwrt的功能,在X宝上买了个二手路由器,操作系统:openwrt18.06 CPU:RT5350 RAM:32M,Flash:16M,当我编译固件时,发现我功能模块选择的越多,却无法生成固件,我以为是哪里配置出现了问题。我一点点减少我的功能模块,发现可以生成了,这时候生成固件大小7M多。终于明白了,固件生成受选择硬件配置的影响,是因为在MenuConfig里选择的是跟路由器一样配置的8Mflash,所以当固件超过8M的时候,就无法生成。而实际路由器的flash确实16M啊,咋办呢。别急,接下来上图。

输入命令:

vim /openwrt/target/linux/ramips/image/rt305x.mk

其中ramips是针对RT5350结构的目录,具体以自己CPU为主。

 

其中MPR-a2是路由器型号,16M为修改后的。根据实际修改。