Я на RPI4 USB загрузка SSD.
S.O: Ubuntu Desktop 20.04.2 64bit ARM64
Для загрузки на USB без SD-карты Я настроил мою загрузку для загрузки на DECOMPS VMLINUX.
Это связано с отсутствующими возможностями для загрузки на USB, используя конденсированное ядро VMlinu Z
Итак, я использую привязку сценариев для мероприятия APT, которое распаковано ядро после обновления.
Мой скрипт похож на это:
#... controls
zcat vmlinuz > vmlinux
#...
Это работает, но теперь я обнаружил, относится к обновленной версии ядра, этот скрипт:
/usr/src/linux-rasspi-Headers-5.4.0-1028/Scripts / extract-vmlinux
Для меня швовает, что этот скрипт декомпрессирует ядро тоже.
Мой вопрос: лучше использовать этот скрипт, если ZCAT ?
Мне нравится эта команда: # Extract-vmlinux vmlinuz> VMlinux
Это правильная команда?
с уважением, Леонардо
Лучше использовать extract-vmlinux
по нескольким причинам:
extract-vmlinux
знает, как извлечь все виды сжатого ядра, хотя вам все равно понадобится соответствующая утилита командной строки. zcat
работал на вас; простое использование lz4cat
не работает на мне с LZ4-сжатыми ядрами. По другой причине, чем ваша, я написал скрипт для установки ядра, который использует extract-vmlinux
для распаковки ядра Ubuntu, сжатого по LZ4. Это должно помочь вам в вашем стремлении получить то же самое для Raspberry Pi.
Я буду интегрировать ваше решение с моим.
Я буду выполнять на почтовом обновлении APT крюка
Но подумаю, что абаут переехать в ядро пост установочный крючок
Это мой код:
#!/bin/bash -e
#Set Variables
BTPATH=/boot/firmware
CKPATH=$BTPATH/vmlinuz
DKPATH=$BTPATH/vmlinux
EXTRACT_VMLINUX="/usr/src/linux-headers-$(uname -r)/scripts/extract-vmlinux"
if ! [ -x $EXTRACT_VMLINUX ]; then
echo -e "\e[32m$EXTRACT_VMLINUX is not executable\e[0m"
echo -e "\e[32mI will use zcat!\e[0m"
EXTRACT_VMLINUX="zcat -qf"
fi
if [ -e $BTPATH/check.md5 ]; then
if md5sum --status --ignore-missing -c $BTPATH/check.md5; then
echo -e "\e[32mFiles have not changed, Decompression not needed\e[0m"
exit 0
else
echo -e "\e[31mHash check failed, kernel will be furter investigate\e[0m"
fi
fi
mv $DKPATH $DKPATH.bak
if [ ! $? == 0 ]; then
echo -e "\e[31mDECOMPRESSED KERNEL BACKUP FAILED!\e[0m"
exit 1
else
echo -e "\e[32mDecompressed kernel backup was successful\e[0m"
fi
# Decompress the new kernel
echo "Decompressing kernel: "$CKPATH".............."
$EXTRACT_VMLINUX $CKPATH > $DKPATH
if [ ! $? == 0 ]; then
echo -e "\e[31mKERNEL FAILED TO DECOMPRESS!\e[0m"
exit 1
else
echo -e "\e[32mKernel Decompressed Succesfully\e[0m"
fi
#Hash the new kernel for checking
md5sum $CKPATH $DKPATH > $BTPATH/check.md5
if [ ! $? == 0 ]; then
echo -e "\e[31mMD5 GENERATION FAILED!\e[0m"
else
echo -e "\e[32mMD5 generated Succesfully\e[0m"
fi
#Exit
exit 0
Есть проблема:
Если я выполню
$ Extract_vmlinux / boot / прошивка / vmlinuz && echo 'ok'
Вывод будет:
Экстракт-vmlinux: не могу найти VMLINUX.
ОК
Extract-VMlinux, если вы не бросаете ошибку: не делайте выход 1
Это плохое новое
Если мы используем zcat -qf vmlinuz> vmlinux
IT работает, и если не удается проверить его
, так что лучше не использовать экстракт vmlinux и вместо этого используйте zcat.
на Ubuntu 20.04.2 Больше не нужно декомпрессировать ядро на USB на Raspberry Pi 4:
в Config.txt мы можем использовать kernel = VMlinuz
и Работа без декомпрессии.
С наилучшими пожеланиями