한번 만들면 다음부터는 # sudo install-linux-firmware.sh만 실행하면 됩니다.
sudo -s
cat > /usr/local/bin/install-linux-firmware.sh <<"EOF"
#!/usr/bin/env bash
## Linux firmware install script v.0.2
WORK_DIR=/usr/src
## install type select (zst, xz, flat)
if zgrep -q "CONFIG_FW_LOADER_COMPRESS_ZSTD=y" /proc/config.gz; then
read -p "Kernel supports ZSTD. Use 'make install-zst'? (y/n): " ans
[ "$ans" == "y" ] && INSTALL_CMD="make install-zst"
elif zgrep -q "CONFIG_FW_LOADER_COMPRESS_XZ=y" /proc/config.gz; then
read -p "Kernel supports XZ. Use 'make install-xz'? (y/n): " ans
[ "$ans" == "y" ] && INSTALL_CMD="make install-xz"
else
INSTALL_CMD="make install"
fi
cd $WORK_DIR
# necessary tool check
if ! command -v rdfind; then
echo "rbfind not found. Download and install from source..."
TW_DIR="${HOME}/temp-workbench"
mkdir -pv "${TW_DIR}"
wget -P "${TW_DIR}" https://github.com/pauldreik/rdfind/releases/download/releases%2F1.8.0/rdfind-1.8.0.tar.gz
tar -xf "${TW_DIR}/rdfind-1.8.0.tar.gz" -C "${TW_DIR}"
pushd "${TW_DIR}/rdfind-1.8.0" || exit 1
./configure --prefix=/usr && make && sudo make install
popd
rm -rf "${TW_DIR}
fi
command -v pre-commit || sudo pip3 install pre-commit
# check local git repository
if [ -d "linux-firmware/.git" ]; then
echo "Updating existing repository..."
cd linux-firmware && git pull
else
echo "Cloning new repository..."
git clone https://git.kernel.org
cd linux-firmware
fi
## Black version issue fix (Temporary)
sed -i '/github.com\/ambv\/black/{s|ambv/black|psf/black|; n; s/rev: .*/rev: 24.1.1/;}' .pre-commit-config.yaml
## firmware install
make check
$INSTALL_CMD
make dedup
## update initramfs
#if command -v update-initramfs > /dev/null; then
# sudo update-initramfs -u
#elif command -v dracut > /dev/null; then
# sudo dracut -f
#fi
echo "Firmware installation complete!"
EOF
chmod +x /usr/local/bin/install-linux-firmware.sh
./install-linux-firmware.sh