找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
查看: 25837|回复: 122

[N1盒子] N1刷入Gentoo系统

 火.. [复制链接]
本帖最后由 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随意刷》帖子。不过还是回复一下吧,写文不易还请支持。

游客,如果您要查看本帖隐藏内容请回复






点评

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

评分

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

查看全部评分

我的恩山、我的无线 The best wifi forum is right here.
谢谢分享,收藏一个
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

电影几部,或者床一个(等待编译用)

我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

火钳刘明,等待编辑

点评

已稍作编辑。  详情 回复 发表于 2019-1-16 21:28
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

感谢分享。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

天哪 在这么弱的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 21:05
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

厉害呀 ,可是gentoo不会用

点评

Gentoo一开始确实不好上手,但用熟悉了确实非常好用。 一开始使用Gentoo的难点在于portage包管理系统远远不如apt yum pacman这些的容易上手,因为USE这一块的设置是其他发行版没有的。 我觉得只要掌握了eselect、e  详情 回复 发表于 2019-1-16 21:04
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| | 显示全部楼层
jarryson 发表于 2019-1-16 20:39
天哪 在这么弱的cpu上装gentoo。。。安装一个软件要多久。。。

n1的处理器相比树莓派还是好多了。安装时间安什么软件了,htop这种小的大概一两分钟就好,至于glibc\c++\cmake这些大的就累了,估计emerge -avuDN @world需要一晚上吧。幸亏这些大的很少更新。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| | 显示全部楼层
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 20:43
大佬越来越多了。。

大佬不敢当,第一次在恩山发帖。我这篇文章也是站在巨人肩膀上写出来的,借鉴了别的大神的镜像制作脚本。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

来自手机 | 显示全部楼层
活捉会编译的大神,凶嘚们冲鸭!
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

路过帮顶!!

点评

顶你,兔子哥。  详情 回复 发表于 2019-1-24 21:47
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

谢谢分享了啊
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| | 显示全部楼层
边缘123 发表于 2019-1-16 20:30
火钳刘明,等待编辑

已稍作编辑。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2024-4-27 09:25

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com 举报电话:0519-86695797

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