给笔记本安装Debian系统

之前用的Fedora系统,最近老是死机,估计是和英伟达显卡驱动相关性大,最近两周基本上半小时甚至15分钟就会死机一次,所以就换回Debian系统了。

准备

先将数据备份到一个USB硬盘中。将home中的文件都备份出去。

  • 小文件目录的进行一下压缩,避免copy太慢。
  • git的几个目录下应该是和docker服务相关,压缩后还删除不了,暂时没管。copy回来之前在U盘中删除了。
  • blog拷贝的时候有些文件和NTFS不兼容,字符写不进去,就直接压缩成一个文件了。
  • 备份一些隐藏文件(.ssh/、.profile、.bashrc等)
  • 备份Tab和书签(由于删除了home下的一些隐含文件,如类似.local/,导致Tab没了,书签也忘记备份了:()

备份完文件,将原来的启动项删除。

efibootmgr
// 查看到Fedora的两个启动项

// 删除
sudo efibootmgr -b 0003 -B
sudo efibootmgr -b 0005 -B

sudo -s
cd /boot/efi
rm -fr EFI/fedora/

lsblk
// 看出两块盘,装到第二块盘

做启动盘并安装

安装的是Debian Stable,下载安装包,做了个启动盘。然后进行安装。

一步步安装:

  • 安装选择英文语言
  • 磁盘需要创建swap分区,剩余空间max,选择efi分区
  • 选择国内源(中科大)
  • 选择root密码为空
  • 选择KdePlasma
  • 启动不了,而startx可以启动
  • sudo software-properties-qt,选上Non-Free的源
  • 最后wayland启动不了,选择x11
  • 安装英伟达驱动 sudo apt install nvidia-driver

刚安装发现KDEPlasma桌面版本,和Wayland兼容性不好,不知道是不是英伟达的驱动问题,已经换了英伟达的驱动也是这样。同时关机也发生了几次很慢的情况。后面如果还是这样,可以换换其他的桌面看看是不是它的问题。

init 3
tasksel
//字符模式,卸载并安装类似xfce等其他桌面

![[Pasted_image_20250413112955.png]] 临时处理下关机慢的问题,系统关机时候提示了两个错误:

...
... ACPI Error: No handler for Region [RTCM] ...
... ACPI Error: Region SystemCMOS (ID=5) has no handler ...
... ACPI Error: Aborting method \_SB.PC00.LPCB.EC.SNTM due to pevious error ...
... Job user@1000.service/top running ... User job plasma-kwin_x11 ...
...

先临时将停止job的等待时间修改小。再关机就等待10s。

/etc/systemd/system.conf
// 修改停止等待时间
DefaultTimeoutStopSec=10s
systemctl daemon-reload

安装中文输入法

sudo apt install fcitx5-chinese-addons kde-config-fcitx5
// 添加输入法Pinyin

配置环境变量

alias ll='ls -l --color=auto'

// 由于setup是直接copy过来的,直接设置.profile
  • 配置状态栏宽度,启动图标,鼠标大小
  • 配置双击进目录,配置Meta+T调出Console
  • 常用软件放Favorites地方
  • 系统菜单图标换windows类似图标,桌面背景更新

安装软件

计划安装

Obsidian(AppImage),设置桌面快捷方式

sudo apt install neofetch

virtualbox

chrome ->chromium
edge ---- 不装了

WPS

sudo apt install ttf-mscorefonts-installer //wps安装依赖会安装

sudo apt install meld - 比较工具
	kde有一个Kdiff3,用这个试试。
sudo apt install flameshot
psensor

sudo apt install tree

sudo apt install build-essential
sudo apt install cmake

// airdb
libmysqlclient-dev
readline
cunit

docker
sudo apt install docker-compose-plugin

llama.cpp

miniconda
pytorch
cuda
cudnn

安装virtualbox

wget -O- https://www.virtualbox.org/download/oracle_vbox_2016.asc | sudo gpg --yes --output /usr/share/keyrings/oracle-virtualbox-2016.gpg --dearmor

/etc/apt/sources.list下增加virtualbox.list

deb [arch=amd64 signed-by=/usr/share/keyrings/oracle-virtualbox-2016.gpg] https://download.virtualbox.org/virtualbox/debian bookworm contrib

sudo apt-get update
sudo apt install virtualbox-7.1

sudo usermod -aG vboxusers xxxxxxx

Extension Pack装不上,暂时不装了。

安装WPS

debian中文社区有WPS: repo/README.rst at master · debiancn/repo · GitHub 本次直接从官网下载安装。(注kkgithub.com可以代理github

sudo apt install ./wps-office_12.1.0.17900_amd64.deb 装完后添加字体 ![[Pasted_image_20250413132406.png]] ![[Pasted_image_20250413132828.png]]

安装Cuda,LLAMA.cpp等

查看pytorch和cuda版本关系:pytorch.com ![[Pasted_image_20250413165336.png]]

查看cuda支持版本和驱动的关系 1. CUDA 12.8 Update 1 Release Notes — Release Notes 12.8 documentation

安装驱动和CudaToolkit(最终和KDE不兼容,回退了)

// 驱动
wget https://developer.download.nvidia.com/compute/cuda/repos/debian12/x86_64/cuda-keyring_1.1-1_all.deb
sudo dpkg -i cuda-keyring_1.1-1_all.deb
sudo apt-get update
apt search nvidia-open

sudo apt install nvidia-open
nvcc --version

// CudaTookit 12.6
sudo apt install cuda-toolkit-12-6

// 设置环境变量PATH
cd /etc/profile.d/
sudo vi nvidia-env.sh
export PATH=/usr/local/cuda-12.6/bin${PATH:+:${PATH}}

nvcc --version

这个时候频繁死机,新Nvidia驱动不兼容。立即尝试新驱动下的Wayland:

sudo cat /sys/module/nvidia_drm/parameters/modeset  
apt search kwin  
sudo apt install libnvidia-egl  
sudo apt install libnvidia-egl-wayland  
sudo apt install libnvidia-egl-wayland1    
sudo apt -V install nvidia-driver nvidia-kernel-open-dkms  

还是死机不稳定,卸载全部驱动和cuda,并恢复安装535的驱动:(

sudo apt autoremove nvidia*  
sudo apt autoremove nvidia* cuda*  
sudo apt autoremove nvidia* "cuda*"  

cd /etc/apt/sources.list.d/  
sudo rm cuda-debian12-x86_64.list    

sudo apt update  

sudo apt install nvidia-driver  // 还有包可查看
cd temp/  
sudo apt autoremove cuda-keyring  
sudo apt autoremove libnvidia* libcuda*  
sudo rm /etc/profile.d/nvidia-env.sh    

sudo apt install nvidia-driver  

cat /proc/driver/nvidia/params  | grep Pres

卸载程序如果还有:[residual-config] dpkg -l | grep '^rc' | awk '{print $2}' | xargs sudo apt --purge --yes remove

重装11.8版本对应的CudaTookit及Cudnn。

ls /usr/src/ | grep nvidia  

sudo apt install nvidia-cuda-toolkit nvidia-cudnn  
nvcc --version

最后装出来大概这个组合: ![[Pasted_image_20250413174815.png]]

部署LLAMA.cpp

git clone https://github.com/ggerganov/llama.cpp.git
make GGML_CUDA=1 -j10

安装Docker以及Dify

参考Docker CE 软件仓库镜像使用帮助 - MirrorZ Help

删除原来安装的docker,发现没有安装。

for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove $pkg; done

安装下一步的依赖,curl没装。

sudo apt-get update
sudo apt-get install ca-certificates curl gnupg

信任 Docker 的 GPG 公钥并添加仓库:

sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://mirrors.cernet.edu.cn/docker-ce/linux/debian \
  "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

安装:

sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

设置docker镜像的代理:

/etc/docker/daemon.json

{
  "registry-mirrors": ["https://docker.m.daocloud.io"]
}

sudo systemctl daemon-reload
sudo systemctl restart docker

sudo docker run hello-world
// OK

安装Dify

git clone https://github.com/langgenius/dify.git

cd ./dify/docker
cp .env.example .env

docker compose up -d
docker compose ps

http://localhost/install

http://localhost/install

设置模型提供商DeepSeek

升级Dify

sudo docker compose down

git pull

sudo docker ps

sudo docker compose up -d

检查防火墙(用于网络不通,尝试找防火墙的规则)

sudo ufw status
sudo systemctl status firewalld
sudo nft list ruleset
sudo iptables -L

dpkg -l | grep -E 'ufw|firewalld|nftables|iptables'

systemctl list-units --type=service | grep -E 'ufw|firewalld|nftables|iptables'


sudo systemctl enable nftables
sudo systemctl start nftables

安装ollama

export https_proxy=http://127.0.0.1:7890
export http_proxy=http://127.0.0.1:7890
export all_proxy=socks5://127.0.0.1:7890

curl -fsSL https://ollama.com/install.sh | sh

ollama list

ollama run deepseek-r1:7b
ollama run qwen2.5:7b
ollama run deepseek-r1:8b

设置git ssh的请求代理(没看到效果)

export GIT_SSH_COMMAND='ssh -o ProxyCommand="connect -H 127.0.0.1:7890 %h %p"'

git clone git@github.com:user/repo.git

最后发现网络问题不是问题,换个地方就可以了:)。

Linus和Windows的时钟保持一致

sudo timedatectl set-local-rtc 1

字体问题:

vi ~/.config/fontconfig/fonts.conf

<?xml version="1.0"?>  
<!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">  
  
<fontconfig>  
   <!--  
       为你电脑上的字体配置后备字体序列。每个字体对应一个<alias> 小节。  
   -->  
   <alias>  
       <!--  
           <family> 字段,是你要设置后备字体的字体名称。  
           【提示】字体名称可以是字体的中文名(在WPS等软件看到的名字),例如“宋体”  
       -->  
       <family>Cantarell</family> <!-- 这里的Cantarell是一个英文字体,我们需要为其配置后备中文字体。 -->  
       <!--  
           <prefer> 字段,是一个后备字体的列表,可以包含多个<family>字段。  
           后备字体的显示顺序自上而下排列,优先显示排序靠前的字体,  
           如果靠前的字体没有可以显示的字符,那么后面的字体就会顶上。  
       -->  
       <prefer>  
           <family>DengXian</family>  
           <family>Noto Sans CJK SC</family>            <!-- 建议使用 Noto Sans CJK SC 作为兜底 -->  
       </prefer>  
   </alias>  
  
   <!--  
       后面的设置项,格式都是一样的,这里不再赘述。  
   -->  
   <alias>  
       <family>Hack Nerd Font</family>  
       <prefer>  
           <family>Noto Sans CJK SC</family>  
       </prefer>  
   </alias>  
  
   <alias>  
       <family>Noto Sans</family>  
       <prefer>  
           <family>Noto Sans CJK SC</family>  
       </prefer>  
   </alias>  
  
   <alias>  
       <family>Noto Sans Mono</family>  
       <prefer>  
           <family>Noto Sans Mono CJK SC</family>  
           <family>Noto Sans CJK SC</family>  
       </prefer>  
   </alias>  
  
   <alias>  
       <family>Noto Serif</family>  
       <prefer>  
           <family>Noto Serif CJK SC</family>  
       </prefer>  
   </alias>  
  
   <!--  
       这里的MS Gothic是Windows自带的日文字体,相当于我们的黑体。  
       该字体没有收录简体中文字符,所以我们要设置中易黑体(SimHei)作为后备。  
   -->  
   <alias>  
       <family>MS Gothic</family>  
       <prefer>  
           <family>SimHei</family>  
           <family>Noto Sans CJK SC</family>  
       </prefer>  
   </alias>  
  
   <alias>  
       <family>sans-serif</family>  
       <prefer>  
           <family>Noto Sans CJK SC</family>  
       </prefer>  
   </alias>  
  
</fontconfig>

fc-cache -f -v

安装conda

wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh

-------------------------------
Do you wish to update your shell profile to automatically initialize conda?  
This will activate conda on startup and change the command prompt when activated.  
If you'd prefer that conda's base environment not be activated on startup,  
  run the following command when conda is activated:  
  
conda config --set auto_activate_base false  
  
You can undo this by running `conda init --reverse $SHELL`? [yes|no]  
[no] >>>    
  
You have chosen to not have conda modify your shell scripts at all.  
To activate conda's base environment in your current shell session:  
  
eval "$(/home/xxxxxxxx/miniconda3/bin/conda shell.YOUR_SHELL_NAME hook)"    
  
To install conda's shell functions for easier access, first activate, then:  
  
conda init
-------------------------------

conda创建环境和基础使用

eval "$(/home/xxxxxxxx/miniconda3/bin/conda shell.bash hook)"

$ conda --version  
conda 25.1.1

conda create -n myenv python=3.9     // 创建新环境
conda activate myenv                 // 激活环境

conda remove -n myenv --all

conda deactivate

conda源配置:

vim ~/.condarc

channels:
  - defaults
show_channel_urls: true
default_channels:
  - https://mirrors.ustc.edu.cn/anaconda/pkgs/main
  - https://mirrors.ustc.edu.cn/anaconda/pkgs/r
  - https://mirrors.ustc.edu.cn/anaconda/pkgs/msys2
custom_channels:
  conda-forge: https://mirrors.ustc.edu.cn/anaconda/cloud
  bioconda: https://mirrors.ustc.edu.cn/anaconda/cloud

Conda 添加到环境变量

由于Conda安装的时候没添加到环境变量,只能每次都执行下conda shell那句话。用了几天觉得不方便,添加到环境变量中:

// 设置不自动加载环境
conda config --set auto_activate_base false

// 设置到profile中
conda init

// 添加了信息到.bashrc中。

# >>> conda initialize >>>
# !! Contents within this block are managed by 'conda init' !!
__conda_setup="$('/home/xxxxxxxx/miniconda3/bin/conda' 'shell.bash' 'hook' 2> /dev/null)"
if [ $? -eq 0 ]; then
    eval "$__conda_setup"
else
    if [ -f "/home/xxxxxxxx/miniconda3/etc/profile.d/conda.sh" ]; then
        . "/home/xxxxxxxx/miniconda3/etc/profile.d/conda.sh"
    else
        export PATH="/home/xxxxxxxx/miniconda3/bin:$PATH"
    fi
fi
unset __conda_setup
# <<< conda initialize <<<

conda创建环境安装llamaindex

conda create --name llm_test python=3.12
conda activate llm_test

pip install llama-index

ollama list
ollama pull llama3.1

pip install llama-index-llms-ollama llama-index-embeddings-huggingface

调整下Obsidian的页面宽度:

// obisidian 宽度
// blog/.obsidian/snippets/page-width.css

body {
	--file-line-width: 40rem;  # 默认值为 45rem
}