把3.14内核的linux安装到emmc

最初办法:

适用前提:参见@whysy 应广大人民群众要求,搞个N1通过U盘跑LINUX(armbian)的教程 https://www.right.com.cn/forum/thread-322991-1-1.html
感谢各位大仙的辛勤探索和付出!
一、原理:前面帖子中,Linux系统启动后,查看系统启动参数,命令为:

  1. cat /proc/cmdline
    出来的结果为:
root=LABEL=ROOTFS rootflags=data=writeback rw console=ttyS0,115200n8 console=tty0 no_console_suspend consoleblank=0 fsck.fix=yes fsck.repair=yes net.ifnames=0 mac=${mac}

注意输出中的 root=LABEL=ROOTFS,说明只要我们把 data 分区的标签修改为 ROOTFS,应该就可以从 emmc 上启动了。
二、相关的命令(用 root 用户执行)

  1. 把系统复制到 emmc,注意,此命令会破坏原有 android 系统的 boot、data 分区

  2. 如果运行 nand-sata-install 之前注释掉 /root/install.sh 110~128行,可以避免写入 boot 和 dtb 分区

 nand-sata-install

三、一些限制:
1,N1我只找到适用 3.14 内核的dtb文件,gxl_p230_2g.dtb,适用于 4.16 内核的dtb还没有找到,所以在4.16 内核下,没有 /dev/data 这个设备文件,所以无法用此方法。
2,启动信息还是需要从U盘读取,所以没法省略一个U盘。
3,如果运行升级命令,有新的uboot 文件或者是内核升级时,请在升级前把U盘插上,并把U盘的第一个分区挂载到 /boot 目录下面,否则有可能导致升级不成功甚至系统无法启动。命令:

mount /dev/sda1 /boot

四、为什么要多此一举,而且还破坏了原有的 android 系统?
因为内置的 emmc 比外置的U盘快!

追加信息:另外找了1台N1测试,在把 /root/install.sh 的110~128行注释掉,避免写入 boot 分区和 dtb 分区的情况下,两个系统可以并存。

参见https://www.right.com.cn/forum/forum.php?mod=viewthread&tid=323194

完全安装入emmc,解决uboot读取 ext4 分区文件失败的问题

原因是ext4 分区在创建的时候,默认加入了 64bit 和 metadata_csum 的特性,而这个特性暂时不被 uboot 支持,所以有一定的机会读取失败。
解决办法就是重新用U盘启动之后,关闭这两个文件系统的特性。参考:My filesystem has too many bits

重新上传 install.sh.gz 和 _install.sh.gz,
install.sh 用于首次安装到 emmc 的时候用,
_install.sh 用于已经完成安装,只是需要设置从 emmc 启动的时候用(注意:因为要修改data 分区的属性,所以请务必从U盘启动之后再运行这个文件)。

试验了一把,现在完全不需要U盘,直接从 emmc 启动 armbian 了。
一、安装的步骤,见之前的帖子 N1把Armbian 系统rootfs写入data分区(T1应该同样适用),步骤一样,只需在安装到 emmc 之前,把U盘内的 install.sh 文件替换成附件文件,然后执行 nand-sata-install 。

注意:附件是个压缩文件,直接解压缩出来即可放在 /root 目录下面(替换原文件)

1.  gunzip install.sh.gz
2.  chmod a+x install.sh

二、感兴趣的同学可以看下面的原理说明:
基本原理:uboot 命令中支持读取 ext4 文件系统,所以:
1,在把root系统安装到 emmc
2,设置uboot 里面的环境变量,让系统先尝试从U盘启动,如果没有U盘的话,再尝试 emmc 的data分区上的armbian 相关文件
3,如果都没有,再尝试启动盒子上的 android 系统。

三、风险:
1,不会破坏系统上原先的android 系统,但是安装了 armbian 系统之后,没有一定的linux 基础知识,你可能回不去 android 系统。
2,基于我自己的测试,ext4load 命令偶尔会读取不了文件,所以想尝试的同学,需要一个大心脏,有一定的机率失败。 这个风险已经修正2,因为安装脚本并不会格式化 data 分区,所以如果 data分区剩余空间不足的话,会导致安装和启动失败,请自行检查emmc 空间容量。

四、系统是直接启动到 armbian 了,想回到 android 怎么办?android 和 armbian 可以自由切换
很简单,启动到 armbian 系统后,只需要把 /boot/s905_autoscript 改个名字,重新启动就会跑到 android 系统去了。如果想回到armbian 系统,只需要在 android 系统里面,把 /data/boot/下面 s905_autoscript 名字改回来就行了。

转自https://www.right.com.cn/forum/thread-327496-1-1.html

进阶办法

之前大多数的linux脚本都是把系统安装在了/dev/data分区下,由于系统过于臃肿,5G的空间除了系统,也装不了多少东西。出于这个原因,我把rootfs 写到了/dev/system下。
期望目标是 :
1,分区对应如下:

/dev/system   /
/dev/data     /data
/dev/cache    /home

2.尽可能精简rootfs分区大小,内存占用,尽量控制在800M/150M 以内,把资源留给应用。

现在提供给大家的这个版本是刚刚装好以后部署到/system的一个状态,现在的系统占用大概为680M左右。

