yangxuan8282 / phicomm-n1

615 stars 106 forks source link

求支持emmc内运行! #3

Closed kevinshane closed 5 years ago

kevinshane commented 5 years ago

非常感谢老铁的镜像! 希望能早些提供emmc运行的方法, 抛弃蛋疼的u盘! 非常感谢!

isjerryxiao commented 5 years ago

image

kevinshane commented 5 years ago

@Jerry981028 感谢老铁... 忘记说了是alpine的emmc方法 - -! 哈哈... 小白不是很懂, alpine的不知道怎么装进emmc里...

isjerryxiao commented 5 years ago

一样的 fdisk写入mbr,不想折腾uboot的话,分区不要碰到uboot本身和uboot env 如果你不清楚的话就按照我上面fdisk的输出分

lb8023lyy commented 5 years ago

从恩山过来的,看见能装kali,是只能在优盘上运行么。有没有具体点的安装过程

yangxuan8282 commented 5 years ago

没研究过安装到 emmc ,因为没这个需求,暂时也不会考虑,需要的话自己研究下

yangxuan8282 commented 5 years ago

改了下 install.sh ,能把 alpine 安装到 emmc 了,不过这空间感觉你们不感觉小吗

kevinshane commented 5 years ago

@yangxuan8282 非常感谢啊, 求脚本更新! alpine体积真心袖珍啊, armbian随便都上G 这空间确实非常捉急... 不过总比屁股后面插个u盘好多了 :) 其实最主要是因为放着高速的emmc不用, 用低速的u盘怎么都难受...

yangxuan8282 commented 5 years ago

@kevinshane 这是没装桌面的大小,加了的话记得也要 1G 左右,至于 archlinux 和 ubuntu 之类的装上桌面主题,常用软件基本就占到一半了 另外感觉 usb 速度也还行,前提是用稍微好点的设备,而且换系统方便,所以一直没想折腾 emmc

alpine 默认的模式是类似 tinycore 那种,整个系统都在内存里运行,我做的镜像是接近经典安装,而且加了一些软件

修改后的 install.sh 下个版本加吧,另外不知道需不需要也加上 ddbr 那几个脚本

yangxuan8282 commented 5 years ago

@kevinshane alpine 的脚本发了: https://github.com/yangxuan8282/phicomm-n1/blob/master/scripts/install-alpine.sh

适用于最新的 2018-11-09-alpine-n1-aarch64.zip

kevinshane commented 5 years ago

感谢大神!! 不过最新的11-09那个镜像, 直接u盘启动后提示sshd无法启动, 导致无法ssh, 不知是何问题? 转用10-15那个就启动没问题. 不过运行脚本后拔了u盘就无限黑屏中.. 怎么破?

┌─[n1@phicomm]─[~]
└──╼ $ sudo ./install-alpine.sh 
Start script create MBR and filesystem
Start backup u-boot default
4+0 records in
4+0 records out
4194304 bytes (4.2 MB, 4.0 MiB) copied, 0.0889284 s, 47.2 MB/s
Start create MBR and partittion
Start restore u-boot
442+0 records in
442+0 records out
442 bytes copied, 0.00317826 s, 139 kB/s
8191+0 records in
8191+0 records out
4193792 bytes (4.2 MB, 4.0 MiB) copied, 0.377142 s, 11.1 MB/s
Done
Start copy system for eMMC.
Formatting BOOT partition...done.
Cppying BOOT...done.
Create new init config...Image Name:   
Created:      Mon Nov 26 06:46:21 2018
Image Type:   ARM Linux Script (uncompressed)
Data Size:    467 Bytes = 0.46 KiB = 0.00 MiB
Load Address: 00000000
Entry Point:  00000000
Contents:
   Image 0: 459 Bytes = 0.45 KiB = 0.00 MiB
done.
Formatting ROOT partition...
/dev/mmcblk1p2 contains a ext4 file system labelled 'ROOT_EMMC'
    last mounted on /ddbr/install on Mon Nov 26 06:43:46 2018
