FreeBSD系统使用freebsd-update命令从14.2升级到14.3
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 displaysubclass = HOST-PCI
vgapci0@pci0:0:2:0: class=0x030000 rev=0x09 hdr=0x00 vendor=0x8086 device=0x1616 subvendor=0x17aa subdevice=0x2226vendor = '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 1Stop.
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 typeKLD 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.2018if [ ! -f drm_pciids.h_BASE ]; thenfetch -o drm_pciids.h_BASE https://svn.freebsd.org/base/releng/11.2/sys/dev/drm2/drm_pciids.h
fiif [ ! -f i915_pciids.h_DRM-NEXT-KMOD ]; thenfetch -o Makefile_DRM-NEXT-KMOD https://svn.freebsd.org/ports/head/graphics/drm-next-kmod/MakefilePORTVERSION=`grep PORTVERSION Makefile_DRM-NEXT-KMOD | cut -f 2`GH_TAGNAME=`grep GH_TAGNAME Makefile_DRM-NEXT-KMOD | cut -f 2`echo PORTVERSION=$PORTVERSIONfetch https://codeload.github.com/FreeBSDDesktop/kms-drm/tar.gz/$GH_TAGNAME?dummy=/FreeBSDDesktop-kms-drm-$PORTVERSION-$GH_TAGNAME_GH0.tar.gztar -Oxf FreeBSDDesktop-kms-drm-$PORTVERSION-$GH_TAGNAME_GH0.tar.gz --include *i915_pciids.h > i915_pciids.h_DRM-NEXT-KMODrm Makefile_DRM-NEXT-KMOD FreeBSDDesktop-kms-drm-$PORTVERSION-$GH_TAGNAME_GH0.tar.gz
fipciid=`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" ]; thenprintf "Your graphics isn't supported "if [ -z "$drm_next_kmod_result" ]; thenecho "by neither the driver in base or drm-next-kmod.";exitelseprintf "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.";exitfi
fiecho "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还在