标签 Gentoo 下的文章

最近想在 gentoo 上面听音乐, 以前用过 audacious,现在想换成 moc 试试看。

emerge -av moc,结果安装完了以后,放 mp3 没有声音,把 USE 里面各种相关解码的都打开也没有用。

只好回头继续安装 audacious,在安装 audacious 的时候,发现 audacious 依赖与它的插件 audacious-plugins,而 audacious-plugins 中有 USE 是 mp3,打开这个 mp3,发现安装的是 libmp123,安装完成以后, audacious 就可以放 mp3 的文件了。而且 moc 也能通过 libmp123 来播放 mp3 文件。

安装软件 emerge --ask net-analyzer/wireshark

把用户加入 wireshark 组。 gpasswd -a $USER wireshark

如果不像重新登录就可以使用 wireshark,使用下面这条命令。 newgrp wireshark

gentoo 中默认的 wireshark 安装是没有图形显示的. 必须开启 USE 中的 qt 或者 gtk,开启之后重新编译,就可以用 wireshark 来打开软件了。

以前的 virtualbox 可以启动,现在无法启动。 原因是因为更新了内核,而 virtualbox 的模块没有跟着更新,所以导致无法启动。

emerge --ask --oneshot @module-rebuild 使用这个命令重新编译 virtualbox 的模块,然后 reboot,就可以使用 virtualbox 了。

想要 virtualbox 开机自启动的话,编辑 /etc/modules-load.d/virtualbox.conf

vboxdrv
vboxnetadp
vboxnetflt
vboxpci

使用 rt-thread pkgs --update 时候, 提示出错,信息如下:

Traceback (most recent call last):
  File "/home/ptz/.env/tools/scripts/env.py", line 31, in <module>
    from cmds import *
  File "/home/ptz/.env/tools/scripts/cmds/cmd_package.py", line 164
    except Exception, e:
                    ^
SyntaxError: invalid syntax

估计是 python 版本的锅,使用 eselect python list 查看当前版本,使用 eselect python set 2 选择 2.7 版本,然后使用 pkgs --update 顺利更新。

今天在另外一台电脑上面使用 rt-thread 的 env 工具,scons --menuconfig 出现错误,提示如下:

scons: Reading SConscript files ...
scons: Entering directory `/home/ptz/workspace/rt-thread/rt-thread/tools/kconfig-frontends'
scons: Reading SConscript files ...
scons: done reading SConscript files.
scons: Building targets ...
gcc -o kconfig-mconf libs/lxdialog/checklist.o libs/lxdialog/inputbox.o libs/lxdialog/menubox.o libs/lxdialog/textbox.o libs/lxdialog/util.o libs/lxdialog/yesno.o libs/parser/yconf.o frontends/mconf/mconf.o -lncurses
/usr/lib/gcc/x86_64-pc-linux-gnu/7.3.0/../../../../x86_64-pc-linux-gnu/bin/ld: libs/lxdialog/util.o: undefined reference to symbol 'nodelay'
/lib64/libtinfo.so.6: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
scons: *** [kconfig-mconf] Error 1
scons: building terminated because of errors.
sh: /home/ptz/workspace/rt-thread/rt-thread/tools/kconfig-frontends/kconfig-mconf: No such file or directory

初步判断是找不到 nodelay 这个函数,于是使用 nm -D /lib/libncurses.so.6 |grep -w nodelay, 结果发现果然没有 nodelay。然后测试了可以用的电脑,可以用的电脑上面 ncurses 这个动态库是有 nodelay 的,于是查看两台电脑 ncurses 的 USE 区别,结果发现,不能用的 ncurses 开启了 tinfo 这个 USE。然后 nm -D /lib/libtinfo.so.6 |grep -w nodelay,这下果然有了。

所有只需要修改 rt-thread/tools/kconfig-frontends/SConstruct, 把 tinfo 加入库路径即可正常工作了。

首先使用 grep --color -E "vmx|svm" /proc/cpuinfo 检查 cpu 能不能支持虚拟化,注意 biso 里面要开启虚拟化。

内核开启相应选项

[*] Virtualization  --->
    <*>   Kernel-based Virtual Machine (KVM) support

[*] Virtualization  --->
    <M>   KVM for Intel processors support

[*] Virtualization  --->
    <M>   KVM for AMD processors support

[*] Virtualization  --->
    <*>   Host kernel accelerator for virtio net

Device Drivers  --->
    [*] Network device support  --->
        [*]   Network core driver support
        <*>   Universal TUN/TAP device driver support

[*] Networking support  --->
        Networking options  --->
            <*> The IPv6 protocol
            <*> 802.1d Ethernet Bridging

Kernel hacking  --->
        Compile-time checks and compiler options  --->
            [*] Debug Filesystem

File systems  --->
    <*> The Extended 4 (ext4) filesystem
    [*]   Ext4 Security Labels

然后根据需要 qemu 使用的客户端,修改 make.conf

QEMU_SOFTMMU_TARGETS="arm x86_64 i386"
QEMU_USER_TARGETS="x86_64 arm armeb i386"

增加 qemu 的 USE : accessibility gtk ncurses python sdl spice usbredir 然后安装 qemu: emerge --ask app-emulation/qemu 加入 kvm组: gpasswd -a kvm

安装 virt-manager: emerge -v virt-manager,注意开启 USE: gtk 配置让普通用户使用 qemu: groupadd libvirt usermod -a -G libvirt

vim /etc/libvirt/libvirtd.conf

unix_sock_group = "libvirt"
unix_sock_ro_perms = "0777"
unix_sock_rw_perms = "0770"

退出重新登录后,rc-service libvirtd restart 重启服务.

首先使用启动光盘启动, 然后 mount /dev/sda4 /mnt/gentoo 挂载硬盘 lspci -v 1>/mnt/gentoo/root/lspci_v.txt 输出信息到文件。 reboot 重启

然后进入系统之后查看, ar9285 对应的是 ath9k, bcm57780 对应的是 tg3,在内核中 使用 / 来查看对应的内核选项, ath9k 可以直接搜索到, 注意, 如果不能 iwlist scanning的话, 需要开启 ath9k_htc 和 ath10k, 这两个试试.

bcm57780 
  Device Drivers  --->
    [*] Network device support  --->
      -*-   PHY Device support and infrastructure  --->
        <*>   Broadcom PHYs
      [*]   Ethernet driver support  --->
        <*>   Broadcom Tigon3 support

然后重新编译内核,并安装内核,重启,就可以驱动网卡了。 注意: 直接 ifconfig 的时候只能看到 无线网卡 wlp5s0, 看不到有限网卡, 可以 ifconfig -a 就能看到有限网卡 enp9s0

无线网卡配置:

vim /etc/conf.d/net
modules="wpa_supplicant"

复制 /usr/share/doc/wpa_supplicant-/wpa_supplicant.conf.gz 到 /etc/wpa_supplicant/, 然后解压, 如果是 bz2,使用 bunzip2 命令解压。

安装 wireless-tools, 然后使用 iwlist wlan0 scanning 扫描网络, 然后修改 wpa_supplicant.conf 中网线网络的名称和密码。

cd /etc/init.d
ln -s net.lo net.wlp5s0
rc-update add net.wlp5s0 default

注意除非有限网络一直插着网线, 否则不要吧有限网卡添加 到 开机启动中去, 否则开机会等待很长 时间。