e2fsck 1.44.4 (18-Aug-2018)
ROOT_EMMC: clean, 11/427392 files, 50723/1706240 blocks
done.
Copying ROOTFS.
Copy BIN
Create DEV
Copy ETC
Copy HOME
Copy LIB
Create MEDIA
Create MNT
Copy OPT
Create PROC
Copy ROOT
Create RUN
Copy SBIN
Copy SRV
Create SYS
Create TMP
Copy USR
Copy VAR
Create new fstab
*******************************************
Complete copy OS to eMMC 
*******************************************
┌─[n1@phicomm]─[~]
└──╼ $ sudo poweroff
yangxuan8282 commented 5 years ago

ssh 运行失败多半是因为前一步的重新划分空间的服务没执行成功导致重新生成 ssh key 没执行,出现这种情况一般是因为用的 usb 设备的问题,建议你换个别的 usb 设备试一下 之前的版本用不了是因为内核名字不同

yangxuan8282 commented 5 years ago

@kevinshane 后来又加了一个脚本: https://github.com/yangxuan8282/phicomm-n1/blob/master/scripts/install-alpine-full.sh

这个脚本是直接从 github 下载 11-09 的镜像,然后把文件从镜像里拷过去,这样的话你随便找一个能启动的版本就能安了,甚至在 armbian 上应该也能把 alpine 安到 emmc

运行之前先装下依赖:

sudo apk add uboot-tools parted zip

或者安装依赖后切换到 root,然后运行:

curl -sSL https://git.io/fpEgJ | sh
shnmng commented 5 years ago

@Jerry981028 大神,你好,请问你是怎么安装到emmc上的,我用作者的脚本,运行完后似乎有问题,不能启动

isjerryxiao commented 5 years ago

请详细描述你的问题 不要用不能启动这种大而空的描述

shnmng commented 5 years ago

@Jerry981028 就是脚本运行完,重启之后,一直在开机画面那里,是不是我少做了什么步骤

isjerryxiao commented 5 years ago

看起来像是uboot没有能加载kernel 你做了哪些步骤

yangxuan8282 commented 5 years ago

@shnmng 你用的哪个镜像和哪个脚本

shnmng commented 5 years ago

@yangxuan8282 脚本是这个https://github.com/yangxuan8282/phicomm-n1/blob/master/scripts/install-arch.sh 镜像是这个https://github.com/yangxuan8282/phicomm-n1/releases/download/archlinuxarm/2018-11-20-arch-n1-xfce4-mods.zip

shnmng commented 5 years ago

@Jerry981028 我用U盘启动后,就运行 @yangxuan8282 大神的脚本,然后重启

isjerryxiao commented 5 years ago

@shnmng https://github.com/yangxuan8282/phicomm-n1/blob/master/scripts/install-arch.sh#L64 脚本里是写了emmc_autoscript但是没有更改uboot的start_autoscript

isjerryxiao commented 5 years ago

你现在有能启动的系统吗 是主线内核吗 贴一下fw_printenv start_autoscript

yangxuan8282 commented 5 years ago

@shnmng 那个镜像的内核基本和 archlinuxarm 的 linux-aarch64 一致,除了加上 OFFSET 的补丁为了能在 N1 的 uboot (2015) 上启动,启动会比别的镜像慢一点,也就是 logo 那里卡的时间长一点,不过既然你如果能从优盘启动的话应该没什么问题 安装到 emmc 的脚本我也试过几次,在我这是没问题的 你插上一个写好镜像的优盘,启动后挂载上 emmc 分区看下文件是否正常

yangxuan8282 commented 5 years ago

@Jerry981028 不知道你看没看过 150balbes 的 install.sh ,安装到 emmc 后只保留 emmc_autoscript,而我的脚本里写的emmc_autoscript.cmd 和他是一致的,所以你所说的 "更改uboot的start_autoscript" 不知道是在哪里指定

isjerryxiao commented 5 years ago

@yangxuan8282 因为我一开始用过了别人修改过的150balbes的install.sh, start_autoscript被改掉了 所以我不知道原来是怎么样的。我现在用的是这样的if usb start ; then run start_usb_autoscript; fi; if fatload mmc 1 1020000 s905_autoscript; then autoscr 1020000; fi; 另外 基于他之前的问题描述 我猜测是uboot没能找到kernel 那问题估计就出在这里。

