FreeBSD系统使用freebsd-update命令从14.2升级到14.3

发布于:2025-09-11 ⋅ 阅读:(21) ⋅ 点赞:(0)

FreeBSD系统使用freebsd-update命令从14.2升级到14.3

升级操作

先升级小版本命令

# 检查系统漏洞补丁
sudo freebsd-update fetch
sudo freebsd-update install

再升级到14.3

sudo freebsd-update upgrade -r 14.3-RELEASE

速度很慢啊

执行install

# freebsd-update install

重启

# shutdown -r now

重启后无法进入xwindows。

在控制台再次执行

# freebsd-update install

执行这句的时候很长时间没有输出.....,在Installing updates...这里卡了很久:


src component not installed, skipped
Creating snapshot of existing boot environment ... done.
Installing updates...

一直卡在这里,也不是事啊。

更新pkg包

先更新pkg包(下次别这样了,这样有可能会干扰升级,还是等install结束再操作)

# pkg-static upgrade -f

后来发现就是慢...大约用了3个小时才搞定。

在更新前,sshd服务也是停的,所以这段时间也无法远程登录上来。

问题解决

现在的问题是桌面无法启动

检查驱动

kldstat | grep i915

没有啊,证明模块没有加载


查看版本信息和显卡

skywalk@x250:~ % pciconf -lv | grep -B4 -i display
    subclass   = HOST-PCI
vgapci0@pci0:0:2:0:     class=0x030000 rev=0x09 hdr=0x00 vendor=0x8086 device=0x1616 subvendor=0x17aa subdevice=0x2226
    vendor     = 'Intel Corporation'
    device     = 'HD Graphics 5500'
    class      = display

尝试手工编译

cd /usr/ports/graphics/drm-61-kmod/
make BATCH=yes install clean
cd /usr/ports/x11-drivers/xf86-video-intel/
make install clean

报错

尝试更新ports

报错,先git stash再git pull

git stash

git pull报错

git pull -f
Updating ec2fdac123..a4ce4534b0
error: The following untracked working tree files would be overwritten by merge:

永久删除未跟踪文件并git pull

git clean -fd
git pull -f

编译安装drm-61-kdm失败

