Linux Firmware Install

한번 만들면 다음부터는 # 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