公告

Gentoo群:87709706,OS群:838664909

#1 2023-05-30 22:26:05

semes
管理团队
注册时间: 2022-11-09
帖子: 24

gentoo on wsl2

如果是家庭版安装 Hyper-V 失败可以尝试另一个脚本 Install_Hyper-V.bat

pushd "%~dp0"
dir /b %SystemRoot%\servicing\Packages\*Hyper-V*.mum >hyper-v.txt
for /f %%i in ('findstr /i . hyper-v.txt 2^>nul') do dism /online /norestart /add-package:"%SystemRoot%\servicing\Packages\%%i"
del hyper-v.txt
Dism /online /enable-feature /featurename:Microsoft-Hyper-V-All /LimitAccess /ALL
安装 Stage 3
在 Gentoo mirror 找符合自己电脑架构的 stage3 文件

若要用 cuda 不建议选带 musl 的,因为 cuda 只支持 glibc
若要用 mingw 建议不用 clang 的,gentoo 上对 clang-mingw 支持不佳
我选了 stage3-amd64-openrc-20221002T170543Z.tar.xz

解压成 tar 放到一个文件夹里(WSL 貌似只支持 tar.gz 和 tar),运行

wsl --import  <取个名字> <安装位置> <stage3 tar文件> --version 2
# 例如
wsl --import  Gentoo . stage3-amd64-openrc-20221002T170543Z.tar --version 2
# wsl --set-default <名字> # 如果有多个 WSL 发行版,设为默认
稍等片刻就能拿到热腾腾的、包含stage3的 ext4.vhdx 了。接着就靠 WSL 自带的 kernel 启动我们的Gentoo!

wsl -d <名字>
配置 Stage 3
参考 Gentoo AMD64 Handbook

配置编译选项
nano -w /etc/portage/make.conf
# 这些设置是由自动构建此阶段的“催化”(catalyst)构建脚本设置的。
# 请查阅 /usr/share/portage/config/make.conf.example
# 以获取一个更详细的示例。
COMMON_FLAGS="-O2 -pipe -march=native"
CFLAGS="${COMMON_FLAGS}"
CXXFLAGS="${COMMON_FLAGS}"
FCFLAGS="${COMMON_FLAGS}"
FFLAGS="${COMMON_FLAGS}"
MAKEOPTS="-j4" # make 时使用四线程

# 注意:这个阶段是在启用了 bindist Use 标志的情况下构建的
PORTDIR="/var/db/repos/gentoo"
DISTDIR="/var/cache/distfiles"
PKGDIR="/var/cache/binpkgs"

# 这将把构建输出的语言设置为英语。在报告错误时,请保持此设置不变。
LC_MESSAGES=C
USE="-X " # 禁用图形
ACCEPT_LICENSE="*" # 允许一切证书 _(:з」∠)_
# 镜像
GENTOO_MIRRORS="https://mirrors.163.com/gentoo/ https://mirrors.aliyun.com/gentoo/"
按 Ctrl+x 保存退出

配置 Portage
# 创建repos.conf目录
mkdir --parents /etc/portage/repos.conf
# 复制 Portage 提供的 Gentoo 仓库配置文件到这个(新创建的)目录
cp /usr/share/portage/config/repos.conf /etc/portage/repos.conf/gentoo.conf
# 更新内容
emerge-webrsync
配置 CPU_FLAGS_*
一些架构(包括 AMD64/X86、ARM、PPC)有称为 CPU_FLAGS_ARCH 的 USE_EXPAND 变量(请酌情将 ARCH 替换为相关的系统架构)。

用于构建编译特定的汇编代码或其他内置函数——通常是手写的或其他额外的, 并且与要求编译器输出针对某个 CPU 功能的优化代码不同。

emerge app-portage/cpuid2cpuflags
echo "*/* $(cpuid2cpuflags)" > /etc/portage/package.use/00cpu-flags
# emerge sys-kernel/linux-firmware # 不建议,占用空间大
语言设置*
echo zh_CN.UTF-8 UTF-8 >> /etc/locale.gen
locale-gen
eselect locale list
eselect locale set <选择 zh_CN.UTF-8 UTF-8 >
echo LC_COLLATE=\"C.UTF-8\" >>/etc/env.d/02locale
. /etc/profile
env-update
其他配置
# 设置历史记录格式
echo export HISTTIMEFORMAT=\"%F %T \`whoami\` \">>/etc/profile
# sed -i.bak '/[c|C]lear/'d /etc/skel/.bash_logout # 取消注销时清屏
# 添加用户
groupadd admin
emerge app-admin/sudo  dev-vcs/git
echo %admin ALL=\(ALL\) ALL >> /etc/sudoers
useradd <你的名字> -g admin
# echo min=1,1,1,1,1>> /etc/security/passwdqc.conf # 禁用密码强度检查
passwd <你的名字>
echo <user>  >>/etc/wsl.conf
echo default = <你的名字> >>/etc/wsl.conf
su <你的名字>

# 解决 libcuda.so.1 is not a symbolic link
CUDAPATH=/mnt/c/Windows/System32/lxss/lib
rm $CUDAPATH/libcuda.so.1 $CUDAPATH/libcuda.so
ln -s $CUDAPATH/libcuda.so.1.1 $CUDAPATH/libcuda.so.1
ln -s $CUDAPATH/libcuda.so.1.1 $CUDAPATH/libcuda.so


~/.bashrc

# If not running interactively, don't do anything
if [[ $- != *i* ]] ; then
        # Shell is non-interactive.  Be done now!
        return
fi

# history
HISTSIZE=100000
HISTFILESIZE=2000000
HISTIGNORE="pwd:history"
shopt -s histappend

# alias from Ubuntu
alias ll='ls -lF'
alias la='ls -A'
alias l='ls -CF'

# wsl proxy
export ip=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}')
alias wget="wget -c"
alias  pwget="wget -e https-proxy=https://$ip:7890 -e http-proxy=http://$ip:7890 -c"
git config --global http.https://github.com.proxy socks5://$ip:7890
git config --global https.https://github.com.proxy socks5://$ip:7890

# Put your fun stuff here.
export PATH=$PATH:/usr/lib/wsl/lib

离线

页脚