树梅派安装Gentoo
前言
其实Gentoo的arm stage3已经很久没更新了
我曾也想自己维护个stage3,但是精力不够(主要还是因为树梅派上更新Gentoo太慢了)
如果你是Rpi3,请使用这个:gentoo-on-rpi3-64bit(带有桌面)
本教程安装的是32位的Gentoo系统
我这里呢 也只会说最简单粗暴的安装方法(因为我也没折腾交叉编译什么的,太麻烦了)
准备
- 风扇(编译Gentoo发热很厉害)
- 俩个耐操的TF卡(虽然一个也可以,但是不方便)
- 一个已正常运行的Linux系统(我才懒得在Windows上折腾这个)
- 一个局域网代理(下载/克隆源码用)
准备宿主系统
这里其实用什么系统都无所谓,但是要确保是32位的系统(已知Arch全部更新为64位系统)否则不能Chroot
这里就说Raspbian
这个安装最容易
写入镜像后
在TF卡中的Boot分区新建ssh文件
在你电脑的Linux系统中切换到root用户查看shadow文件:cat /etc/shadow复制root:xxxx一行
然后在root用户下编辑TF卡根目录中的etc/shadow文件删掉root一行并粘贴先前的内容
最后确保TF卡根目录中etc/ssd/sshd_confg的PermitRootLogin没有被#注释且后面为yes:PermitRootLogin yes
安装Gentoo
插卡,上电
找到树梅派的IP:ssh root@IP
登录密码为你电脑系统中的root密码
自行简单配置下系统
用读卡器把另一个TF卡插入到树梅派
创建挂载目录:mkdir /mnt/gentoo
运行fdisk -l查看另一个TF卡的名字,例如/dev/sda
使用你自己喜欢的工具进行分区,例如:
/dev/sda1 100M /boot
/dev/sda2 512M/1G swap
/dev/sda3 Free /挂载分区:mount /dev/sda3 /mnt/gentoo
下载stage3:wget http://gentoo.osuosl.org/releases/arm/autobuilds/current-stage3-armv7a_hardfp/stage3-armv7a-20161129.tar.bz2 -O /mnt/gentoo/stage3.tar.bz2(请export http_proxy=ip:port设置代理下载,或去镜像站下载)
解压:tar xfpj /mnt/gentoo/stage3.tar.bz2 -C /mnt/gentoo/
挂载boot:mount /dev/sda1 /mnt/gentoo/boot
下载portage:wget http://distfiles.gentoo.org/snapshots/portage-latest.tar.bz2
解压portage:tar xjf portage-latest.tar.bz2 -C /mnt/gentoo/usr
安装内核和模块:
cd /tmp/
git clone --depth 1 https://github.com/raspberrypi/firmware/ #请为git设置代理,例如:git config --global https.proxy 'socks5://127.0.0.1:1080'
cd firmware/boot
cp -r * /mnt/gentoo/boot/
cp -r ../modules /mnt/gentoo/lib/配置fstab:nano /mnt/gentoo/etc/fstab
修改为:
/dev/mmcblk0p1 /boot auto noauto,noatime 1 2
/dev/mmcblk0p3 / ext4 noatime 0 1
/dev/mmcblk0p2 none swap sw 0 0编辑启动参数:nano /mnt/gentoo/boot/cmdline.txt
写入:dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p3 rootfstype=ext4 elevator=deadline rootwait
设置时区:cp /mnt/gentoo/usr/share/zoneinfo/Asia/Shanghai /mnt/gentoo/etc/localtimeecho "Asia/Shanghai" > /mnt/gentoo/etc/timezone
更新配置系统
chroot进入系统:
mount -t proc /proc /mnt/gentoo/proc
mount --rbind /sys /mnt/gentoo/sys
mount --make-rslave /mnt/gentoo/sys
mount --rbind /dev /mnt/gentoo/dev
mount --make-rslave /mnt/gentoo/dev
test -L /dev/shm && rm /dev/shm && mkdir /dev/shm
mount --types tmpfs --options nosuid,nodev,noexec shm /dev/shm
chmod 1777 /dev/shm
chroot /mnt/gentoo /bin/bash设置root密码:passwd
配置make.conf:nano /etc/portage/make.conf
自行加入/修改:
GENTOO_MIRRORS="https://mirrors.ustc.edu.cn/gentoo/"
ACCEPT_LICENSE="*"
ACCEPT_KEYWORDS="~* ~arm"
L10N="en-US zh-CN en zh"
LINGUAS="en_US zh_CN en zh"
EMERGE_DEFAULT_OPTS="--verbose=y --keep-going --with-bdeps=y"
MAKEOPTS="-j1"配置package.use:nano /etc/portage/package.use
写入:
dev-lang/python sqlite
net-misc/connman iptables
net-wireless/wpa_supplicant dbus创建gentoo repo配置:
mkdir /etc/portage/repos.conf
nano /etc/portage/repos.conf/gentoo.conf写入:
[DEFAULT]
main-repo = gentoo
[gentoo]
location = /usr/portage
sync-type = rsync
sync-uri = rsync://rsync.mirrors.ustc.edu.cn/gentoo-portage/
# sync-uri = https://github.com/gentoo/gentoo
auto-sync = yes选择profile:
eselect profile list
eselect profile set X #选择自己需要的profile更新系统:
emerge --sync
nohub emerge -auqDN @world > /tmp/emerge.log &通过tail -f /tmp/emerge.log查看进度
现在你可以随时断开ssh连接
如果看到因为错误退出,运行emerge -auvDN @world进行排错
Raspbian可能会因为自己性能低下直接挂掉。。。这时候需要你重新挂载分区并chroot
(一万年过去之后)
清理旧包:emerge --depclean
安装配置一些必要东西
安装必要软件:emerge connman chronyd
配置服务:
rc-update add swclock boot
rc-update del hwclock boot
rc-update add chronyd default
rc-update add connman default
rc-update add sshd default配置ssh:nano /etc/ssh/sshd_config,去掉PermitRootLogin前的#注释并修改后面为yes:PermitRootLogin yes
结尾
到了这里你就可以关机换上TF卡启动了
找到IP并ssh root@IP:port连接
至于细节的配置我就懒得说了