yangxuan8282 commented 5 years ago

@Jerry981028 别看二手,直接看原版

https://github.com/150balbes/Build-Armbian/blob/master/packages/bsp/aml-s9xxx/install.sh#L59

安到 emmc 后很明显只留了 emmc_autoscript,然后 emmc_autoscript.cmd 内容在这:

https://github.com/150balbes/Build-Armbian/blob/master/config/bootscripts/boot-aml-s9xxx_EMMC.cmd

另外我打包的 archlinuxarm 内核在这:https://github.com/yangxuan8282/phicomm-n1/tree/master/kernel/archlinux/PKGBUILDs/linux-amlogic

isjerryxiao commented 5 years ago

然而如果uboot env中的start_autoscript有误2 那么这些都没用 因为根本就不会加载emmc_autoscript

yangxuan8282 commented 5 years ago

@Jerry981028 你这明显是嘴硬了,我问你 uboot 的 env 怎么指定,还不是通过 *autoscript 文件, mkimage 是为了加上 uboot 的 header 让它可以被 uboot 识别,而一共只有一个 emmc_autoscript 的情况下别的文件根本不会被 uboot 读取,到加载它之前会出什么错? 至于你刚才贴的 if usb start ; then run start_usb_autoscript; fi; if fatload mmc 1 1020000 s905_autoscript; then autoscr 1020000; fi; 我帮你解释一下是什么意思,先看有没有 usb 设备,没有的话从 mmc1 上加载 s905_autoscript 这个 uboot 脚本到内存的 1020000 ,这个在这里是根本没必要的,不信的话你完全可以把 emmc 第一个分区上的启动脚本都删掉,按照 150balbes 的脚本生成一下 emmc_autoscript 看能不能启动 建议你搞不明白的地方先多查一下

isjerryxiao commented 5 years ago

我很抱歉 建议你先拿一个ttl线操作一下uboot再看看我说的话

yangxuan8282 commented 5 years ago

@Jerry981028 虽然目前的对话没什么意义了,不过我理一下大概经过吧:

@shnmng 说写入到 emmc 后无法启动,而你拿的依据是一个不知道是谁改的,可能写的人自己都搞不懂的脚本来对比,认为是我脚本里的的 emmc_autoscript 有问题,而实际我的启动脚本和经过验证过没问题的 150balbes 的启动脚本是一样的,你之后的回复呢一会说 env 有问题,一会说连 ttl ,都是完全在岔开话题说不相关的

@shnmng 建议你重新运行一下安装脚本,把脚本运行的输出导出到文件

./install-arch.sh  2>&1 | tee install.log

然后安装完先别重启,挂载上 emmc 确认下文件是否都已复制:

mkdir -p /tmp/emmc
sudo mount /dev/mmcblk1p2 /tmp/emmc
sudo mount /dev/mmcblk1p1 /tmp/emmc/boot
shnmng commented 5 years ago

@yangxuan8282 @Jerry981028

两位,不好意思,昨天我后来因为从u盘启动一直有问题,所以两位提供的指导我也一直没试成。 我先说下我昨天试了无数遍的U盘无法启动的问题,yangxuan8282 大神,您的archlinux 如果直接从Android下重启(reboot update),似乎怎么都不能从U盘启动,总是进入recovery,我之前也是这个问题,后来用了一下你的alpine镜像U盘启动一次后,就能很顺利用archlinux 镜像U盘启动了(之前没意识到这个),所以昨天晚上直接用archlinux 镜像U盘总是无法启动,今天试了先用一个可以启动的镜像(比如armbian,或者alpine)启动一次,然后就可以了,关于这个问题,我不懂系统的引导机制,猜测是需要先切换到能够U盘引导的模式? 另外我复制到emmc应该是没有什么问题的,复制后,挂载emmc,看文件应该也都复制了,开机时一直在开机画面那里不动,我感觉问题和上面一样,现在是USB启动模式,它又无法切换到emmc 模式?

