树莓派Pi-hole实操安装教程

树莓派Pi-hole实操安装教程

前言

Pi-hole 是一款开源且免费的 DNS 沉洞服务器(DNS sinkhole),能够在不安装任何客户端侧软件的前提下为设备提供网络内容屏蔽服务,非常轻量易用。搭配上家中吃灰已久的树莓派,我们就能够轻松打造属于自己的广告屏蔽助手。1
但我们该如何真正的配置它呢?在实操中会出现很多的问题,下面将为大家带来自己的一点操作流程以及体会。

速览

本文主要参考教程为此网站,并在此网站的基础上为大家排个雷。大家可以边看它边操作,出现的问题可以来对照解决。

材料

  • 树莓派3B x 1
  • 笔记本 x 1
  • 家用路由器 x 1

安装

首先我们需要将树莓派接入路由器,有线或无线均可,然后远程登录到树莓派上:

(现在默认大家已经来到了ssh或者远程连接的位置。 如果在这方面有所疑惑可以查询树莓派的SSH连接Windows远程桌面连接树莓派

方法1(适合在港澳台以及国外的读者)

Pi-hole 提供了一键安装脚本:

curl -sSL https://install.pi-hole.net | bash

当然我们也可以试试,因为这网络啊实在是太太太难成功了……

方法2 (适合中国大陆的读者)

  • 首先提升通过修改hosts或者别的什么途径来提高你连接境外服务器的速度。(请读者自行查阅
  • 做完了第一步后,你会发现……这样下载的网络永远会被FTL给卡断,所以我们查阅Github的官方文档,得到了以下的解决方案:

1. 手动编译FTL

  • Debian / Ubuntu / Raspbian,下载依赖
sudo apt install build-essential libgmp-dev m4 cmake libidn11-dev libreadline-dev
  • 从源文件编译 libnettle
wget https://ftp.gnu.org/gnu/nettle/nettle-3.6.tar.gz
tar -xzf nettle-3.6.tar.gz
cd nettle-3.6
./configure --libdir=/usr/local/lib
make -j $(nproc)
sudo make install
  • Clone FTL
git clone https://github.com/pi-hole/FTL.git && cd FTL
  • 编译 FTL
./build.sh

注意:这里可能会等很长一段时间,不要担心,你的树莓派没有坏掉,只是……慢……
你可以选择:砸掉买台新的泡杯茶打几把游戏 ,然后等待他慢慢的成功

  • 安装 FTL并重启服务
./build.sh install
sudo service pihole-FTL restart

注:如果一切顺利,此时你应该已经成功下载好了FTL了

2. 下载basic-install.sh的脚本文件

wget -O basic-install.sh https://install.pi-hole.net

3. 在脚本文件中,修改FTLinstall()

  • basic-install.sh中,按下ctrl+F,输入FTLinstall(),搜索到该函数,在函数的第一行添加return 0
    如:
FTLinstall() {
    return 0 # 这里是我添加的return代码



    # Local, named variables
    local latesttag
    local str="Downloading and Installing FTL"
    printf "  %b %s..." "${INFO}" "${str}"

    # Move into the temp ftl directory
    pushd "$(mktemp -d)" > /dev/null || { printf "Unable to make temporary directory for FTL binary download\\n"; return 1; }

    # Always replace pihole-FTL.service
    install -T -m 0755 "${PI_HOLE_LOCAL_REPO}/advanced/Templates/pihole-FTL.service" "/etc/init.d/pihole-FTL"

    local ftlBranch
    local url

    if [[ -f "/etc/pihole/ftlbranch" ]];then
        ftlBranch=$(</etc/pihole/ftlbranch)
    else
        ftlBranch="master"
    fi

    local binary
    binary="${1}"

    # Determine which version of FTL to download
    if [[ "${ftlBranch}" == "master" ]];then
        url="https://github.com/pi-hole/ftl/releases/latest/download"
    else
        url="https://ftl.pi-hole.net/${ftlBranch}"
    fi

    # If the download worked,
    if curl -sSL --fail "${url}/${binary}" -o "${binary}"; then
        # get sha1 of the binary we just downloaded for verification.
        curl -sSL --fail "${url}/${binary}.sha1" -o "${binary}.sha1"

        # If we downloaded binary file (as opposed to text),
        if sha1sum --status --quiet -c "${binary}".sha1; then
            printf "transferred... "

            # Before stopping FTL, we download the macvendor database
            curl -sSL "https://ftl.pi-hole.net/macvendor.db" -o "${PI_HOLE_CONFIG_DIR}/macvendor.db" || true
            chmod 644 "${PI_HOLE_CONFIG_DIR}/macvendor.db"
            chown pihole:pihole "${PI_HOLE_CONFIG_DIR}/macvendor.db"

            # Stop pihole-FTL service if available
            stop_service pihole-FTL &> /dev/null

            # Install the new version with the correct permissions
            install -T -m 0755 "${binary}" /usr/bin/pihole-FTL

            # Move back into the original directory the user was in
            popd > /dev/null || { printf "Unable to return to original directory after FTL binary download.\\n"; return 1; }

            # Installed the FTL service
            printf "%b  %b %s\\n" "${OVER}" "${TICK}" "${str}"
            return 0
        # Otherwise,
        else
            # the download failed, so just go back to the original directory
            popd > /dev/null || { printf "Unable to return to original directory after FTL binary download.\\n"; return 1; }
            printf "%b  %b %s\\n" "${OVER}" "${CROSS}" "${str}"
            printf "  %bError: Download of %s/%s failed (checksum error)%b\\n" "${COL_LIGHT_RED}" "${url}" "${binary}" "${COL_NC}"
            return 1
        fi
    # Otherwise,
    else
        popd > /dev/null || { printf "Unable to return to original directory after FTL binary download.\\n"; return 1; }
        printf "%b  %b %s\\n" "${OVER}" "${CROSS}" "${str}"
        # The URL could not be found
        printf "  %bError: URL %s/%s not found%b\\n" "${COL_LIGHT_RED}" "${url}" "${binary}" "${COL_NC}"
        return 1
    fi
}
  • 再次运行下载程序,这次应该就成了
sudo bash basic-install.sh

验证

我们输入http://树莓派ip/admin,可以看到界面就展现在我们眼前了:
Pi-Hole

引用


  1. 基于树莓派的全能广告屏蔽助手 —— Pi-hole ↩︎

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
树莓派4B的内核开发可以按照以下步骤进行: 1. 首先,下载内核源码。可以使用以下命令克隆树莓派Linux内核源码库: ``` git clone --depth=1 https://github.com/raspberrypi/linux --branch rpi-5.4.y ``` 这将下载最新的树莓派Linux内核源码。 2. 安装所需的依赖项。使用以下命令安装所需的软件包: ``` sudo apt install raspberrypi-kernel-headers sudo apt install git bc bison flex libssl-dev make ``` 这将安装所需的内核头文件和其他开发工具。 3. 进入内核源码目录并进行配置。使用以下命令进入内核源码目录: ``` cd linux ``` 然后,使用以下命令配置内核: ``` KERNEL=kernel7l make bcm2711_defconfig ``` 这将使用默认配置文件进行内核配置。 4. 编译内核并安装。使用以下命令编译内核和模块: ``` make -j4 zImage modules dtbs ``` 然后,使用以下命令安装内核模块: ``` sudo make modules_install ``` 接下来,将设备树二进制文件复制到/boot/目录: ``` sudo cp arch/arm/boot/dts/*.dtb /boot/ sudo cp arch/arm/boot/dts/overlays/*.dtb* /boot/overlays/ sudo cp arch/arm/boot/dts/overlays/README /boot/overlays/ ``` 最后,将编译生成的内核映像复制到/boot/目录: ``` sudo cp arch/arm/boot/zImage /boot/$KERNEL.img ``` 5. 重新启动树莓派。使用以下命令重新启动树莓派: ``` sudo reboot -f ``` 这样,你就完成了树莓派4B的内核开发过程。请注意,这只是一个简单的概述,具体的步骤可能会因为不同的环境和需求而有所不同。建议在进行内核开发之前仔细阅读相关文档和指南。 #### 引用[.reference_title] - *1* [树莓派4B内核驱动开发(二)本地编译内核](https://blog.csdn.net/wuspeng/article/details/114040075)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [树莓派 4B 本地编译内核](https://blog.csdn.net/zhoutaopower/article/details/119416771)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值