fondo
Se informa un error cuando el controlador de dispositivo de bloque de Linux se compila con la versión de kernel 5.15. Así que hay dos formas:
- Modifique el código del controlador para adaptarse a los cambios de versión
- Cambiar a una versión más baja del kernel
El primer método es demasiado bajo para elegir,
así que tuve que cambiar a una versión más baja del kernel, pero encontré muchos problemas cuando pensé en ello.
Reemplazar el kernel especificado
Operación concreta: Operación concreta
Tome la versión 5.4.0 como ejemplo
wget https://raw.githubusercontent.com/pimlie/ubuntu-mainline-kernel.sh/master/ubuntu-mainline-kernel.sh
chmod +x ubuntu-mainline-kernel.sh
sudo mv ubuntu-mainline-kernel.sh /usr/local/bin/
busca y encuentra tu versión deseada
ubuntu-mainline-kernel.sh -r | grep 5.4
instalar esa versión del kernel
ubuntu-mainline-kernel.sh -i v5.4.0
actualizar grub
update-grub
reiniciar
reboot now
verificar
uname -r
Falló, la versión de lanzamiento 22.04 instaló la versión 5.4 del kernel, parece que no funciona.
Cuando busco el kernel con el siguiente comando, solo puedo ver las versiones 5.15 y 5.17. Después de descargar a la fuerza la versión 5.4.0 del kernel, pude elegir reemplazar el kernel después de reiniciar, pero no pude ingresar al sistema. Así que tuve que rendirme.
`apt-cache search linux-image-`
Después de reflexionar sobre ello, todavía no tengo un conocimiento profundo de la versión del kernel de Linux y la versión de lanzamiento. La versión 5.4 es el kernel que se usa en Ubuntu 20.04 y la versión 5.15 se usa en Ubuntu 22.04. La modificación del kernel en diferentes versiones de lanzamiento es definitivamente diferente, por lo que cuando instalé a la fuerza la versión 5.4 en la versión 22.04 de Ubuntu, el sistema no pudo iniciarse en absoluto.
Prueba Ubuntu 20.04
-
Descargue el archivo iso y configure la contraseña de root
-
Instale funciones mejoradas para compartir archivos y mesas de trabajo.
Instale directamente funciones mejoradas y luego reinicie la máquina virtual. -
Configure
el interruptor de fuente espejo de Tsinghua a la raíz, descargue vimsu -
apt-get vim
fuente de respaldo
cp /etc/apt/sources.list /etc/apt/sources.list.bak
sustitución manual o sustitución de comando
vim /etc/apt/sources.list
Vaya al sitio web de origen espejo para encontrar la lista de reemplazo
renovar
apt-get update
intente cambiar el kernel de nuevo
Esta vez en la versión 20.04 de Ubuntu, puede encontrar muchos núcleos de la versión 5.4.
Esta vez pruebo la versión 5.4.75
ubuntu-mainline-kernel.sh -i v5.4.75
Modifique el archivo grub para seleccionar el kernel al arrancar
vim /etc/default/grub
Cambiar a:
GRUB_HIDDEN_TIMEOUT=10
#GRUB_STYLE_HIDDEN
actualizar-grub
update-grub
Reiniciar para verificar
Seleccione la versión 5.4.75 del kernel recién instalada
Compruebe la versión actual, se ha reemplazado con éxito.
uname -r
Instale las herramientas de desarrollo, vuelva a compilar el controlador de bloque
Después de reemplazar el kernel, la función de mejora de la máquina virtual aún no es válida. Todavía no funciona después de quitar el disco VboxGuest y volver a instalarlo.
olvídalo
sudo apt-get install build-essential #安装开发工具包,包含gcc等
instalar encabezados
uname -r
Comprobar la versión actual del núcleo
apt search linux-header
Encuentre todas las versiones de encabezado de la biblioteca de software
sudo apt-get install linux-headers-XXX-X-amd6
encabezado de instalación
Instale una variedad de entornos de kernel
sudo apt-get install kernel-package
#测试中会出现缺这缺那的情况,如以下包会丢失,如编译源码出现错误,可尝试执行
sudo apt-get install flex bison
#和/或
sudo apt-get install libssl-dev
#和/或
sudo apt-get install libelf-dev #libelf-devel or elfutils-libelf-devel
#如仍未解决,可自行搜索或尝试解决方案
#编译生成menuconfig配置内核界面所需文件(非必须)
sudo apt-get install libncurses5-dev
#开发版本管理及自动化包
sudo apt-get install automake#此处可能会有版本号
sudo apt-get install autoconf cvs subversion
Comience a compilar el controlador sbull
Ingrese a la carpeta sbull, haga
La compilación fue exitosa de un solo golpe, y parece que de hecho es un problema con la versión del kernel.
Instale el módulo: insmod sbull.ko
dmesg ver registro
Ver información del módulo: lsmod
Consulte sbull
para ver la información del dispositivo de bloque: fdisk -l /dev/sbulla
Dispositivo de bloque de formato: mkfs.ext4 /dev/sbulla
Dice Sistema de archivos demasiado pequeño para un diario, no sé cómo
montar y usar el dispositivo de bloque. Después de montar y usar el dispositivo de bloque, puede
usar este dispositivo para ver los resultados de carga como otros discos duros
: montar
para ver el uso
Puedes ver que el conteo ha cambiado a 1
Introduzca el dispositivo para crear un archivo
Volver a montar después de desmontar
Se encontró que los datos desaparecieron después de la desinstalación, pero después de volver a montar, los datos se restauraron.
desmontar disco
Desmontar /mnt/sbull Después de esperar más de 30 segundos, al intentar montar el dispositivo /dev/sbulla nuevamente, el sistema solicita que se especifique el tipo de partición en el dispositivo de bloque. Indica que el dispositivo ha sido formateado.
descargar módulo kernel