Jerry981028 大神,您提到的 fw_printenv start_autoscript ,提示 Cannot parse config file '/etc/fw_env.config': Invalid argument 我看了fw_env.config这个文件(我看的是复制到emmc的那一个),内容如下

[alarm@alarm etc]$ cat fw_env.config
# Configuration file for fw_(printenv/saveenv) utility.
# Up to two entries are valid, in this case the redundand
# environment sector is assumed present.
# MTD device name       Device offset   Env. size       Flash sector size
#/dev/mtd2               0x0000          0x20000         0x20000

# segate dockstar:
# /dev/mtd0               0xc0000         0x20000         0x20000

# iomega iconnect
# /dev/mtd0               0xa0000         0x20000         0x20000

# CuBox
# /dev/mtd0               0xc0000         0x10000         0x10000

# CuBox-i/Hummingboard
# /dev/mmcblk0              0x60000         0x2000         0x2000

# Utilite 1
# /dev/mtd1               0x0000          0x2000          0x2000
shnmng commented 5 years ago

@yangxuan8282 另外,您的镜像做得很棒,非常感谢!

shnmng commented 5 years ago
[alarm@alarm ~]$ ls /tmp/emmc/boot -l
total 70142
drwxr-xr-x 14 root root     2048 Nov 28 10:27  dtbs
-rwxr-xr-x  1 root root      520 Nov 28 10:27  emmc_autoscript
-rwxr-xr-x  1 root root      448 Nov 28 10:27  emmc_autoscript.cmd
-rwxr-xr-x  1 root root 26843648 Nov 28 10:27  Image
-rwxr-xr-x  1 root root 10698646 Nov 28 10:27  Image.gz
-rwxr-xr-x  1 root root 17619835 Nov 28 10:27  initramfs-linux-fallback.img
-rwxr-xr-x  1 root root  6226004 Nov 28 10:27  initramfs-linux.img
drwxr-xr-x  2 root root     2048 Nov 28 10:27 'System Volume Information'
-rwxr-xr-x  1 root root  4194304 Nov 28 10:27  u-boot-default.img
-rwxr-xr-x  1 root root      226 Nov 28 10:27  uEnv.ini
-rwxr-xr-x  1 root root  6226068 Nov 28 10:27  uInitrd
[alarm@alarm ~]$ ls /boot -l
total 70132
drwxr-xr-x 14 root root     1024 Nov 20 15:02  dtbs
-rwxr-xr-x  1 root root 26843648 Nov 20 08:57  Image
-rwxr-xr-x  1 root root 10698646 Nov 20 08:57  Image.gz
-rwxr-xr-x  1 root root 17619835 Nov 20 15:20  initramfs-linux-fallback.img
-rwxr-xr-x  1 root root  6226004 Nov 20 15:20  initramfs-linux.img
-rwxr-xr-x  1 root root     1212 Nov 20 17:54  s905_autoscript
-rwxr-xr-x  1 root root     1140 Nov 20 17:54  s905_autoscript.cmd
drwxr-xr-x  2 root root      512 Nov 28  2018 'System Volume Information'
-rwxr-xr-x  1 root root  4194304 Nov 28 10:27  u-boot-default.img
-rwxr-xr-x  1 root root      253 Nov 20 17:52  uEnv.ini
-rwxr-xr-x  1 root root  6226068 Nov 20 15:28  uInitrd

发现emmc中 emmc_autoscript 和 emmc_autoscript.cmd 都是空文件

yangxuan8282 commented 5 years ago

@kevinshane 看大小你的 emmc_autoscript 不像空文件啊,你用 cat 看下,然后也确认下 uEnv.ini 不行的话把这个附件里的文件直接复制进去 emmc_autoscript.zip 还有从优盘启动 linux 没必要从安卓那边reboot update重启,直接断电状态下插上优盘启动就行

shnmng commented 5 years ago

uEnv.ini也是空的

[alarm@alarm boot]$ cat uEnv.ini
[alarm@alarm boot]$

因为我用s905_autoscript替换了emmc_autoscript ,所以没法给您看了,但是我之前cat过了,确实是空的