固件使用说明:(链接:https://pan.baidu.com/s/1S14fdX8KLeMQmHIkbY98EQ 密码:jon9)
把gz文件和reconvery.sh 放在n1 的linux U盘的同一个目录里,用U盘启动。

1. 先执行chmod +x ./reconvery.sh 加上执行权限
2. sudo ./reconvery.sh 执行脚本,写入到emmc.
3.用户名: root/1234, pi/pi

预装了一个memcached 的服务用来加速磁盘读写性能的。
4.无线网络目前还没有驱动起来。等后面慢慢加。

4. swap暂时没有使用,大家可以自己添加。。
5. /etc/fstab的挂载表如下:

    /dev/system     /
    /dev/data       /data
    /dev/cache      /home/

说明:由于未知原因,请不要使用uuid 代替设备名用于 fstab挂载
恢复脚本:

#!/bin/sh

echo "开始恢复到/dev/system分区."
mkdir /tmp/system
chmod 777 /tmp/system
IMAGE_KERNEL="/boot/zImage"
IMAGE_INITRD="/boot/initrd.img-$VER"
PART_ROOT="/dev/system"
DIR_INSTALL="/tmp/system/"
IMAGE_DTB="/boot/dtb.img"


echo "挂载/dev/system分区"
      if grep -q /dev/system /proc/mounts ; then
      echo "SYSTEM内容将被清空."
      umount -f /dev/system
    fi
    mkdir -p /tmp/system



 echo "正在重建SYSTEM文件系统..."
    mke2fs -F -q -t ext4 -m 0 /dev/system || exit 1
    e2fsck -n /dev/system || exit 1
    resize2fs -s /dev/system || exit 1
    tune2fs -O ^metadata_csum /dev/system || exit 1
    echo "格式化完成."
   
echo "重新挂载/dev/system分区"
mount -o rw $PART_ROOT $DIR_INSTALL


 echo  "开始解压到SYSTEM..."
        tar -zxvf ./diet_baseline_rootfs.tar.gz -C $DIR_INSTALL
        mv $DIR_INSTALL/backup_root/* $DIR_INSTALL/
        rmdir $DIR_INSTALL/backup_root 
         echo "完成."
echo "同步磁盘 ...."
        sync;sync;sync;

umount /tmp/system
echo "*******************************************"
echo "系统已经写入到system中,请关闭系统后拔除引导U盘,再次上电"
echo "*******************************************"

脚本测试:
在ubuntu16.04下,有2个问题:

1.resize2fs -s /dev/system 不支持 -s 参数,
解决办法:
需要修改脚本,手工去除这个参数后再次运行脚本
2.tune2fs -O ^metadata_csum /dev/system 这个命令不支持。

解决办法:
等从emmc启动后,再次运行tune2fs -O ^metadata_csum /dev/system
在debian 9.5的系统下,没有这个问题。

转自 https://www.right.com.cn/forum/forum.php?mod=viewthread&tid=332259&page=1

终极完美办法

综合以上人的帖子,请教7ji,最后得到的办法

  1. Burn Armbian_5.44_S9xxx_xxxxx_xxxxx_3.14.29_xxxxx_20180729.img to a usb device, set the boot files
    (本身文件适配的s905w 2G的设备,因此启动项要修改)
  2. Boot Armbian_5.44 from the usb device, if the partition table is not set, the cmd to set the amlogic partition table is like this:
    启动
wget https://gitee.com/xiayang0521/amlogic-s9xxx-centos/releases/download/install-Armbian-kernel3.14-to-emmc/ampart-v1.3-aarch64-static.gz
gunzip ampart-v1.3-aarch64-static.gz
mv ampart-v1.3-aarch64-static ampart
chmod a+x ampart
./ampart /dev/mmcblk0  -m dclone boot::256M:1 data::-1:4 
reboot

分区结果

===================================================================================
ID| name            |          offset|(   human)|            size|(   human)| masks
-----------------------------------------------------------------------------------
 0: bootloader                      0 (   0.00B)           400000 (   4.00M)      0
    (GAP)                                                 2000000 (  32.00M)
 1: reserved                  2400000 (  36.00M)          4000000 (  64.00M)      0
    (GAP)                                                  800000 (   8.00M)
 2: cache                     6c00000 ( 108.00M)                0 (   0.00B)      0
    (GAP)                                                  800000 (   8.00M)
 3: env                       7400000 ( 116.00M)           800000 (   8.00M)      0
    (GAP)                                                  800000 (   8.00M)
 4: boot                      8400000 ( 132.00M)         10000000 ( 256.00M)      1
    (GAP)                                                  800000 (   8.00M)
 5: data                     18c00000 ( 396.00M)     on condition (     end)      4
===================================================================================
  1. Input the CMD lines to install to emmc:
cd /root
wget https://gitee.com/xiayang0521/amlogic-s9xxx-centos/releases/download/install-Armbian-kernel3.14-to-emmc/files_install_emmc.zip
unzip files_install_emmc.zip
cd files_install_emmc/

此时需要修改files_install_emmc里面两个boot文件夹里的dtb和uEnv 适配你的设备,然后才能

bash install.sh #(use install-centos.sh, if you have a centos-root-file-system.tar.gz )
bash boot_from_emmc.sh
reboot # !!!别移除优盘,直至系统从内置启动,此次启动以后再也无需优盘启动。

https://gitee.com/xiayang0521/amlogic-s9xxx-centos/releases/tag/install-Armbian-kernel3.14-to-emmc

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,290评论 4 363
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,399评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,021评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,034评论 0 207
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,412评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,651评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,902评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,605评论 0 199
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,339评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,586评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,076评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,400评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,060评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,083评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,851评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,685评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,595评论 2 270

推荐阅读更多精彩内容