配置一个Linux开发环境

本文约 2200 字,阅读需 5 分钟。

由于iMac到期,加上工作内容的改变,申请更换成了高级开发机,主要配置如下:9950X + 32Gx2内存 + 4T硬盘,比之前的iMac(2020年申请的)配置提高了不少。

设备到手后,进行了一番配置,花费了小2天的时间,故此记录一下。

1.重装成Linux系统。

默认是Win11系统,但我的日常开发非常依赖Linux系统,故此第一件事就是重装系统(其实还有第0件事,把巨大的台式机在我的小工位上找到合适的位置,并把iMac移出来,准备退库)。

这里还有一个坑,在iMac上制作的Ubuntu启动U盘在文件夹里只能看到EFI部份,一度以为自己制作失败了,其实在Linux上就能看到全部目录。

另外就是MSI的主板是通过Del键启动BIOS的,这个查一下就知道了。

最后就是安装时要选择“图形硬件驱动”,不然系统会识别不出显卡,转而使用llvmpipe作为渲染后端。

2.Ubuntu装之后就是基础环境配置,主要是输入法和键盘映射。默认的是ibus,感觉没必要折腾第3方的如极点、qq、搜狗五笔,ibus默认是支持五笔的,但98五笔需要自己导入db。参考:向ibus-table-wubi里添加属于自己的输入法(98五笔) - deepbreath - 博客园

要注意的是ibus/fcitx是输入法框架,每个框架下有多种输入法,应该先确定系统默认的框架是什么(系统-区域与语言-语言支持-键盘输入法系统),再看输入法是什么(设置-键盘-输入源)

至于键盘映射,一开始使用gsettings,但稍复杂一点就不生效了…

gsettings set org.gnome.desktop.input-sources xkb-options "['caps:ctrl_modifier']"

后面发现有很多开源项目可以实现这个诉求,如:

系统自带的tweaks是基于gsettings的,还是不够灵活。

3.其他就是一些软件安装:

  • 下载deb: VSCode、Linux微信、Chrome
  • AppImage: Snipaste、Joplin(–no-sandbox问题)
  • apt: syncthing

4.最后&最坑的就是企业微信,由于没有Linux版本,但又高频需要使用,如何解决呢?

  • 双系统?太不方便
  • 企微在笔记本(windows/macbook)上使用:也不方便,特别是发代码截图
  • wine: 试了半天,感觉Ubuntu上安装Wine还是有点麻烦的,容易把apt环境搞坏,试了好几次,感觉坑比较多,也担心企微的兼容性(音视频通话、文档、邮件都要能正常使用)和稳定性是个无底洞
  • 最后还是决定使用virtualbox+windows虚拟机来解决,唯一的缺点就是资源占用多点(编译时可以暂停虚拟机),但比较省事,工作环境还是稳定第一,不能太多折腾。这样QQ音乐这些Linux没有的软件也能方便使用起来。

VirtualBox安装过程中也遇到一些问题。

一开始从官网下载deb包,安装virtualbox,再安装Windows11系统,但无法启动:

Kernel driver not installed (rc=-1908)

The VirtualBox Linux kernel driver is either not loaded or not set up correctly. Please try setting it up again by executing

'/sbin/vboxconfig'

as root.

If your system has EFI Secure Boot enabled you may also need to sign the kernel modules (vboxdrv, vboxnetflt, vboxnetadp, vboxpci) before you can load them. Please see your Linux system's documentation for more information.

where: suplibOsInit what: 3 VERR_VM_DRIVER_NOT_INSTALLED (-1908) - The support driver is not installed. On linux, open returned ENOENT.

执行sudo /sbin/vboxconfig也是失败,应该是内核配置问题,参考解决ubuntu24.04 终端安装VirtualBox7.0 启动报错等问题!_virtualbox-dkms-CSDN博客重新安装,期间遇到一些问题,逐一解决之。

核心步骤:

sudo apt-get install build-essential module-assistant
sudo m-a prepare
sudo adduser ${cur_user} vboxusers
sudo apt-get update
sudo apt-get install linux-headers-$(uname -r)
sudo apt-get install build-essential linux-headers-`uname -r`
sudo apt-get --reinstall install virtualbox-dkms
sudo dpkg-reconfigure virtualbox-dkms
sudo modprobe vboxdrv

一是安装时总失败(可能是之前安装wine搞坏的),如下:

sudo apt install build-essential 

正在读取软件包列表... 完成
正在分析软件包的依赖关系树... 完成
正在读取状态信息... 完成                 
有一些软件包无法被安装。如果您用的是 unstable 发行版,这也许是
因为系统无法达到您要求的状态造成的。该版本中可能会有一些您需要的软件
包尚未被创建或是它们已被从新到(Incoming)目录移出。
下列信息可能会对解决问题有所帮助:

下列软件包有未满足的依赖关系:
 libbz2-1.0 : 破坏: libbz2-1.0:i386 (!= 1.0.8-5.1build0.1) 但是 1.0.8-5.1 正要被安装
 libbz2-1.0:i386 : 破坏: libbz2-1.0 (!= 1.0.8-5.1) 但是 1.0.8-5.1build0.1 正要被安装
E: 错误,pkgProblemResolver::Resolve 发生故障,这可能是有软件包被要求保持现状的缘故。

这个其实是libbz的amd64和i386版本不一致,共轭住了,重新安装其中一个即可。

sudo apt-get install libbz2-1.0=1.0.8-5.1

另外执行到sudo apt-get --reinstall install virtualbox-dkms时有如下错误:

正在设置 libqt5qml5:amd64 (5.15.13+dfsg-1) ...
正在设置 virtualbox (7.0.16-dfsg-2) ...
Job for virtualbox.service failed because the control process exited with error code.
See "systemctl status virtualbox.service" and "journalctl -xeu virtualbox.service" for details.
invoke-rc.d: initscript virtualbox, action "restart" failed.
× virtualbox.service - LSB: VirtualBox Linux kernel module
     Loaded: loaded (/etc/init.d/virtualbox; generated)
     Active: failed (Result: exit-code) since Wed 2025-02-12 15:17:41 CST; 2ms ago
       Docs: man:systemd-sysv-generator(8)
    Process: 44266 ExecStart=/etc/init.d/virtualbox start (code=exited, status=1/FAILURE)
        CPU: 15ms

这个需要去BIOS关闭Secure Boot,再开机时会有个Enroll MDK入口,一路YES即可。

如此之后,Windows便正常启动了,细节还是有一些的,而且平时很少接触到。

启动之后,还要安装增强功能,这样Linux和Windows才能互通,如果点设备-安装增强功能...没有效果,就要根据virtualbox版本下载对应的iso: https://download.virtualbox.org/virtualbox/7.0.6/ 。注意是下载到Host,再在Virtualbox的设备-分配光驱中加载这个iso,这样在Windows虚拟机中的驱动器中就有了增强程序的安装文件,安装重启即可。

5.adb问题,参考Ubuntu adb 报错:no permissions (user in plugdev group; are your udev rules wrong?); - feiquan - 博客园

总阅读量次。