yangxuan8282 commented 5 years ago

@shnmng 你脚本运行时候肯定是有问题的,不然不会出现这几个空文件

uEnv.ini 的内容是:

dtb_name=/dtbs/amlogic/meson-gxl-s905d-phicomm-n1.dtb
bootargs=root=/dev/mmcblk1p2 rootflags=data=writeback rw console=ttyAML0,115200n8 console=tty0 no_console_suspend consoleblank=0 fsck.fix=yes fsck.repair=yes net.ifnames=0
shnmng commented 5 years ago

我又试了两遍,刚刷完文件内容是有的,然后重启,无法进入系统,然后用U盘进去看,文件内容就变成空的了,这个问题看起来很奇怪了

shnmng commented 5 years ago
[alarm@alarm boot]$ ls
 dtbs                  Image                          initramfs-linux.img          uEnv.ini
 emmc_autoscript       Image.gz                      'System Volume Information'   uInitrd
 emmc_autoscript.cmd   initramfs-linux-fallback.img   u-boot-default.img
[alarm@alarm boot]$ cat emmc_autoscript
[alarm@alarm boot]$ cat emmc_autoscript.cmd
[alarm@alarm boot]$ cat uEnv.ini
[alarm@alarm boot]$
yangxuan8282 commented 5 years ago

@shnmng 你是不是进过安卓

shnmng commented 5 years ago

@yangxuan8282 大神,我看我的情况跟这个很像,是不是因为这个原因

shnmng commented 5 years ago

还有这个 https://www.right.com.cn/forum/forum.php?mod=viewthread&tid=345400&page=1

isjerryxiao commented 5 years ago

@shnmng 我当初怀疑你是uboot环境变量有问题 现在我仍然认为这是可能性最大的问题 image 如图可见,bootcmd是uboot用户无输入超时后默认会执行的,这里bootcmd执行了start_autoscript 若是start_autoscript有误那么uboot肯定是没法正确载入任何东西的(一旦kernel启动了 应该就不会卡logo)

我猜测你可能不能直接操作uboot(需要拆开并且找到uart) 不过既然你有能用的系统 那这也不是问题 如果你没有刷写过自己编译的uboot (这样能确定uboot存放env的区域) 那么请使用如下工具 offset.sh $ ./offset.sh env 可能你不想阅读源码 我简单介绍一下这个工具的用途 他会帮你找到正确的offset(写死了)并且losetup使其成为一个loop device并且将loop device ln -s到当前目录。然后就能和3.14内核一样操作这些块设备了。

具体参见 https://github.com/Jerry981028/n1-setup/blob/master/install.sh#L156-L160 我需要你贴一下fw_printenv的输出(注意处理一下带mac地址等的部分)

shnmng commented 5 years ago

@Jerry981028 大神,我运行fw_printenv命令,一直提示这个

[alarm@alarm ~]$ sudo fw_printenv
Cannot parse config file '/etc/fw_env.config': Invalid argument

然后/etc/fw_env.config文件的内容是(似乎都注释掉了):

[alarm@alarm ~]$ cat /etc/fw_env.config
# Configuration file for fw_(printenv/saveenv) utility.
# Up to two entries are valid, in this case the redundand
# environment sector is assumed present.
# MTD device name       Device offset   Env. size       Flash sector size
#/dev/mtd2               0x0000          0x20000         0x20000

# segate dockstar:
# /dev/mtd0               0xc0000         0x20000         0x20000

# iomega iconnect
# /dev/mtd0               0xa0000         0x20000         0x20000

# CuBox
# /dev/mtd0               0xc0000         0x10000         0x10000

# CuBox-i/Hummingboard
# /dev/mmcblk0              0x60000         0x2000         0x2000

# Utilite 1
# /dev/mtd1               0x0000          0x2000          0x2000
isjerryxiao commented 5 years ago

@shnmng 参考 https://github.com/Jerry981028/n1-setup/blob/master/install.sh#L156-L160

wget -qO /tmp/offset.sh https://raw.githubusercontent.com/Jerry981028/n1-setup/master/offset.sh
chmod +x /tmp/offset.sh
cd /tmp
echo '/tmp/env 0x000000 0x10000 0x10000' |sudo tee /etc/fw_env.config
./offset.sh env