make MAKE_JOBS_UNSAFE=yes install
===>  Building for drm-61-kmod-6.1.128.1403000_5
/bin/mkdir -p /usr/ports/graphics/drm-61-kmod/work/drm-kmod-drm_v6.1.128_4/obj
(cd /usr/ports/graphics/drm-61-kmod/work/drm-kmod-drm_v6.1.128_4 ; /usr/bin/env MAKEOBJDIRPREFIX=/usr/ports/graphics/drm-61-kmod/work/drm-kmod-drm_v6.1.128_4/obj KMODDIR="/boot/modules" SYSDIR="/usr/src/sys" NO_XREF=yes XDG_DATA_HOME=/usr/ports/graphics/drm-61-kmod/work  XDG_CONFIG_HOME=/usr/ports/graphics/drm-61-kmod/work  XDG_CACHE_HOME=/usr/ports/graphics/drm-61-kmod/work/.cache  HOME=/usr/ports/graphics/drm-61-kmod/work PATH=/usr/ports/graphics/drm-61-kmod/work/.bin:/home/skywalk/py311/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:/root/bin PKG_CONFIG_LIBDIR=/usr/ports/graphics/drm-61-kmod/work/.pkgconfig:/usr/local/libdata/pkgconfig:/usr/local/share/pkgconfig:/usr/libdata/pkgconfig MK_DEBUG_FILES=no MK_KERNEL_SYMBOLS=no SHELL=/bin/sh NO_LINT=YES PREFIX=/usr/local  LOCALBASE=/usr/local  CC="cc" CFLAGS="-O2 -pipe  -fno-strict-aliasing "  CPP="cpp" CPPFLAGS=""  LDFLAGS=" " LIBS=""  CXX="c++" CXXFLAGS="-O2 -pipe -fno-strict-aliasing  " BSD_INSTALL_PROGRAM="install  -s -m 555"  BSD_INSTALL_LIB="install  -s -m 0644"  BSD_INSTALL_SCRIPT="install  -m 555"  BSD_INSTALL_DATA="install  -m 0644"  BSD_INSTALL_MAN="install  -m 444" /usr/bin/make obj)
`obj' is up to date.
make: cannot open Makefile.

make: stopped in /usr/ports/graphics/drm-61-kmod/work/drm-kmod-drm_v6.1.128_4
*** Error code 1

Stop.
make: stopped in /usr/ports/graphics/drm-61-kmod

编译安装drm-kmod

cd drm-kmod/
root@x250:/usr/ports/graphics/drm-kmod # make install clean

不管用

或者没装上?

回滚回13.2版本

freebsd-update rollback

回滚成功

freebsd-update rollback
src component not installed, skipped
Uninstalling updates...
 done.

回滚后桌面也出了问题,尝试解决

重新安装drm-515-kmod

sudo pkg install drm-515-kmod

加载内核

kldload i915kms

在startxfce4启动桌面,启动成功!

更新/usr/src目录

非必要步骤

# git clone --depth 1 https://git.FreeBSD.org/src.git /usr/src 

再来一遍(成功)

升级小版本

sudo freebsd-update fetch ; sudo freebsd-update install

重启

# shutdown -r now

重启后升级到14.3

sudo freebsd-update upgrade -r 14.3-RELEASE

更新后install

# freebsd-update install

 再次重启

# shutdown -r now

重启后再来一次install

# freebsd-update install

然后删除并重新安装drm-kmod

pkg delete drm-kmod && pkg install drm-kmod

好了,桌面进去了!

总结

需要严格执行顺序

先小升级

# 检查系统漏洞补丁
sudo freebsd-update fetch
sudo freebsd-update install

升级后最好重启。

再大升级,升级到14.3

sudo freebsd-update upgrade -r 14.3-RELEASE

执行install

# freebsd-update install

install之后重启

# shutdown -r now

重启后再小升级

sudo freebsd-update install

一直执行这个命令到提醒没有新更新为止。一般执行一次即可。

删除并重装 drm-kmod

如果这时候无法进入桌面,报类似这样的错误:

KLD drm.ko: depends on dmabuf - not available or version mismatch

那么就删除并重装 drm-kmod:

pkg delete drm-kmod && pkg install drm-kmod

好了,完成了,桌面也进去了

调试

FreeBSD升级到14.3重启后报错

depends on drmn

dmabuf -not available or version mismath

drmn  -not available or version mismath

升级drm-kmod

pkg upgrade drm-kmod 

不行....

dmesg可以看到报错KLD drm.ko: depends on dmabuf - not available or version mismatch

KLD i915kms.ko: depends on drmn - not available or version mismatch
linker_load_file: /boot/modules/i915kms.ko - unsupported file type
link_elf_obj: symbol linux_kfree_async undefined
linker_load_file: /boot/modules/dmabuf.ko - unsupported file type
KLD drm.ko: depends on dmabuf - not available or version mismatch
linker_load_file: /boot/modules/drm.ko - unsupported file type
KLD i915kms.ko: depends on drmn - not available or version mismatch
linker_load_file: /boot/modules/i915kms.ko - unsupported file type


KLD i915kms.ko: depends on drmn - not available or version mismatch
linker_load_file: /boot/modules/i915kms.ko - unsupported file type
link_elf_obj: symbol linux_kfree_async undefined
linker_load_file: /boot/modules/dmabuf.ko - unsupported file type
KLD drm.ko: depends on dmabuf - not available or version mismatch
linker_load_file: /boot/modules/drm.ko - unsupported file type

这里有类似问题:Solved - upgrading from 14.2 to 14.3 didn't went well | The FreeBSD Forums

编辑文件:/usr/local/etc/pkg/repos # vi kmods.conf

 # vi /usr/local/etc/pkg/repos/kmods.conf

加入内容

FreeBSD-kmods: {
	url: "pkg+https://pkg.FreeBSD.org/${ABI}/kmods_latest",
	mirror_type: "srv",
	signature_type: "fingerprints",
	fingerprints: "/usr/share/keys/pkg",
	enabled: yes
}
   # pkg update
   # pkg upgrade

然后

pkg upgrade -r FreeBSD-kmods

运行的挺好,但是问题没解决

这个小文件intel-kms-pciid-checker.sh 自动检测、下载驱动

intel-kms-pciid-checker.sh
#!/bin/sh

# Short:
#    Checks which kms driver to use with your Intel integrated graphics.
#
# File:
#    intel-kms-pciid-checker.sh
#
# Description:
#    Downloads the parts of the driver source that contain the pciids and then matches the pciid
#    of your Intel integrated graphics against the sourcecode.
#    Does not use svn or portsnap, so nothing is installed or changed in your FreeBSD installation.
#    The relevant files are simply fetched from svn.freebsd.org and Github and stored in the
#    directory this script is run from. No need for elevated permissions.
#
# Howto:
#    Simply put it in your home directory and run it.
#
# Author:
#    madde
#
# Date:
#    25.07.2018


if [ ! -f drm_pciids.h_BASE ]; then
    fetch -o drm_pciids.h_BASE https://svn.freebsd.org/base/releng/11.2/sys/dev/drm2/drm_pciids.h
fi


if [ ! -f i915_pciids.h_DRM-NEXT-KMOD ]; then
    fetch -o Makefile_DRM-NEXT-KMOD https://svn.freebsd.org/ports/head/graphics/drm-next-kmod/Makefile
    PORTVERSION=`grep PORTVERSION Makefile_DRM-NEXT-KMOD | cut -f 2`
    GH_TAGNAME=`grep GH_TAGNAME Makefile_DRM-NEXT-KMOD | cut -f 2`
    echo PORTVERSION=$PORTVERSION

    fetch https://codeload.github.com/FreeBSDDesktop/kms-drm/tar.gz/$GH_TAGNAME?dummy=/FreeBSDDesktop-kms-drm-$PORTVERSION-$GH_TAGNAME_GH0.tar.gz
    tar -Oxf FreeBSDDesktop-kms-drm-$PORTVERSION-$GH_TAGNAME_GH0.tar.gz --include *i915_pciids.h > i915_pciids.h_DRM-NEXT-KMOD
    rm Makefile_DRM-NEXT-KMOD FreeBSDDesktop-kms-drm-$PORTVERSION-$GH_TAGNAME_GH0.tar.gz
fi


pciid=`pciconf -l | grep ^vga | cut -d " " -f 3 | cut -c 6-11`
printf "\nYour "
dmesg | grep -m1 CPU:
echo "pciid to match: $pciid"


base_result=`grep -i $pciid drm_pciids.h_BASE | cut -f 2`
drm_next_kmod_result=`grep -i $pciid i915_pciids.h_DRM-NEXT-KMOD | cut -f 2`
printf "\nSupport in the base driver: ${base_result:-No match}"
printf "\n\nSupport in drm-next-kmod: ${drm_next_kmod_result:-No match}\n\n\n"


echo "Result:"
if [ -z "$base_result" ]; then
    printf "Your graphics isn't supported "
    if [ -z "$drm_next_kmod_result" ]; then
        echo "by neither the driver in base or drm-next-kmod.";exit
        else
            printf "by the driver in base,\nbut the drm-next-kmod port supports it.\n"
            echo "Fetch or update your ports tree:"
            echo "# portsnap fetch extract"
            echo "or..."
            echo "# portsnap fetch update"
            echo "Fetch sources:"
            echo "# svnlite co https://svn.freebsd.org/base/releng/11.2 /usr/src/"
            echo "% cd /usr/ports/graphics/drm-next-kmod"
            echo "# make && make install"
            echo "To /etc/rc.conf, add the following line:"
            echo "kld_list=\"/boot/modules/i915kms.ko\""
            echo "In case you have created xorg.conf or driver-intel.conf remove it."
            echo "Reboot. That's it.";exit
    fi
fi
  
echo "Your graphics is supported by the driver in base, no need to install drm-next-kmod."
echo "To /etc/rc.conf, add the following line:"
echo "kld_list=\"i915kms\""
echo "In case you have created xorg.conf or driver-intel.conf remove it."
echo "Reboot. That's it."

发现apt也没有了

晕了,应该是pkg,pkg还在


网站公告

今日签到

点亮在社区的每一天
去签到