笔记本linux问题记录
UEFI笔记本无法引导进入操作系统
现在的pc绝大多数都是通过uefi来引导操作系统的。有时候会因为折腾操作系统,无法启动。修复的过程如下:
1-下载efi shell x64,解压到u盘根目录,注意u盘文件系统是fat32的,这样才能被uefi识别。
2- 插到电脑上,进入bios,找到类似launch efi shell的项(华硕是这样的,其他品牌的不知道),回车进去后,即可进入efi的shell命令交互界面。
3-执行map命令,查看设备映射关系,比如fs0: fs1: blk0:等。仔细观察,分辨自己硬盘的映射的名字是什么。比如fs0表示某个磁盘的第0个分区。一般esp分区(efi system partition,efi系统分区)位于索引0。
4- 假设通过上面步骤已经确认了硬盘esp分区为fs0
则执行fs0: (注意有冒号)
然后执行ls 就会看到一个EFI的目录
执行cd EFI,再执行ls,就会发现还有一个目录(比如我的目录名是debian,有些人的是ubuntu之类的), cd debian,再ls就发现一个grubx64.efi的文件。这个文件就是efi的引导文件了。执行grubx64.efi就可以引导进系统了。
5- 进入系统后,执行update-grub2 即可修复grub引导(如果分区还没安装grub,可以先执行grub-install /dev/sdX, 再执行update-grub2)
grub引导错误,无法进入系统
1-如果能到grub界面,但是不能引导操作系统,只是光标在闪烁。那么可以重启,再次进入grub,然后按下c,进入grub命令行界面。如果pc连grub命令都进不了,可以使用带grub的u盘进入grub命令界面。(例如使用debian的mini.iso结合dd命令或UltraISO让u盘具备grub引导功能)
2-载入内核:
进入grub命令行后
执行linux (hd0,gpt1)/vmlinuz root=/dev/sdXn ro quiet
#执行上面命令的时候,要充分利用tab的命令补全功能。比如输入 (hd 按下tab就会列出硬盘的分区信息。 可以通过分区大小来判断。上面的(hd0,gpt1)/是放vmlinuz内核的分区(如果有/boot分区,就是/boot分区,如果没有/boot分区,就是根分区)。后面的vmlinuz也是tab补全而来。
基本上敲grub命令就是不断tab的过程,直接敲tab两次可以列出所有的grub命令
上面droot=可以用类似/dev/sdXn的形式指明,也可以用uuid来指明,甚至可以用分区label来指明。
另外如果不想敲(hd0,gpt1),可以在执行linux和initrd两个命令前输入set root=(hd0,gpt1)
还有就是,grub如果不能识别分区,需要载入模块.zh执行类似insmod btrfs 、insmod gzip之类命令来载入模块,以便grub引导内核。
3- 载入initrd
执行initrd (hd0,gpt1)/initrd (输入initrd,敲tab补全)
4 - 执行boot命令引导
5- 进入操作系统后,执行update-grub2修复grub引导. (如果分区还没安装grub,可以先执行grub-install /dev/sdX, 再执行update-grub2)
笔记本亮度不能保存
1-安装各种驱动:
apt update
apt install firmware-linux-free firmware-linux firmware-linux-nonfree
2-重启后,ls /sys/class/backlight/会发现多了intel_backlight之类的东西(我的是intel的核芯显卡),此时可以通过echo 数字 >/sys/class/backlight/intel_backlight/brightness来调节亮度(以前通过/sys/class/backlight/acpi0*的调节范围很小)
3-保存亮度
修改/etc/default/grub
- 在GRUB_CMDLINE_LINUX的值追加acpi_backlight=vendor (也可以填写电脑品牌,如果此行已经有配置了,那么各个配置项需要用空格隔开)
- 在GRUB_CMDLINE_LINUX_DEFAULT追加 acpi_osi=Linux
ps:这两行很相近,只是带DEFAULT的行只作用于normal模式,不作用于recove模式 - update-grub2
禁用独立显卡
现在用的办法是:https://my.oschina.net/xdzy/blog/1616407
以前用的办法是(简单):
查看是否有/sys/kernel/debug/vgaswitcheroo/switch 如果有则执行
echo IGD > /sys/kernel/debug/vgaswitcheroo/switch
echo OFF > /sys/kernel/debug/vgaswitcheroo/switch
查看是否关闭独显,可以执行cat /sys/kernel/debug/vgaswitcheroo/switch,如果看到显示带第二行有类似DIS::OFF字样,说明独立显卡已经关闭了
如果不行,那就用BBSwitch了
KVM
解决nmcli dev 中的wlan0显示unavailable
症状:
- nmcli device 中显示wlan0显示unavailable
- 使用nmcli device wifi搜不到无线网络
解决办法:
- 先确定是不是硬件或软件禁用无线网卡了,执行rfkill list, 显示两个no,说明没有禁用
- 检查无线网卡没有出现在/etc/network/interfaces或对应的.d目录下。
- 禁用并停止dhcpcd。执行systemctl disable dhcpcd; systemctl stop dhcpcd 或者只针对wlan0禁用dhcpcd(在/etc/dhcpcd.conf添加denyinterfaces wlan0)
- 重启networkManager服务systemctl restart NetworkManager,执行nmcli dev wifi就能搜索到无线网络了
杂项
- 安装laptop-mode-tools
- debian10下 搜狗拼音安装后不能正常打字,也不知道是不是因为这个才解决的:apt install ~/下载/sogoupinyin*.deb 前安装libqt4-declarative(解决执行sogou-qimpanel显示缺libqtdeclarative.so.4)