然后才能

sudo fw_printenv
shnmng commented 5 years ago
[alarm@alarm ~]$ sudo fw_printenv
480p60hz_deepcolor=444,10bit
EnableSelinux=enforcing
active_slot=_a
aml_dt=gxl_p230_2g
baudrate=115200
bcb_cmd=get_valid_slot;
boot_part=boot
boot_start=booti 0x11000000 0x13000000 0x1000000
bootargs=rootfstype=ramfs init=/init console=ttyS0,115200 no_console_suspend earlyprintk=aml-uart,0xc81004c0 ramoops.pstore_en=1 ramoops.record_size=0x8000 ramoops.console_size=0x4000 androidboot.selinux=enforcing logo=osd1,loaded,0x3d800000,480p60hz maxcpus=4 vout=480p60hz,enable hdmimode=480p60hz cvbsmode=576cvbs hdmitx= cvbsdrv=0 pq= androidboot.firstboot=0 androidboot.factorystep=0 jtag=apao androidboot.hardware=amlogic androidboot.serialno=CAQDB3104K09292 mac=FC:7C:02:89:F4:AB androidboot.mac=FC:7C:02:89:F4:AB mac_wifi=fc:7c:02:89:f4:aa androidboot.mac_wifi=fc:7c:02:89:f4:aa androidboot.slot_suffix=_a quiet
bootcmd=run start_autoscript; run storeboot;
bootdelay=1
bootfromnand=0
bootup_offset=0x1080240
bootup_size=0x3f4846
cmdline_keys=if keyman init 0x1234; then if keyman read usid ${loadaddr} str; then setenv bootargs ${bootargs} androidboot.serialno=${usid};setenv serial ${usid};fi;if keyman read mac ${loadaddr} str; then setenv bootargs ${bootargs} mac=${mac} androidboot.mac=${mac};fi;if keyman read deviceid ${loadaddr} str; then setenv bootargs ${bootargs} androidboot.deviceid=${deviceid};fi;if keyman read mac_wifi ${loadaddr} str; then setenv bootargs ${bootargs} mac_wifi=${mac_wifi} androidboot.mac_wifi=${mac_wifi};fi;fi;
colorattribute=444,10bit
cvbs_drv=0
cvbsmode=576cvbs
display_bpp=16
display_color_bg=0
display_color_fg=0xffff
display_color_index=16
display_height=480
display_layer=osd1
display_width=720
dtb_mem_addr=0x1000000
env_addr=0x10400000
ethact=dwmac.c9410000
ethaddr=fc:7c:02:89:f4:ab
factory_reset_poweroff_protect=echo wipe_data=${wipe_data}; echo wipe_cache=${wipe_cache};if test ${wipe_data} = failed; then run init_display; run storeargs;if mmcinfo; then run recovery_from_sdcard;fi;if usb start 0; then run recovery_from_udisk;fi;run recovery_from_flash;fi; if test ${wipe_cache} = failed; then run init_display; run storeargs;if mmcinfo; then run recovery_from_sdcard;fi;if usb start 0; then run recovery_from_udisk;fi;run recovery_from_flash;fi;
factorystep=0
fb_addr=0x3d800000
fb_height=1080
fb_width=1920
fdt_high=0x20000000
filesize=4bc
firstboot=0
gatewayip=10.18.9.1
hdmimode=480p60hz
hostname=arm_gxbb
identifyWaitTime=750
init_display=osd open;osd clear;imgread pic logo bootup $loadaddr;bmp display $bootup_offset;bmp scale
initargs=rootfstype=ramfs init=/init console=ttyS0,115200 no_console_suspend earlyprintk=aml-uart,0xc81004c0 ramoops.pstore_en=1 ramoops.record_size=0x8000 ramoops.console_size=0x4000
initrd_addr=0x13000000
ipaddr=10.18.9.97
jtag=apao
kernel_addr=0x11000000
kernellog.enable=0
loadaddr=1080000
mac=FC:7C:02:89:F4:AB
mac_wifi=fc:7c:02:89:f4:aa
maxcpus=4
netmask=255.255.255.0
outputmode=480p60hz
preboot=run bcb_cmd; run factory_reset_poweroff_protect;run upgrade_check;run init_display;run storeargs;run upgrade_key;forceupdate;run switch_bootmode;
reboot_mode=cold_boot
recovery.update=0
recovery_from_flash=setenv bootargs ${bootargs} aml_dt=${aml_dt} recovery_part={recovery_part} recovery_offset={recovery_offset};if itest ${upgrade_step} == 3; then if ext4load mmc 1:2 ${dtb_mem_addr} /recovery/dtb.img; then echo cache dtb.img loaded; fi;if ext4load mmc 1:2 ${loadaddr} /recovery/recovery.img; then echo cache recovery.img loaded; wipeisb; bootm ${loadaddr}; fi;else fi;if imgread kernel ${recovery_part} ${loadaddr} ${recovery_offset}; then wipeisb; bootm ${loadaddr}; fi;
recovery_from_sdcard=setenv bootargs ${bootargs} aml_dt=${aml_dt} recovery_part={recovery_part} recovery_offset={recovery_offset};if fatload mmc 0 ${loadaddr} aml_autoscript; then autoscr ${loadaddr}; fi;if fatload mmc 0 ${loadaddr} recovery.img; then if fatload mmc 0 ${dtb_mem_addr} dtb.img; then echo sd dtb.img loaded; fi;wipeisb; bootm ${loadaddr};fi;
recovery_from_udisk=setenv bootargs ${bootargs} aml_dt=${aml_dt} recovery_part={recovery_part} recovery_offset={recovery_offset};if fatload usb 0 ${loadaddr} aml_autoscript; then autoscr ${loadaddr}; fi;if fatload usb 0 ${loadaddr} recovery.img; then if fatload usb 0 ${dtb_mem_addr} dtb.img; then echo udisk dtb.img loaded; fi;wipeisb; bootm ${loadaddr};fi;
recovery_offset=0
recovery_part=recovery
sdc_burning=sdc_burn ${sdcburncfg}
sdcburncfg=aml_sdc_burn.ini
serial=CAQDB3104K09292
serverip=10.18.9.113
start_autoscript=if usb start ; then run start_usb_autoscript; fi; if mmcinfo; then run start_mmc_autoscript; fi;
start_mmc_autoscript=if fatload mmc 0 1020000 s905_autoscript; then autoscr 1020000; fi;
start_usb_autoscript=if fatload usb 0 1020000 s905_autoscript; then autoscr 1020000; fi; if fatload usb 1 1020000 s905_autoscript; then autoscr 1020000; fi; if fatload usb 2 1020000 s905_autoscript; then autoscr 1020000; fi; if fatload usb 3 1020000 s905_autoscript; then autoscr 1020000; fi;
stderr=serial
stdin=serial
stdout=serial
storeargs=setenv bootargs ${initargs} androidboot.selinux=${EnableSelinux} logo=${display_layer},loaded,${fb_addr},${outputmode} maxcpus=${maxcpus} vout=${outputmode},enable hdmimode=${hdmimode} cvbsmode=${cvbsmode} hdmitx=${cecconfig} cvbsdrv=${cvbs_drv}  pq=${pq} androidboot.firstboot=${firstboot} androidboot.factorystep=${factorystep} jtag=${jtag}; setenv bootargs ${bootargs} androidboot.hardware=amlogic;run cmdline_keys;setenv bootargs ${bootargs} androidboot.slot_suffix=${active_slot};if itest ${kernellog.enable} == 0; then setenv bootargs ${bootargs} quiet;else fi;
storeboot=if imgread kernel ${boot_part} ${loadaddr}; then bootm ${loadaddr}; fi;run update;
switch_bootmode=get_rebootmode;if test ${reboot_mode} = factory_reset; then run recovery_from_flash;else if test ${reboot_mode} = update; then run update;else if test ${reboot_mode} = cold_boot; then run try_auto_burn; else if test ${reboot_mode} = fastboot; then fastboot;fi;fi;fi;fi;
try_auto_burn=update 700 750;
update=run usb_burning; run sdc_burning; if mmcinfo; then run recovery_from_sdcard;fi;if usb start 0; then run recovery_from_udisk;fi;run recovery_from_flash;
upgrade_check=echo upgrade_step=${upgrade_step}; if itest ${upgrade_step} == 3; then run init_display; run storeargs; run update;else fi;
upgrade_key=if gpio input GPIOAO_2; then echo detect upgrade key; sleep 3;if gpio input GPIOAO_2; then run update; fi;fi;
upgrade_step=0
usb_burning=update 1000
usid=CAQDB3104K09292
wipe_cache=successful
wipe_data=successful
isjerryxiao commented 5 years ago

