archlinux使用操作拾遗

Wed, Feb 13, 2019 阅读时间 1 分钟

这周末打开了未经常使用的archlinux,使用过程中遇到了一些问题,进行了解决,在此做个记录。

archlinux无线联网问题

我安装的archinux是命令行版本,只能无线联网。

检测网卡的PCI-ID

lspci -vnn | grep 14e4:

获取驱动

驱动 描述
brcmsmac/brcmfmac 开源内核驱动
b43 逆向工程内核驱动
broadcom-wl 专有的 Broadcom STA 驱动

b43/b43legacy的运行都需要安装闭源固件, 请从AUR安装b43-firmware, b43-firmware-classic或者 b43-firmware-legacy。

lsmod |grep b43

发现b43驱动已经安装

systemctl status NetworkManager

发现NetworkManager已经安装(pacman安装包为networkmanager

nmcli dev

发现无线网尚未连接。使用如下命令成功连接wifi:

nmcli dev wifi connect <SSID> password <password>

archlinux 软件全部升级签名问题

使用sudo pacman -Syu遇到了 invalid or corrupted package ... unknown trust的问题,应该是签名验证不通过,使用如下方法解决了:

sudo pacman-key --init
sudo vim /etc/pacman.conf #设置SigLevel = Optional TrustAll
sudo vim /etc/pacman.d/gnupg/gpg.conf #设置keyserver hkp://pgp.mit.edu
sudo pacman -Syu 

archlinux 防火墙配置问题

archlinux的iptable使用systemctl启动时需要先创建iptables.rules文件

sudo touch /etc/iptables/iptables.rules
sudo systemctl start iptables

使用systemctl启动iptables或者sudo iptables -L时遇到问题:

can't initialize iptables table `filter': Table does not exist (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.

使用如下命令:

modprobe ip_tables

得到如下错误:

FATAL: Module ip_tables not found

最后发现/boot/config-*文件表示的内核版本与uname -r的版本不一致,原来是 sudo pacman -Syu升级了内核,系统没有重启。重启系统后问题解决。

mariaDB初始化与远程访问配置问题

archlinux下安装了mariaDB,需要执行初始化才能正常启动服务:

sudo pacman -S mariadb
sudo mysql_install_db --user=mysql --basedir=/usr --datadir=/var/lib/mysql
sudo systemctl start mariadb
mysqladmin -u root password '12345678' 

允许远程访问,需要首先确保防火墙配置正常,my.cnfbind-address配置不为localhost,没有配置skip-networking ; 之后配置权限:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'IDENTIFIED BY '123456' WITH GRANT OPTION;
flush privileges;

go语言访问mariaDB日期格式DATETIME映射

go语言连接mariaDB时如果没有配置parseTime=true,scan到的日期数据为[]int8格式,使用string类型接收时为日期的"2006-01-02 15:04:05"格式化字符串(可以使用sql.NullString接收处理空值)。如果配置了parseTime=truescan时可以直接使用time.Time ,但是时间为空时会抛出异常。如果使用string类型接收,则字符串格式为time.RFC3339(2006-01-02T15:04:05Z07:00)