据说这是OTP的,回不去的,首先要把树莓派更新到next分支.然后才可以继续下一步.
更新过程缓慢,要等一下.然后别重启,先制作系统.如果你反正有Linux系统是另一回事.首先我的USB盘是没分区.如果不是MSDOS的表,请用本文最后面的方法.
创建两个分区,一个100M,一个是全部空间.然后为目标系统格式化.
然后挂载好,把自己本机系统复制过去.
复制过程:
指令比较多,具体是:
sudo mkdir /mnt/target sudo mount /dev/sda2 /mnt/target/ sudo mkdir /mnt/target/boot sudo mount /dev/sda1 /mnt/target/boot/ sudo apt-get update; sudo apt-get install rsync sudo rsync -ax --progress / /boot /mnt/target
重新生成SSH证书,这是可选,但是为了安全,还是重新生成一个吧.
具体命令:
cd /mnt/target sudo mount --bind /dev dev sudo mount --bind /sys sys sudo mount --bind /proc proc sudo chroot /mnt/target rm /etc/ssh/ssh_host* dpkg-reconfigure openssh-server exit sudo umount dev sudo umount sys sudo umount proc
还要编辑目标系统的启动参数.
具体命令:
sudo sed -i "s,root=/dev/mmcblk0p2,root=/dev/sda2," /mnt/target/boot/cmdline.txt sudo sed -i "s,/dev/mmcblk0p,/dev/sda," /mnt/target/etc/fstab cd ~ sudo umount /mnt/target/boot sudo umount /mnt/target
然后断开一下USB储存设备,开始修改重要的OTP内容了.给config.txt写编程字,然后看看 目前OTP内容.
具体命令:
echo program_usb_boot_mode=1 | sudo tee -a /boot/config.txt
然后重启Pi.
根据官方文档,SD卡引导应该是还在的.确实是,然后Boot确实改了.
然后关机.不是重启哦.
然后要彻底断开电源,关机后Boot程序其实还在跑.然后插上USB,去掉TF卡.开始引导.不是所有设备都支持USB Boot,第一次我用了ASM1053E接SanDisk U110 SSD一开始以为不能引导,后来才发现原来要等好几秒...
成功截图:
官方方法,如果依然不行,就可能缺少什么引导.用parted方法.
sudo parted /dev/sda (parted) mktable msdos Warning: The existing disk label on /dev/sda will be destroyed and all data on this disk will be lost. Do you want to continue? Yes/No? Yes (parted) mkpart primary fat32 0% 100M (parted) mkpart primary ext4 100M 100% (parted) print Model: SanDisk Ultra (scsi) Disk /dev/sda: 30.8GB Sector size (logical/physical): 512B/512B Partition Table: msdos Disk Flags: Number Start End Size Type File system Flags 1 1049kB 99.6MB 98.6MB primary fat32 lba 2 99.6MB 30.8GB 30.7GB primary ext4 lba
我的操作截图.
然而我还是不行.
英文原文:https://www.raspberrypi.org/blog/pi-3-booting-part-i-usb-mass-storage-boot/
这样改完是不是回不去了?就只有用U盘启动了?
如果改回TF卡启动可以么?OTP就是one trip process么?
@骑驴玩儿漂移 改后也可以TF引导,但是TF在的时候USB不引导,TF是第一引导顺序.要想引导USB但是插入TF卡,需要TF卡没有start.elf这个文件.