分类 Linux 下的文章

系统启动时,按住 ESC 按键即可进入 grub 命令行模式。 ls 可以查看硬盘分区名称,

set root=(hd0, gpt2)
linux /boot/vmlinuxz-5.8.0-43-generic root=/dev/sda1
initrd /boot/initrd.img-5.8.0-43-generic
boot

上面具体的路径可以使用 tab 来进行补全。

录屏软件

sudo apt-get install kazam 安装 kazam 录屏软件,保存为 mp4。 然后安装 ffmpeg

转换

ffmpeg -i kazam.movie.mp4 simpletest.gif
ffmpeg -ss 2 -t 4 -i kazam.movie.mp4 -s 360x720 -r 16 advancedtest.gif 其中, -ss 2 -t 4 表示从从视频的第2秒开始转换,转换时间长度为4秒后停止。 -s用于设定分辨率, -r 用于设定帧数,据说gif有15帧左右就比较流畅了(能看就行了,gif图片体积还是挺大的)。

参考:

https://blog.csdn.net/RedKeyer/article/details/89519984

nvidia 内核配置

[*] Enable loadable module support --->
Processor type and features --->
   [*] MTRR (Memory Type Range Register) support
Device Drivers --->
   Graphics support --->
      [*] VGA Arbitration
Device Drivers --->
   Character devices --->
      [*] IPMI top-level message handler

framebuffer 会和 nvidia 冲突,所以去除一些内核选项。

Device Drivers --->
    Graphics support --->
        Frame buffer Devices --->
            <*> Support for frame buffer devices --->
            < >   nVidia Framebuffer Support
            < >   nVidia Riva support
Device Drivers  --->
    Graphics support  --->
        < > Nouveau (nVidia) cards

CONFIG_FB_EFI 使能时也会导致驱动有一些问题,所以需要配置如下:

Bus options (PCI etc.)  --->
   [*] Mark VGA/VBE/EFI FB as generic system framebuffer
Device Drivers --->
   Graphics support --->
        Frame buffer Devices --->
            [*] Simple framebuffer support

X 配置

  1. USE=“X” 写入 /etc/portage/make.conf.
  2. 配置内核
Device Drivers --->
  Input device support --->
  <*>  Event interface
Device Drivers --->
   Graphics support --->
      Frame Buffer Devices --->
         <*> Support for frame buffer devices --->
         ## (Disable all drivers, including VGA, Intel, NVIDIA, and ATI, except EFI-based Framebuffer Support, only if you are using UEFI)

      ## (Further down, enable basic console support. KMS uses this.)
      Console display driver support --->
         <*>  Framebuffer Console Support

注意: uefi framebuffer 也不能选择,参考 nvidia 部分,使用 simple framebuffer.

  1. VIDEO_CARDS="nvidia"INPUT_DEVICES="libinput synaptics" 写入到 /etc/portage/make.confportageq envvar INPUT_DEVICES 可以用来查看当前的输入设备。
  2. 安装 xorg emerge -av x11-base/xorg-drivers, emerge --ask x11-base/xorg-server。也可以把 xorg-server 替换为 x11-base/xorg-x11xorg-x11 这个包比 xorg-server大,多了很多字体和其他的一些东西,很多用不上,后面需要再专门安装缺少的。
  3. env-update 然后 source /etc/profile

安装 nvidia 驱动

  1. emerge -av x11-drivers/nvidia-drivers 确保 tools 开启,会自动安装 nvidia-settings。
  2. gpasswd -a xyz video, 把用户加入到 vidio 组里面。

