背景 之前在一号本(OneMix3 Pro)上装的Ubuntu系统因为懒得做环境分离,终于把环境搞乱了 T_T,遂重装一下Ubuntu顺便升到最新版20.04。
一号本有点ZZ,主板层面认为屏幕是竖着的,所以除原生 win10 ,加了grub之后,grub和ubuntu默认都是竖屏的。而之前装系统的时候没有做过程记录,所以忘了上次是怎么解决“竖屏”问题的了。。。
重新google一番,主要发现以下方法。
方法一 最快速也是最丑的方法,Ubuntu默认有个服务iio-sensor-proxy
,有点类似手机上的“屏幕旋转”,然而一号本的加速度传感器方向不是常规的方向,所以这个旋转总是往错误的方向翻转,可以卸载这个服务后,每次进入桌面手动设置屏幕方向。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 # 卸载服务 x@One-Mix3-Pro:~$ sudo apt-get --purge remove iio-sensor-proxy # 查看屏幕名称,这里看到是eDP-1 x@One-Mix3-Pro:~$ xrandr --query Screen 0: minimum 320 x 200, current 2560 x 1600, maximum 16384 x 16384 eDP-1 connected primary 2560x1600+0+0 left (normal left inverted right x axis y axis) 113mm x 181mm 1600x2560 55.86*+ HDMI-1 disconnected (normal left inverted right x axis y axis) DP-1 disconnected (normal left inverted right x axis y axis) HDMI-2 disconnected (normal left inverted right x axis y axis) # 每次登陆执行屏幕翻转,可以写个自启动项 x@One-Mix3-Pro:~$ xrandr --output eDP-1 --rotate left
可以写一个gnome启动项,控制gnome每次登陆的时候执行屏幕旋转。
打开“启动应用程序”程序
或者alt + F2
运行gnome-session-properties
,在其中添加旋转屏幕命令
再或者直接shell里添加gnome启动项文件
1 2 3 4 5 6 7 8 9 10 11 x@One-Mix3-Pro:~/.config/autostart$ cat export.desktop [Desktop Entry] Type=Application Exec=export DISPLAY=:0;xrandr --output eDP-1 --rotate left Hidden=false NoDisplay=false X-GNOME-Autostart-enabled=true Name[zh_CN]=screen rotate Name=screen rotate Comment[zh_CN]=aaa Comment=Rotate the default screen
Ubuntu 20.04上不知道为什么这个启动项经常不允许,老版本Ubuntu这个启动项还是有点用的。
方法二 上面的方法通过卸载“屏幕旋转”服务,使得屏幕不会被错误的旋转,但也造成屏幕没法自动旋转。不太喜欢这种因噎废食的做法,重新安装上iio-sensor-proxy
,继续看了下其他方法。
查阅了一些文档 ,发现加速度传感器的矩阵可以手工校准,参考reddit 网友的帖子,先寻找加速度设备的名称:
1 2 root@One-Mix3-Pro:~# cat /sys/`udevadm info -q path -n /dev/iio:device0`/../modalias acpi:BOSC0200:BOSC0200:
获取到的设备名称为acpi:BOSC0200:BOSC0200:
,增加61-sensor-local.hwdb
配置文件,设备名为以下格式,并对ACCEL_MOUNT_MATRIX
矩阵进行如下调整,更新硬件数据库:
1 2 3 4 root@One-Mix3-Pro:~# cat /etc/udev/hwdb.d/61-sensor-local.hwdb # 修改为如下内容 sensor:modalias:acpi:BOSC0200*:dmi:*:* ACCEL_MOUNT_MATRIX= -1, 0, 0; 0, 1, 0; 0, 0, 1 # 3x3矩阵 root@One-Mix3-Pro:~# systemd-hwdb update # 更新硬件数据库
修改矩阵的时候可以参考monitor-sensor
的内容,不断调整设备姿态,确定原生加速度传感器方向。
1 2 3 4 5 6 7 8 9 10 11 12 13 root@One-Mix3-Pro:~# monitor-sensor Waiting for iio-sensor-proxy to appear +++ iio-sensor-proxy appeared === Has accelerometer (orientation: left-up) === No ambient light sensor Accelerometer orientation changed: bottom-up Accelerometer orientation changed: left-up Accelerometer orientation changed: normal Accelerometer orientation changed: right-up Accelerometer orientation changed: normal Accelerometer orientation changed: left-up Accelerometer orientation changed: normal Accelerometer orientation changed: left-up
重启并登陆以后,屏幕基本可以按正确的重力方向进行旋转了。那么这个时候新的问题就出现了😂,触屏会偶发性的没有跟随进行旋转,这样就会导致你点右边,左边的程序启动了。。。
依旧查阅文档,发现有个输入设备的矩阵,查看当前输入设备:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 x@One-Mix3-Pro:~$ xinput --list ⎡ Virtual core pointer id=2 [master pointer (3)] ⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)] ⎜ ↳ HAILUCK CO.,LTD USB KEYBOARD Mouse id=11 [slave pointer (2)] ⎜ ↳ GXTP7386:00 27C6:0113 id=15 [slave pointer (2)] ⎜ ↳ GXTP7386:00 27C6:0113 Stylus id=16 [slave pointer (2)] ⎣ Virtual core keyboard id=3 [master keyboard (2)] ↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)] ↳ Power Button id=6 [slave keyboard (3)] ↳ Video Bus id=7 [slave keyboard (3)] ↳ Power Button id=8 [slave keyboard (3)] ↳ Sleep Button id=9 [slave keyboard (3)] ↳ HAILUCK CO.,LTD USB KEYBOARD id=10 [slave keyboard (3)] ↳ HAILUCK CO.,LTD USB KEYBOARD System Control id=12 [slave keyboard (3)] ↳ HAILUCK CO.,LTD USB KEYBOARD Consumer Control id=13 [slave keyboard (3)] ↳ HAILUCK CO.,LTD USB KEYBOARD Wireless Radio Control id=14 [slave keyboard (3)] ↳ GXTP7386:00 27C6:0113 Keyboard id=17 [slave keyboard (3)] ↳ AT Translated Set 2 keyboard id=18 [slave keyboard (3)]
id=15
的GXTP7386:00 27C6:0113
是触屏设备,查看这个设备的属性信息:
1 2 3 4 5 6 7 8 9 10 11 x@One-Mix3-Pro:~$ xinput list-props 15 Device 'GXTP7386:00 27C6:0113': Device Enabled (168): 1 Coordinate Transformation Matrix (170): 0.000000, -1.000000, 1.000000, 1.000000, 0.000000, 0.000000, 0.000000, 0.000000, 1.000000 libinput Calibration Matrix (323): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000 libinput Calibration Matrix Default (324): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000 libinput Send Events Modes Available (288): 1, 0 libinput Send Events Mode Enabled (289): 0, 0 libinput Send Events Mode Enabled Default (290): 0, 0 Device Node (291): "/dev/input/event6" Device Product ID (292): 10182, 275
最后写了个脚本,把屏幕旋转的部分和触摸屏识别旋转的部分合在一起,当触摸屏识别没有跟随旋转时执行一下。
1 2 3 4 5 6 7 8 9 # !/bin/bash # Screen_rotate.sh written by badb100d # portrait (left) export DISPLAY=:0 xrandr --output eDP-1 --rotate left # 15 is the touch screen id xinput set-prop 15 --type=float "Coordinate Transformation Matrix" 0 -1 1 1 0 0 0 0 1
附加 增大grub字体 grub 貌似是没法旋转的(除非patch binary),所以将就一下这个颈椎病康复版grub。不过grub的字体还是可以调的,默认字号太小。
1 2 3 4 root@One-Mix3-Pro:~# apt install ttf-unifont -y root@One-Mix3-Pro:~# grub-mkfont -s 32 -o /boot/grub/fonts/unicode32.pf2 /usr/share/fonts/truetype/unifont/unifont.ttf root@One-Mix3-Pro:~# vim /etc/default/grub # 增加 GRUB_FONT=/boot/grub/fonts/unicode32.pf2 root@One-Mix3-Pro:~# update-grub # 更新grub,再重启
修改 tty 下旋转模式 GUI下的屏幕旋转解决了,但是有时候纯CUI操作效率更高,也更节约资源。默认的 tty 界面(ctrl+alt+F3)也是旋转的,通过修改 grub 启动参数进行校正:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 root@One-Mix3-Pro:~# cat /etc/default/grub # If you change this file, run 'update-grub' afterwards to update # /boot/grub/grub.cfg. # For full documentation of the options in this file, see: # info -f grub -n 'Simple configuration' GRUB_DEFAULT=0 GRUB_TIMEOUT_STYLE=hidden GRUB_TIMEOUT=2 GRUB_FONT=/boot/grub/fonts/unicode32.pf2 GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian` #GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" GRUB_CMDLINE_LINUX_DEFAULT="video=efifb fbcon=rotate:3 fbcon=rotate_all:1 quiet splash" GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0 video=efifb fbcon=rotate:3 fbcon=rotate_all:1" # Uncomment to enable BadRAM filtering, modify to suit your needs # This works with Linux (no patch required) and with any kernel that obtains # the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...) #GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef" # Uncomment to disable graphical terminal (grub-pc only) #GRUB_TERMINAL=console # The resolution used on graphical terminal # note that you can use only modes which your graphic card supports via VBE # you can see them in real GRUB with the command `vbeinfo' #GRUB_GFXMODE=640x480 # Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux #GRUB_DISABLE_LINUX_UUID=true # Uncomment to disable generation of recovery mode menu entries #GRUB_DISABLE_RECOVERY="true" # Uncomment to get a beep at grub start #GRUB_INIT_TUNE="480 440 1"
更新 grub 并重启
1 root@One-Mix3-Pro:~# update-grub
增加 tty 下中文字符支持 安装fbterm
,配置~/.fbtermrc
,root和普通用户都配置一下。
1 2 3 font-names=Ubuntu Mono font-size=40 screen-rotate=3
配置fbterm
权限
1 setcap 'cap_sys_tty_config+ep' /usr/bin/fbterm
增加 rc.local 支持 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 root@One-Mix3-Pro:~# cat /etc/systemd/system/rc-local.service [Unit] Description=/etc/rc.local Compatibility ConditionPathExists=/etc/rc.local [Service] Type=forking ExecStart=/etc/rc.local start TimeoutSec=0 StandardOutput=tty RemainAfterExit=yes SysVStartPriority=99 [Install] WantedBy=multi-user.target root@One-Mix3-Pro:~# systemctl enable rc-local; touch /etc/rc.local; chmod +x /etc/rc.local
无线网卡不休眠 查看,并修改无线网卡状态(重启失效)
1 2 3 root@One-Mix3-Pro:~# iw dev wlan0 get power_save Power save: on root@One-Mix3-Pro:~# iw dev wlan0 set power_save off
修改无线网卡配置(重启不失效)
1 2 3 root@One-Mix3-Pro:~# cat /etc/NetworkManager/conf.d/default-wifi-powersave-on.conf [connection] wifi.powersave = 2
安装VNC(系统自带的太辣鸡) 1 2 3 root@One-Mix3-Pro:~# wget https://downloads.realvnc.com/download/file/vnc.files/VNC-Server-6.10.1-Linux-x64.deb root@One-Mix3-Pro:~# dpkg -i VNC-Server-6.10.1-Linux-x64.deb root@One-Mix3-Pro:~# sed -i "s/^[#]WaylandEnable=false/WaylandEnable=false/" /etc/gdm3/custom.conf # force the login screen to use Xorg
VNC license: 从cnblog 找了一个VKUPN-MTHHC-UDHGS-UWD76-6N36A
从zhihu 找了一个Z456C-LMKTC-NLGWQ-H5CUR-ZVWEA
开启虚拟桌面服务vncserver-virtuald.service
1 2 3 4 5 root@One-Mix3-Pro:~# apt install xserver-xorg-video-dummy root@One-Mix3-Pro:~# vncinitconfig --enable-system-xorg root@One-Mix3-Pro:~# systemctl enable vncserver-virtuald.service root@One-Mix3-Pro:~# systemctl start vncserver-virtuald.service root@One-Mix3-Pro:~# # To start a Virtual Mode instance (session), run the command: vncserver-virtual
盒盖不休眠 1 2 root@One-Mix3-Pro:~# echo "HandleLidSwitchExternalPower=ignore" >> /etc/systemd/logind.conf root@One-Mix3-Pro:~# systemctl restart systemd-logind
再装些有的没的常用软件,差不多基本配置就OK了,后面各个环境全部docker化吧,Ubuntu环境乱了很难受。
设置BIOS时间为本地时间(local time) Ubuntu默认视BIOS时间为UTC时间,这样对夏令时的兼容最好,业务系统建议保持默认以满足夏令时兼容性。 Windows默认视BIOS时间为本地时间(local time),会导致两个系统时间不一致,个人电脑建议按以下方法将Ubuntu的RTC时间策略改为本地时间。
1 root@One-Mix3-Pro:~# timedatectl set-local-rtc 1
后续更新 2021-08-07
最近设备经常高温重启,从https://extensions.gnome.org/extension/945/cpu-power-manager/
处添加gnome插件控制CPU频率,另外后续可以看一下/sys/devices/virtual/thermal/cooling_device\*
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 root@One-Mix3-Pro:/# for i in `ls /sys/devices/virtual/thermal`;do cat /sys/devices/virtual/thermal/$i/type;done Fan Fan Processor Processor Processor intel_powerclamp Fan Fan Fan Processor Processor Processor Processor Processor INT3400 Thermal SEN3 pch_skylake B0D4 iwlwifi_1 x86_pkg_temp
2023-06-01 键盘好像坏了,A键时灵时不灵的,有时候自动aaaaaaaa的,甚至在win下经常跳出粘滞键。。。 准备做个全盘镜像,然后返厂修键盘。 重启按DEL进入bios,切换至U盘启动,Try Ubuntu,内置SSD设备为/dev/nvme0n1(nvme0是控制器设备,nvme0n1是磁盘块设备,nvme0n1p[1-9]是磁盘分区)。 找个移动硬盘,将磁盘完整dd出来(这里找个大的固态盘快一点)。1 2 3 4 5 # 备份至移动硬盘 Portable-SSD-DIR/nvme-backup/ 目录,如果移动硬盘够大或者CPU不太行,可以不gzip dd if=/dev/nvme0n1 bs=4M status=progress | gzip -c | split -b 16G - /media/ubuntu/Portable-SSD-DIR/nvme-backup/nvme.img.gz # 恢复至nvme,这里*会按文件名顺序匹配,同样,如果前面没用gzip,这里也要去掉gzip cat /media/ubuntu/Portable-SSD-DIR/nvme-backup/nvme.img.gz* | gzip -dc | dd of=/dev/nvme0n1 bs=4M status=progress