建立开发环境

由于FsuOS是运行在嵌入式Linux上,我们建议的开发环境是桌面Linux系统。

当前Linux操作系统主要分为3个派系:Debian系,Redhat系,Arch系

3种系统用起来差不多,Debian系的ubuntu非常流行,Redhat系的centos系列也多用于服务器,Arch系太过于简陋,用户较少。 国内的基本都是基于ubuntu然后定制了界面,不推荐,ubuntu的小毛病基本都没少,还多出不少新的小毛病,只是界面更像windows了一些。

由于进行FsuOS的开发,会长期处于Linux环境下,因此我们建议在研发电脑上直接安装Linux系统,并长期使用,当前的Linux完全满足工作需要,也有QQ,Weixin,wps可以正常工作和交流。

我们建议使用novell公司发布的openSUSE Tumbleweed,作为你的桌面系统,原因如下:

  1. 安装后,基本不需要做额外的配置,声卡,显卡,wifi,中文输入法,shell/vi,都处于一种合适的状态。ubuntu,fedora等发行版经常遇到wifi,显卡,声卡不能用的奇怪问题,需要解决。Opensuse即开即用,基本不折腾。
    注意1:由于当前wayland有和xorg并行并代替的趋势,但是wayland仍不完美,尤其对中文输入法,建议安装后继续使用xorg后台的桌面,在登录节面,点击用户名后,右下角可以选择"gnome on xorg". 注意2:建议选择gnome作为桌面系统,kde虽然更好看一些,但是响应速度较慢,奇怪问题的概率略高于gnome。
  2. 软件版本非常新,版本更新非常快。 centos等软件更新较慢,ubuntu软件更新也较快。opensuse几乎每周一个更新。
  3. 软件质量较高,使用过程中崩溃少,报错少。 这个主要指图形软件,对比ubuntu,个别安装的程序崩溃较多,opensuse就少的多。

opensuse相比ubuntu的劣势在于,有些比较流行的项目是基于ubuntu做的,往往会提供基于ubuntu的部署包,opensuse则需要自己研究。

总之,使用opensuse基本不需要面对和解决操作系统的问题,只要关注自己使用的软件,非常的节省时间。

编程语言要求:

  1. 熟练掌握C++编程,熟悉状态机概念,熟悉异步。
  2. 熟练掌握PHP

使用opensuse的问题:

  1. 安装新系统后输入法怎么都不出来,除了检查fcitx-libpinyin是否安装,都正常的话 rpm -qa|grep fcitx-libpinyin
    删除所有的ibus
    sudo zypper remove ibus*
    再注销,看登录窗口,点用户名,提示输入密码,此时,看右下角,有个齿轮,选择“Gnome on Xorg"

  2. 如果opensuse的wifi坏了,怎么修
    这个很久之前遇到过,现在基本碰不到,如果遇到了建议你首先换系统,不建议折腾,实在想折腾就google下自己按照驱动。

  3. 如果opensuse的gnome坏了,怎么修
    这个真遇到了,我先做了zypper dup做了系统升级,升级后还能用,用了2天,突然启动不了了,启动图形界面就卡死。 做以下动作

  • grub引导界面,选择opensuse的引导项,按e进入编辑界面,在linux那一行,就是内核配置那一行,最后加一个3,然后f10引导。这样就进入了运行3模式,就是终端。
  • 输入root用户和密码,然后重新安装 zypper in xf86-video-intel
    zypper in -f xorg-x11*
    重启,就好了
  1. PHP8默认不提供yaml的扩展,需要自己安装
    zypper install php8-devel
    pecl install yaml
    然后/etc/php8/conf.d/yaml.ini
    extension=yaml.so
    重启 systemctl apache2 restart
    就好了

  2. openSuse由于更新太快,2023-11用上了最新的6.6内核,结果发现nvidia显卡开机的时候会卡住10十几秒,dmesg发现
    pci Unable to change power state from D3cold to D0
    是电源管理的问题, 通过往grub添加pcie_port_pm=off,关闭pcie的电源管理,就可以解决

sudo vi /boot/grub/grub.conf
linux /boot/vmlinuz-6.6.1-1-default root=UUID=473503a0-a4eb-4616-866f-9c1d6df9864b splash=silent quiet showopts splash=silent mitigations=auto pcie_port_pm=off quiet