startx

  1. 切换到普通用户,然后运行 startx,发现报错,文件找不到等等,具体信息可以在 ~/.local/share/xorg/Xorg.0.log 里面找到。
  2. 配置文件在 /etc/X11/xorg.conf.d/, 示例在 /usr/share/doc/xorg-server-${version}/xorg.conf.example.bz2
  3. /etc/X11/xorg.conf.d/nvidia.conf 里面写入:
    Section "Device"
    Identifier  "nvidia"
    Driver      "nvidia"
    EndSection
  4. 经过仔细搜索发现这是个比较久的问题。18年的时候,就已经出现了。本质的原因是 xorg-server 的 suid 这个 USE 的问题, suid 能够让使用者的权限提升到拥有者的权限,在以前, xorg-server 会默认带有 suid,这样普通用户也可以 startx。后来 xorg-server 增加了 elogind 这个 use, 可以使用 elogind 而不是 suid,这样 普通用户也可以使用 startx 了,而且因为 systemd 的出现,新的 kde 等桌面,要不依赖 systemd,要不依赖于 elogind.
  5. 在 make.conf 里面的 USE 里面增加 elogind,这样全局开启 elogind,然后 emerge -avuDN @world, 然后 emerge --depclean, `emerge
  6. rc-update add elogind boot 把 elogind 增加到 boot 启动里面,否则 pam_elogind 会遇到问题。 参考: https://wiki.gentoo.org/wiki/Non_root_Xorg
    https://wiki.gentoo.org/wiki/Elogind
  7. reboot, 然后 startx 就只是提示没有 xterm 和 twm 了。
  8. emerge -av xterm twm,然后再 startx 就ok 了。
  9. loginctl 后面接不同参数实现不同功能,poweroff reboot suspend hibernate hybrid-sleep 这几个里面休眠还不能用,需要进一步配置,但是关机和重启是可以用的。
  10. 如果希望休眠和恢复增加 hook,可以 写脚本放入 /lib64/elogind/system-sleep/,具体参考: https://wiki.gentoo.org/wiki/Elogind
  11. 可以安装 x11-apps/mesa-progs 来测试 nvidia 显卡。 startx 以后,输入 glxinfo | grep direct 可以查看结果。 还可以运行 glxgears 来查看 fps.
  12. 如果 nvidia 内核模块进行了修改,那么修改了 /etc/modprobe.d/nvidia.conf 之后,还需要 update-modules,然后重新加载模块 modprobe -r nvidia modprobe nvidia

旧系统配置文件

配置文件主要在 /etc/X11/xorg.conf.d/.xinitrc , /etc/X11/Sessions/ 这几个里面。

i3wm

  1. echo ">=x11-wm/i3-4.18 doc" > /etc/portage/package.use/i3 给 i3wm 增加 doc
  2. emerge -av i3 dmenu i3status i3lock 安装 i3wm 相关的软件,其中 i3status 可以用功能更强的 i3blocks 代替,i3bar 可以用 polybar 来代替。
  3. ~/.xinitrc 里面写入 exec dbus-launch --exit-with-session i3 表示使用 i3 作为窗口管理系统。
  4. startx 启动 i3wm,选择默认首次配置地址,选择 win 按键作为 modifier 按键。

双显卡

可以参考 https://wiki.gentoo.org/wiki/NVIDIA/Optimus

参考:

https://wiki.gentoo.org/wiki/Xorg/Guide
https://wiki.gentoo.org/wiki/Non_root_Xorg
https://wiki.gentoo.org/wiki/NVIDIA/nvidia-drivers

增加虚拟内存

linux 除了可以把单独的分区作为虚拟内存以外,还可以使用文件作为虚拟内存。

free -m

mkdir swap

dd if=/dev/zero of=/home/openailab/swap/swapfile bs=100M count=5

mkswap /home/openailab/swap/swapfile

sudo swapon /home/openailab/swap/swapfile

注意: dd 的时候,如果物理内存不够大的话, bs 就设置小一点, count 设置大一点即可,最后的大小是 bs * count。如果 bs 设置的大,会提示错误: dd: memory exhausted by input buffer of size

停用虚拟内存 swapoff -v swapfile

参考:

https://blog.csdn.net/weixin_44422604/article/details/107228847
https://www.cnblogs.com/gouge/p/7770793.html
https://blog.csdn.net/qq_29257691/article/details/100096691
https://www.jb51.net/os/RedHat/534647.html

增加 tmp 空间

有些时候 /tmp 的剩余空间不够,也会导致编译失败,解决方法也很简单,重新指定 tmp 目录即可。

mkdir tmp

export TMPDIR=/home/openailab/tmp

参考:

https://www.cnblogs.com/rainsoul/p/8716201.html
https://blog.csdn.net/bi_hu_man_wu/article/details/61416306
https://blog.csdn.net/qq_34138003/article/details/109390134?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.vipsorttest&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.vipsorttest

face_recognition 安装需要的资源

在 310 上虚拟内存开始的时候,只增加了 500M,结果报错,后来增加了 1500M,编译的时候,观察了一下,高达 87%,tmp 空间也不够了,需要指定 tmp 文件夹。