恩山无线论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 10087|回复: 119

[N1盒子] N1刷入Gentoo系统

  [复制链接]
发表于 2019-1-16 20:02 | 显示全部楼层 |阅读模式
本帖最后由 Jerr-_- 于 2019-1-24 13:20 编辑

前排声明,我对名字本应叫"Jerry-_-",而不是"Jerr-_-"。。。当时注册的时候少打了一个字母。。。现在是不是没法改了啊。。。

本文转载自我的博客 https://jerryding.site/phicomm-n1-gentoo/。(平时不怎么上恩山,不大会排版,复制过来后好多超链接也没了,想仔细看还是到我博客看吧。)——括号中这句话本是刚刚发帖子不大会排版时候写的,这是我在恩山论坛的首贴,后来排版好了也没注意删除这句话,结果却成为了有心人对我人身攻击的论据。

另外,此方法从理论上讲不仅仅能刷入Gentoo,别的发行版如Arch等也可以,只不过需要把stage3包换成别的发行版的rootfs,再省略Gentoo相关的操作。[size=2.06em]

前言

本文部分命令参考“自己制作N1的Linux镜像”中的脚本。自己也曾用这个文章中的方法自己制作了一个Gentoo的镜像,也引导启动成功了,然而苦于Gentoo的stage3没有办法设置自动联网不能ssh,而我又没有usb键盘,因此没法操作这个系统。另外想到即使制成了这个系统,以后想要刷入emmc也挺麻烦的,为什么不直接把系统安装进emmc呢?

方法是通过烧录有armbian的启动优盘启动n1,然后使用armbian给emmc分区,写入系统。目前遇到的缺点有两个:emmc只有8G空间,不大够用,或许可以通过大神硬改来解决,我对硬件毫无研究;编译相对于pc还是太慢了,这个实在是无解,慢慢等吧,但成功后系统绝对超级稳定。

至于为什么选择n1,因为它的性价比高呀!我的n1是80咸鱼包邮买来的,而它的配置呢:1.5GHz四核处理器,吊打树莓派3B+,还记得当时用树莓派编译个Glibc花了十多个小时都不行最后不得不放弃,而n1也就花了一个多小时;2G内存,继续吊打;千兆以太网,接着吊打;emmc,凌虐树莓派的sd卡;只有无线网卡和树莓派3B+打平,同款。

另外再吹一波n1的散热,我用树莓派(有散热片无风扇)编译安装Gentoo时温度能上80摄氏度,而用n1(自带散热片无风扇)最高似乎也只有60摄氏度左右。

这里自己打脸了,刚刚编译cmake最高温度到了68摄氏度。

至于为什么选Gentoo系统呢?你们在电脑上安一遍Gentoo,安好后自己体验一下就知道它比别的发行版牛逼在哪了。简单说说吧,Gentoo几乎所有软件包都需要自己编译,而编译时候会设置USE,这使得它完全是针对你特定的机器进行优化的,肯定比ubuntu那些各个机器通用的发行版稳定且性能好。另外它不会像Arch那样整天滚动升级且有概率滚挂。

废话不多说了,开始教程:


准备工作
  • 刷好官改系统的n1一台
  • 烧录有armbian系统的优盘一个
  • 前两个准备工作,可参考前一篇博文
  • 电脑一台
  • 电影几部,或者床一个(等待编译用)
  • (可选)操作之前建议先在自己电脑上装Gentoo体验一下效果,对大概安装步骤有所了解,可参考这篇博文。


emmc分区、格式化

首先,通过优盘启动armbian,ssh连接上它,自行设置root密码,之后输入

fdisk /dev/mmcblk1

然后仔细阅读这一段,根据提示输入括号中的黑体字,每输入一个按一下回车确认。这里切记磁盘一定要用mbr分区表而不是gpt分区表(输入o)。自行创建两个分区。第一个分区分128M(n 1 默认+128M ),作为启动分区(t c),第二个分区作为root分区(n 2 默认 默认)。最后看一眼分区是否正确(p),正确的话确认退出(w),不确认的话退出重来(q)。

分区完毕后进行格式化。