@shnmng start_mmc_autoscript=if fatload mmc 0 1020000 s905_autoscript; then autoscr 1020000; fi; 问题找到了。

按照上面fw_printenv那样操作, sudo fw_setenv start_mmc_autoscript "if fatload mmc 1 1020000 s905_autoscript; then autoscr 1020000; fi;" 即可 再试试从emmc启动

isjerryxiao commented 5 years ago

另外 如果你的emmc /boot分区没有 s905_autoscript 而是 emmc_autoscript 的话 上述 sudo fw_setenv start_mmc_autoscript "if fatload mmc 1 1020000 s905_autoscript; then autoscr 1020000; fi;" 改为 sudo fw_setenv start_mmc_autoscript "if fatload mmc 1 1020000 emmc_autoscript; then autoscr 1020000; fi;"

shnmng commented 5 years ago

还是不行,不管了,就在U盘运行也挺好。 谢谢两位大佬的耐心指导!

isjerryxiao commented 5 years ago

如果你还需要帮助的话 可以看下 https://t.me/flippingflooping

kevinshane commented 5 years ago

@yangxuan8282 大神好, 又回到本帖alpine下从emmc运行的问题. 现在的问题是死活卡在logo处不进去. 插上u盘后进入alpine下mount了以下内容, 没有丢失或者空文件的情况: emmc内的容量大小:

