其实Gentoo的arm stage3已经很久没更新了
我曾也想自己维护个stage3,但是精力不够(主要还是因为树梅派上更新Gentoo太慢了)
如果你是Rpi3,请使用这个:gentoo-on-rpi3-64bit(带有桌面)
本教程安装的是32位的Gentoo系统
我这里呢 也只会说最简单粗暴的安装方法(因为我也没折腾交叉编译什么的,太麻烦了)
这里其实用什么系统都无所谓,但是要确保是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
插卡,上电
找到树梅派的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/localtime
echo "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
连接
至于细节的配置我就懒得说了