mkfs.ext4 /dev/mmcblk1p2
mkfs.vfat -F32 /dev/mmcblk1p1

下载解压stage3,设置make.conf

先挂载分区并下载解压stage3

mkdir /mnt/gentoo
mount /dev/mmcblk1p2 /mnt/gentoo
cd /mnt/gentoo
wget https://mirrors4.tuna.tsinghua.e ... 64-20180907.tar.bz2
tar vxpf stage3-* --xattrs-include='.*' --numeric-owner

然后编辑make.conf

nano /mnt/gentoo/etc/portage/make.conf

CFLAGS="-O2 -pipe -march=armv8-a+crc+fp+simd -mabi=lp64 -mcpu=cortex-a53+crc+fp+simd"
CHOST="aarch64-unknown-linux-gnu"
MAKEOPTS="-j4"

GENTOO_MIRRORS="https://mirrors.tuna.tsinghua.edu.cn/gentoo/"
GENTOO_MIRRORS="https://mirrors.ustc.edu.cn/gentoo/"

L10N="en_US en zh zh_CN"
LC_MESSAGES=C

PORTDIR="/usr/portage" DISTDIR="/usr/portage/distfiles"
PKGDIR="/usr/portage/packages"

ACCEPT_LICENSE="*" ACCEPT_KEYWORDS="~arm64" #这一句很重要EMERGE_DEFAULT_OPTS="--ask --verbose=y --keep-going --with-bdeps=y --load-average"
配置portage镜像源
mkdir /mnt/gentoo/etc/portage/repos.conf
nano /mnt/gentoo/etc/portage/repos.conf/gentoo.conf

[gentoo]
location = /usr/portage
sync-type = rsync
sync-uri = rsync://mirrors.tuna.tsinghua.edu.cn/gentoo-portage/
#sync-uri = rsync://rsync.mirrors.ustc.edu.cn/gentoo-portage/
auto-sync = yes

挂载虚拟文件系统并chroot

cp --dereference /etc/resolv.conf /mnt/gentoo/etc/
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
source /etc/profile
export PS1="(chroot) ${PS1}"
mount /dev/mmcblk1p1 /boot

emerge-webrsync #网速快的大佬可省略
emerge --sync

时区地区设置
echo "Asia/Shanghai" > /etc/timezone
emerge --config sys-libs/timezone-dataecho "en_US.UTF-8 UTF-8" >> /etc/locale.gen
echo "zh_CN.UTF-8 UTF-8" >> /etc/locale.gen
locale-gen
eselect locale list
eselect locale set "en_US.utf8" #命令行一定要用英文!!中文可能乱码。
env-update && source /etc/profile && export PS1="(chroot) $PS1"


下面的命令是安装网络管理器,这一步如果没正常进行,就etc-update一下,按提示先后输入-3和y后再来。
emerge networkmanager

安装内核

这里我们偷懒不自己编译了,直接用别人弄好的现成的。自己编译内核的方法在文章最下面,仅仅是一个思路还没自己尝试。这一段摘抄自这里,安装的是4.18.7内核及模块。

