docker hub里面的archlinux大部分是archlinux支持i686时期的镜像,目前archlinux不支持i686以后,这些镜像估计就不再支持i686了。我看了一些x86_64的镜像制作脚本,相当多的一部分都是直接用的其rootfs的tar来制作的,只有少数几种是直接从pacman获取包制作rootfs,挑了两种大牌的,如下:
1.在Moby的github的捐献里,有一个archlinux的制作完整base包的脚本,我把获取包的mirror服务器改成了Archlinux32在日本的服务器以后,在i686的环境里面制作成功并运行了一个Archlinux32。我整理的脚本在https://github.com/bh1rio/archlinux32-docker
2.另外一种方式是使用https://github.com/archlinux/archlinux-docker 的Makefile来直接用make的方式制作。这个不需要改Makefile,他是使用本机配置的mirror来获取包。惊喜是这个makefile可以制作rootfs。
对比两种方式,第二种方式的生成的包稍小,我怀疑有某些不必要的文件没有清理,不过还没有具体比较两个差异。
另,别问我为啥抱着i686玩docker:我给我的那个4盘位的小机器配好了Raid5,没理由扔到一边不管嘛
新装机的话,可以从archlinux32.org下载纯32位的安装包。
原来archlinux官方的i686装机,可以更换archlinux32的更新服务,方法如下:
- 先把/etc/pacman.d/mirrorlist的内容换成https://raw.githubusercontent.com/archlinux32/packages/master/core/pacman-mirrorlist/mirrorlist这个内容。这里面是最新的archlinux32的镜像文件清单,今天镜像服务器数量爆发性增长,是昨天的两倍了,昨天只有4个,今天8个了。国内目前不要选新加坡的那个,死慢,小鬼子的速度最快。
- 执行pacman -Syy archlinux32-keyring-transition来更新证书链。
- 执行pacman -Syuu来做完整升级。但是有两个问题:1是目前archlinux32的包没有archlinux的新,可能得有相当数量的包会提示降级。2是开始第一次会提示你本机缓存的老版本包的数字签名不对,一种解决办法是当提示你的时候,选Y然后删掉原来的包,再-Syuu的时候就会重新下载对的,另一种解决办法是在开始前先运行pacman -Sc据说会清理掉数字签名不对的。
不管咋样,我去重启我的那个机器去了
.
.
.
.
.
.
顺利重启,反正我也不关心是不是出了什么问题。
话说,国内也没谁写这样的Blog了吧
今天看见Docker的Hub里面的microsoft/mssql-server-linux已经升级到了2017-CU1,就顺手装了一个。可以用如下命令:
docker run –name mssql -e ‘ACCEPT_EULA=Y’ -e ‘SA_PASSWORD=‘ -e ‘MSSQL_PID=Standard’ -p 1433:1433 -d microsoft/mssql-server-linux:2017-CU1</yourstrong!passw0rd>
其中有意思的是MSSQL_PID这个参数,PID是Product ID (PID)或者版本的意思,可以送的参数包括:
Developer :开发版,默认值
Express :这个不用说了
Standard :标准版
Enterprise :企业版
EnterpriseCore :这个你们自己试试吧
赶快搞起来吧
找了一个N270处理器的小上网本跑ArchLinux当开发服务器,结果发现合上屏幕就会休眠,于是祭起搜索引擎神器,在ArchLinux的Wiki宝典里面找到了如下的办法:
- 修改/etc/systemd/logind.conf
其中:
- HandlePowerKey:按下电源键后的动作
- HandleSleepKey:按下挂起键后的动作
- HandleHibernateKey: 按下休眠键后的动作
- HandleLidSwitch:合上笔记本盖后待机
动作可以是:ignore、poweroff、reboot、halt、suspend、hibernate、hybrid-sleep、lock 或 kexec。
话说自己用还是喜欢ArchLinux,云上的话CentOS也可以忍受
最近使用阿里云上的centos7的时候,发现直接yum install的nginx版本比较低,鉴于我是新版本强迫症,研究了一下怎么用nginx预编译的包,而不是centos仓库自带的。如下
1.在/etc/yum.repos.d目录下创建nginx.repo文件,内容如下:
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1
2.再用yum install nginx的时候,可以看到已经是最新的版本了。
这样做的好处有几个,可以直接用systemctl来控制Nginx服务了,再有以后yum update也能跟着更新。
我这里表现为容器映射到宿主的端口,没有被防火墙保护。防火墙能用,但是报错,如下:
[root@localhost ~]# systemctl status firewalld
● firewalld.service – firewalld – dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
Active: active (running) since 三 2017-07-26 00:42:31 CST; 7h left
Docs: man:firewalld(1)
Main PID: 760 (firewalld)
Memory: 0B
CGroup: /system.slice/firewalld.service
└─760 /usr/bin/python -Es /usr/sbin/firewalld –nofork –nopid
7月 25 16:43:44 localhost.localdomain firewalld[760]: WARNING: COMMAND_FAILED: ‘/usr/sbin/iptables -w2 -t nat -C OUTPUT -m addrtype –dst-type LOCAL -j DOCKER ! –dst 127.0.0.0/8’ failed:
7月 25 16:43:44 localhost.localdomain firewalld[760]: WARNING: COMMAND_FAILED: ‘/usr/sbin/iptables -w2 -t filter -C FORWARD -o docker0 -j DOCKER’ failed:
7月 25 16:43:44 localhost.localdomain firewalld[760]: WARNING: COMMAND_FAILED: ‘/usr/sbin/iptables -w2 -t filter -C FORWARD -j DOCKER-ISOLATION’ failed:
7月 25 16:43:44 localhost.localdomain firewalld[760]: WARNING: COMMAND_FAILED: ‘/usr/sbin/iptables -w2 -t nat -C POSTROUTING -s 172.17.0.0/16 ! -o docker0 -j MASQUERADE’ failed:
7月 25 16:43:44 localhost.localdomain firewalld[760]: WARNING: COMMAND_FAILED: ‘/usr/sbin/iptables -w2 -t nat -C DOCKER -i docker0 -j RETURN’ failed:
7月 25 16:43:44 localhost.localdomain firewalld[760]: WARNING: COMMAND_FAILED: ‘/usr/sbin/iptables -w2 -D FORWARD -i docker0 -o docker0 -j DROP’ failed:
7月 25 16:43:44 localhost.localdomain firewalld[760]: WARNING: COMMAND_FAILED: ‘/usr/sbin/iptables -w2 -t filter -C FORWARD -i docker0 -o docker0 -j ACCEPT’ failed:
7月 25 16:43:44 localhost.localdomain firewalld[760]: WARNING: COMMAND_FAILED: ‘/usr/sbin/iptables -w2 -t filter -C FORWARD -i docker0 ! -o docker0 -j ACCEPT’ failed:
7月 25 16:43:44 localhost.localdomain firewalld[760]: WARNING: COMMAND_FAILED: ‘/usr/sbin/iptables -w2 -t filter -C FORWARD -o docker0 -m conntrack –ctstate RELATED,ESTABLISHED -j ACCEPT’ failed:
7月 25 16:43:44 localhost.localdomain firewalld[760]: WARNING: COMMAND_FAILED: ‘/usr/sbin/iptables -w2 -t filter -C FORWARD -o docker0 -j DOCKER’ failed:
archlinux用aur编译的时候,根据top看,多处理器没有用起来,于是研究了一下,发现可以修改/etc/makepkg.conf来修改make的环境变量,启用多处理。具体如下:
去掉MAKEFLAGS前面的注释,并根据处理器数量修改-j后面数据,双核为-j2,四核为-j4
MAKEFLAGS="-j2"
这个提升还是比较明显的。
树莓派2安装最新的ArchLinuxARM,然后安装标准的nginx。压力源使用VS2015中测试项目的WebLoadTest。
第一次没调nginx的工作进程数,第二次调成4个工作进程,于是…….真相如下:
最惨的是我自己的pc跑满了
1月份刚收了一个带有Raid卡和热插拔笼子的HP瘦客户机,上周刚给他装上2块500G的2.5寸硬盘,做好raid装好Arch,就看到了这个消息。
看到这个消息有点不舒服,不是因为这机器装的Arch一年后就没有更新了,而是突然回首发现已经玩了20年的Linux了。
不说这个了,给大家看看这个奇怪的瘦客户机。原机是HP的T5740,但是加厚扩展了4盘位的盘仓和Raid卡。卡是Sil 3114有点鸡肋,但是能扩充4盘位。机器内部还有一个8G SATA口的SSD。处理器是N280,单处理器,32位,好处就是省电低热。这机器主板不支持加载3114上的硬盘,所以/boot和grub都在这个8G的SSD上面。
Archlinux的AUR里面有很多非官方的软件包,但是需要自己编译,编译前还有很多相应的准备工作。需要先安装base-devel这个安装包的组,然后还要安装git。另外还要准备一个非root的账号,并具备sudo的权限。
1.当前使用root身份安装必须的文件:
pacman –S base-devel git
2.使用root身份用visudo命令添加tom ALL=(ALL) ALL,这里tom就是那个非root账号。
3.使用su tom的方式切换到tom用。
4.使用git clone的方式拿取安装包的信息文件,这会为包安装创建一个文件夹。
5.进入这个文件夹,然后使用makepkg –si。这会自动下载依赖的安装包,下载依赖的文件,编译这些文件,并制作安装包。然后会问你tom这个账号的密码,密码正确以后,会以root权限来安装刚才做好的安装包。
利用这个可以解决mkinitcpio时候aic94xx和wd719xx两个firmware确实造成的报错。
先是收了一个群晖DS716+ii,玩了一下Docker,于是又在Arch上面玩。Docker确实好玩,作为沙箱环境,创建速度快了很多。下面是整理的资料:
Install Docker on Arch Linux:https://docs.docker.com/engine/installation/linux/archlinux/
这个可能是我Blog里面第一篇使用Open Live Writer写的内容,目前其本版为0.6。
前段时间摔伤,把手里的工作交接了一下,顺便开始研究一些之前腾不出时间做的研究。这次是在ArchLinux上安装PostgreSQL。研究了一下PostgreSQL的文档,写的很细,但是无从下手。研究了一下ArchLinux的Wiki,基本过程写了,但是还有问题,自己折腾了两天才搞定,特此记录一下。
1.首先还是要安装postgresql安装包。
pacman –S postgresql
2.安装包搞定以后,会自动创建postgres账号。按照ArchLinux的要求,需要修改这个账号的密码,作为开发环境可以跳过。然后su成这个账号,做数据库的初始化。因为postgresql是以这个账号运行的,所以数据库初始化,一定要su成这个账号。
su postgres
initdb –locale $LANG -E UTF8 –D ‘/var/lib/postgres/data’
exit
3.初始化完成以后,会创建好配置文件和系统库。接下来编辑配置文件。配置文件都在刚才的数据目录内。
先修改postgresql.conf文件,去掉listen_address前面的注释符,并将内容修改为*号,表示监听所有的IP。
再修改pg_hba.conf文件,添加host all all 192.168.1.0/24 md5,表示允许某个网段以md5编码的方式验证用户登录。
4.修改完成就可以注册服务和启动服务了。
systemctl enable postgresql
systemctl start postgresql
5.启动以后需要修改管理账号的密码
psql –U postgres
postgres=#\password postgres
6.这样就安装完成,可以使用远程的pgAdmin 3试试能否连接到服务器了。
1.准备:
下载最新的iso文件,准备虚机,测试网络。
2.使用iso启动虚机,测试网络是否可用。
3.分区和磁盘准备: sda1为交换分区,大小与内存相同,sda2为剩余空间。
分区:fdisk /dev/sda
格式化主分区:mkfs.ext4 /dev/sda2
格式化交换分区: mkswap /dev/sda1
启用交换分区:swapon /dev/sda1
加载主分区:mount /dev/sda2 /mnt
4.修改当前使用的镜像服务器,我是修改为163的镜像。
vi /etc/paman.d/mirrorlist
5.灌rootfs。包括基础和开发两部分包。
pacstrap –i /mnt base develop
genfstab –U –p /mnt >> /mnt/etc/fstab
6.切换root
arch-chroot /mnt /bin/bash
7.修改locale信息
修改/etc/locale.gen,再执行locale-gen
执行echo LANG=en_US.UTF-8 > /etc/locale.conf
8.修改时区和local时间
ln –s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
hwclock –systohc –utc
9.修改机器名
echo myhostname > /etc/hostname
10.修改密码
passwd
11.安装bootloader
pacman –S syslinux
syslinux-install_update –i –a –m
vi /boot/syslinux/syslinux.cfg
12.退出重启
exit
umount –R /mnt
reboot
ArchLinuxARM在第一时间更新了网站,并支持了树莓派3,但是还有一些情况,参考:https://archlinuxarm.org/platforms/armv8/broadcom/raspberry-pi-3。例如:当前的root filesystem使用的还是Pi2的32位的内容等。
另,需要注意的是Pi3需要电源更大的电流,根据ArchLinuxARM的测试,需要2.5A以上的电流,这个有点强悍。
在树莓派和PC的ArchLinux的2015.11上,驱动都没有问题。
lsusb显示:
Bus 001 Device 004: ID 0bda:8179 Realtek Semiconductor Corp. RTL8188EUS 802.11n Wireless Network Adapter
lsmod显示:
使用的是8188eu的驱动,使用cfg80211栈。但是在插卡的时候不会加载cfg80211,只有在wifi-menu之后,才会加载。
使用wifi-menu连接的时候,会有ioctl的错误信息,但是不影响连接。在wifi-menu,里面看不到信号评分或者信号的分贝提示。dmesg会有错误信息。
补充:
1.COMFAST CF-WU810N的lsusb和lsmod信息一致。
2.COMFAST CF-WU720N的lsusb和lsmod信息一致。
在树莓派和PC的ArchLinux的2015.11上,驱动都没有问题。
lsusb显示:
Bus 001 Device 004: ID 0bda:8176 Realtek Semiconductor Corp. RTL8188CUS 802.11n WLAN Adapter
lsmod显示使用的是8192cu的驱动,使用cfg80211栈。
使用wifi-menu连接的时候,会有ioctl的错误信息,但是不影响连接。
在我这次买的一堆USB无线网卡里面,磊科NW360这个是唯一的不需要做任何操作就可以使用的无线网卡,内部应该是RTL8191SU芯片。
lsusb的信息是
Bus 001 Device 004: ID 0bda:8172 Realtek Semiconductor Corp. RTL8191SU 802.11n WLAN Adapter
lsmod显示驱动为r8712u,使用cfg80211栈。目前,从dmesg看,无任何错误信息。
上一篇《在ArchLinux ARM下驱动RTL 8188eu无线网卡》对网卡不好用,很是郁闷。所以这次整了一堆无线usb网卡来测试。今天很高兴,完美驱动了mt7601u网卡,当然这个过程不是一帆风顺,不然也就不必要写这么一篇blog了。
先说使用这个片子的网卡:
必联(B-Link) BL-D88 http://item.jd.com/1154411.html
必联(B-Link) BL-150SM http://item.jd.com/1154451.html
传说小米的随身wifi也是这个片子,但是我手头没有小米的随身wifi,所以读者自己测试吧
再说驱动为什么不是一帆风顺:我在pc和arm的ArchLinux上测试这个网卡的时候,发现插上设备以后,系统没有新增网卡设备,lsusb发现识别正常,lsmod发现驱动正常,dmesg发现加载firmware时,没有找到firmware文件。于是自己去http://www.mediatek.com/en/downloads1/downloads/mt7601u-usb/这里下载了一个最新的,你不想注册信息的话,可以从我的百度盘下载http://pan.baidu.com/s/1hqpWmGG。我共享的这个文件,不需要改名字,直接sftp上传,然后复制到/lib/firmware里面,重启pc或者树莓派就好了。
sftp可以使filezilla client。
在2013年4月的时候,我曾写过一篇《在Cubieboard的ArchLinux下驱动RTL8188eu无线网卡》。现在两年半以后,因为ArchLinux ARM的升级,所以那片帖子的里面的内容已经过时了。但是根据访问统计看,还有人在访问,而且我现在自己也想把自己树莓派上面的网线换成无线,所以有了今天这篇的内容。今天的这个内容,我在树莓派1B+、树莓派2B以及x86的环境中都做了测试,目前看实验现象似乎都是一致的。水星Mercury的MW150US网卡有多个版本,我手里的这个是MW150US v2.0。
在2013年的时候,当时ArchLinux ARM的内核还是Linux 3,但是现在ArchLinux和ArchLinux ARM的内核都已经是Linux 4了,而且RTL的驱动程序也在升级,所以情况也是有变化的。
先说说现状:
目前RTL 8188eu的驱动,在ArchLinux和ArchLinux ARM的内核里面都已经内置了,插上USB以后,使用lsmod会看到有一个r8188eu的驱动在,但是无论使用wpa_supplicant还是wifi-menu,都无法连到无线路由器。翻墙查了相关的搜索结果以后,大部分都在建议使用https://github.com/lwfinger/rtl8188eu/tree/v4.1.8_9499的新驱动,据说老的驱动是3下面的驱动,在4里面无法很好的工作。
编译并安装驱动:
首先用pacman –S base-devel git dkms iw wpa_supplicant dialog crda linux-raspberrypi-headers安装必要的组件。这其中base-devel是编译需要的工具链,git是代码获取工具,iw、wpa_supplicant、dialog是配置无线网的工具,dkms是动态内核配置工具。crda能设置无线网卡的频率范围,linux-raspberrypi-headers是编译驱动所需要的头文件。
然后获取代码git clone –b v4.1.8_9499 https://github.com/lwfinger/rtl8188eu.git,这会将一个稳定的版本下载到本地。下载后可以先修改rtl8188eu中的Makefile文件,其中CONFIG_POWER_SAVING的内容修改为CONFIG_POWER_SAVING = n,目的是关闭省电功能。然后就可以使用make或者dkms来编译了,具体可以参考github的页面上的帮助。这两种做法会有一个区别,区别是make会自动在/etc/modprobe.d/内创建一个50-8188eu.conf文件,他会把内核中的r8188eu模块加入blacklist,我们自己可以编辑这个文件,并加入一行options 8188eu rtw_power_mgnt=0,给驱动送参数,来关闭相关的电源管理。
结果:
目前看按照上面的操作完成驱动安装以后,某些时候会工作的比较好,dmesg里面已经没有错误信息了。但是说某些时候,是因为不确定原因的某些时候工作的不好。据说最完美的情况是在x64的情况下,据说github上维护代码的这个作者,他用的是这个环境。
还有就是目前看,ArchLinux的作者和使用者确实激进,因为从搜索结果看,大部分是ArchLinux的用户在提问。另外,还有相当多的用户是和我一样在树莓派上使用。
我目前的想法是换一个usb网卡试试。没准换过几个网卡之后,我会写一个迷你usb无线网卡的评测,哈哈
再加一句:ArchLinuxARM论坛里面推荐的dkms-8188eu的方法并不好用,也已经测试了。
最近在ArchLinux上安装MariaDB的节奏和以前有了一些变化。如下:
安装
1. pacman –S mariadb
2. mysql_install_db –user=mysql –basedir=/usr –datadir=/var/lib/mysql
3. systemctl enable mysqld
4. systemctl start mysqld
5. mysql_secure_installation
升级(在较大的升级以后,比如5.0升级到10.0或者10.升级到10.1)
mysql_update –u root –p
为root添加远程访问
$ mysql -u root -p
MariaDB> CREATE USER 'root'@'%' IDENTIFIED BY 'some_pass';
MariaDB> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
MariaDB> quit
近期评论