┌─[✗]─[n1@phicomm]─[/tmp/emmc]
└──╼ $ sudo du -sh /tmp/emmc/
168M    /tmp/emmc/
┌─[n1@phicomm]─[/tmp/emmc]
└──╼ $ sudo du -sh /tmp/emmc/boot/
31M /tmp/emmc/boot/

cat了几个boot目录下的文件内信息:

┌─[n1@phicomm]─[/tmp/emmc]
└──╼ $ cat boot/emmc_autoscript.cmd 
setenv env_addr "0x10400000"
setenv kernel_addr "0x11000000"
setenv initrd_addr "0x13000000"
setenv dtb_mem_addr "0x1000000"
setenv boot_start booti ${kernel_addr} ${initrd_addr} ${dtb_mem_addr}
if fatload mmc 1 ${kernel_addr} vmlinuz-amlogic; then if fatload mmc 1 ${initrd_addr} uInitrd; then if fatload mmc 1 ${env_addr} uEnv.ini; then env import -t 
${env_addr} ${filesize}; fi; if fatload mmc 1 ${dtb_mem_addr} ${dtb_name}; then run boot_start;fi;fi;fi;
┌─[n1@phicomm]─[/tmp/emmc]
└──╼ $ cat /boot/uEnv.ini 
dtb_name=/dtbs/meson-gxl-s905d-phicomm-n1.dtb
bootargs=root=UUID=03634ab2-b9f0-47ef-ac96-e46a4be60407 rootflags=data=writeback rw console=ttyAML0,115200n8 console=tty0 no_console_suspend consoleblank=0 fsck.fix=yes fsck.repair=yes net.ifnames=0

fstab内容:

┌─[n1@phicomm]─[/tmp/emmc]
└──╼ $ cat /tmp/emmc/etc/fstab 
/dev/mmcblk1p1  /boot           vfat    defaults          0       2

感觉一切都很正常.. 就是死活卡logo桌面(之前刷的是YYF的安卓) 请问怎么解决? 万分感谢