wget https://github.com/yangxuan8282/ ... 8.7_20180922.tar.gz
tar xvf kernel*
cp -R --no-preserve=mode,ownership kernel_*/boot/* /boot/
cp -a kernel_*/lib/* /lib/
rm -rf kernel_*

安装uboot引导

这一段也是摘抄的别人的,我对uboot的原理一无所知,也完全看不懂这段代码两个dd命令的含义,有人看到了还请帮忙留言讲解一下,谢谢。但这段代码亲测可用。

wget https://github.com/yangxuan8282/ ... 20180917/u-boot.bin
dd if=u-boot.bin of=/mnt/mmcblk1 bs=1 count=442 conv=fsync
dd if=u-boot.bin of=/mnt/mmcblk1 bs=512 skip=1 seek=1 conv=fsync
rm -f u-boot.bin

重启前的操作

重启前我们需要添加Networkmanager和sshd的自启动服务:

rc-update add sshd default
rc-update add NetworkManager default

同时我们要修改两个和启动有关的文件。先blkid查看并记住/dev/mmcblk1两个分区的UUID,然后修改下面的文件,自行替换黑体字部分:

nano /etc/fstab

第一分区的UUID   /boot   vfat    defaults        0 2
第二分区的UUID   /          ext4    defaults,noatime    0 1
nano /boot/uEnv.ini
bootargs=root=UUID=第二分区UUID rootflags=data=writeback  rw console=ttyAML0,115200n8 console=tty0 no_console_suspend  consoleblank=0 fsck.fix=yes fsck.repair=yes net.ifnames=0重启后的操作


exit退出chroot环境,然后poweroff关机,拔掉优盘重新插一遍电源等待它启动新刷入的系统。

建议先更新一遍系统

eslelect profile list
eslelect profile set N #这里选你自己喜欢的profile即可
emerge -avuDN @world #现在电影和床派上用场了,耐心等着吧

剩下自行设置hostname等内容吧,这里不再赘述了,直接看Gentoo wiki或者看我别的关于Gentoo的博文吧。


补充:自己编译内核

想要编译最新的5.0内核装逼?来呀快活呀!这里现在只是自己的一点想法,尚未测试成功!仅供参考!一会有时间再试试是否可行,目前已经成功的编译出来了5.0内核的dtb文件,而内核还没开始编译,现在正在更新系统呢。。。为了开机快我换用了systemd的profile,结果有好多东西要编译。昨晚wifi不知为了突然断了,ssh也就这么断了,很难受。。。下面隐藏内容仅仅介绍了如何自己编译内核的思路,不爱折腾可以不看了。(当然,用Gentoo的人又有几个不爱折腾呢。)设置隐藏的目的是自认为写这篇文章花了不少心血,也自认为写的通俗易懂能给别人带来一些启发,想让更多人看到,还请大家帮忙顶一下,谢谢。20190118

更新:测试失败了,这么编译的内核无法引导启动!应该还有别的文件应该修改,我再研究研究!千万不要轻易尝试下面隐藏的内容!!!我试了好几次都变砖了,插入Armbian启动盘也无法引导,这里实名反对那篇标题党的《N1 ARMBIAN系统刷不死的玩法公开,以后刷LINUX随意刷》帖子。不过还是回复一下吧,写文不易还请支持。

首先,下载内核源代码。

emerge “=git-sources-版本号“ #这是kernel.org的内核源代码
#emerge “=gentoo-sources-版本号“ #这个是Gentoo官方打过补丁的内核源代码

然后,复制原有的内核配置,开始编译。

cd /usr/src/linux
cd /boot/config-* .config
make oldconfig #然后猛按回车使用默认的配置,反正看不懂
make menuconfig #这里可自己对内核进行一些配置
make -j4 #火力全开,开始编译
make headers_install modules_install install #安装编译好的内核头文件、内核模块和内核

接着,编译dts文件:

make dtbs
cd arch/arm64/boot/dts/amlogic/
# 在这里可找到编译出来的dtb文件,我们需要的是meson-gxl-s905d-p230.dtb

理论上讲把新编译出来的这些东西替换原有的,就搞定了。。。明天试试。。。今晚先emerge -avuDN @world并编译着内核。另外内核可用电脑进行交叉编译,详见关于树莓派的博文。






点评

应该多来点这样能让人看得懂的教程。  发表于 2019-1-16 20:14

评分

参与人数 4恩山币 +5 收起 理由
懒懒猪 + 1 率全体恩山路由党以及党魁向你学习!
someoneloveU + 1 面对这种帖子,我内心复杂,真不知道说什么好……
a543264 + 1 率全体恩山路由党以及党魁向你学习!
一个大草包 + 2 顶!

查看全部评分

我的恩山、我的无线 The best wifi forum is right here.
发表于 2019-1-16 20:06 | 显示全部楼层
谢谢分享,收藏一个
我的恩山、我的无线 The best wifi forum is right here.
发表于 2019-1-16 20:12 | 显示全部楼层
电影几部,或者床一个(等待编译用)

我的恩山、我的无线 The best wifi forum is right here.
发表于 2019-1-16 20:30 | 显示全部楼层
火钳刘明,等待编辑

点评

已稍作编辑。  详情 回复 发表于 2019-1-16 21:28
来自苹果客户端来自苹果客户端
我的恩山、我的无线 The best wifi forum is right here.
发表于 2019-1-16 20:30 | 显示全部楼层
感谢分享。
来自安卓客户端来自安卓客户端
我的恩山、我的无线 The best wifi forum is right here.
发表于 2019-1-16 20:39 | 显示全部楼层
天哪 在这么弱的cpu上装gentoo。。。安装一个软件要多久。。。

点评

n1的处理器相比树莓派还是好多了。安装时间安什么软件了,htop这种小的大概一两分钟就好,至于glibc\c++\cmake这些大的就累了,估计emerge -avuDN @world需要一晚上吧。幸亏这些大的很少更新。  详情 回复 发表于 2019-1-16 21:01
我的恩山、我的无线 The best wifi forum is right here.
发表于 2019-1-16 20:43 | 显示全部楼层
大佬越来越多了。。

点评

大佬不敢当,第一次在恩山发帖。我这篇文章也是站在巨人肩膀上写出来的,借鉴了别的大神的镜像制作脚本。  详情 回复 发表于 2019-1-16 21:05
我的恩山、我的无线 The best wifi forum is right here.
发表于 2019-1-16 20:48 | 显示全部楼层
厉害呀 ,可是gentoo不会用

点评

Gentoo一开始确实不好上手,但用熟悉了确实非常好用。 一开始使用Gentoo的难点在于portage包管理系统远远不如apt yum pacman这些的容易上手,因为USE这一块的设置是其他发行版没有的。 我觉得只要掌握了eselect、e  详情 回复 发表于 2019-1-16 21:04
我的恩山、我的无线 The best wifi forum is right here.
 楼主| 发表于 2019-1-16 21:01 | 显示全部楼层
jarryson 发表于 2019-1-16 20:39
天哪 在这么弱的cpu上装gentoo。。。安装一个软件要多久。。。

n1的处理器相比树莓派还是好多了。安装时间安什么软件了,htop这种小的大概一两分钟就好,至于glibc\c++\cmake这些大的就累了,估计emerge -avuDN @world需要一晚上吧。幸亏这些大的很少更新。
我的恩山、我的无线 The best wifi forum is right here.
 楼主| 发表于 2019-1-16 21:04 | 显示全部楼层
shnmng 发表于 2019-1-16 20:48
厉害呀 ,可是gentoo不会用

Gentoo一开始确实不好上手,但用熟悉了确实非常好用。
一开始使用Gentoo的难点在于portage包管理系统远远不如apt yum pacman这些的容易上手,因为USE这一块的设置是其他发行版没有的。
我觉得只要掌握了eselect、etc-update这两个命令的用法,基本上是没问题的。
我的恩山、我的无线 The best wifi forum is right here.
 楼主| 发表于 2019-1-16 21:05 | 显示全部楼层
冻冻 发表于 2019-1-16 20:43
大佬越来越多了。。

大佬不敢当,第一次在恩山发帖。我这篇文章也是站在巨人肩膀上写出来的,借鉴了别的大神的镜像制作脚本。
我的恩山、我的无线 The best wifi forum is right here.
发表于 2019-1-16 21:09 来自手机 | 显示全部楼层
活捉会编译的大神,凶嘚们冲鸭!
我的恩山、我的无线 The best wifi forum is right here.
发表于 2019-1-16 21:11 | 显示全部楼层
路过帮顶!!

点评

顶你,兔子哥。  详情 回复 发表于 2019-1-24 21:47
我的恩山、我的无线 The best wifi forum is right here.
发表于 2019-1-16 21:27 | 显示全部楼层
谢谢分享了啊
我的恩山、我的无线 The best wifi forum is right here.
 楼主| 发表于 2019-1-16 21:28 | 显示全部楼层
边缘123 发表于 2019-1-16 20:30
火钳刘明,等待编辑

已稍作编辑。
我的恩山、我的无线 The best wifi forum is right here.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2019-8-25 14:45

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表