美文网首页树莓派树梅派,不止是一台电脑
抛弃SD卡,使用U盘启动树梅派3

抛弃SD卡,使用U盘启动树梅派3

作者: 叁金 | 来源:发表于2017-05-22 15:20 被阅读1375次

    树莓派3之前的版本其系统一般是安装在SD卡上,但是SD卡比较脆弱,如果频繁的读写数据,会导致SD卡损坏。SD卡的读写速度也比U盘慢。之前哪怕是系统装在u盘里面也需要SD卡进行引导,但是树梅派3开始,支持从USB进行引导了,现在我们可以彻底抛弃SD卡,将树莓派系统安装在U盘中,利用更加强壮、速度更快的U盘启动树莓派,则可以解决使用SD卡遇到的问题。

    准备

    1. 树梅派3
    2. HDMI 显示屏
    3. SD卡+U盘

    安装系统

    首先在SD卡上安装系统,当前最新的版本是Jessie,下载地址

    按照官方的安装文档,将系统烧进SD卡即可。烧完之后注意(第一坑):新版本的系统默认是关闭了ssh服务的,你需要在sd卡下新建一个名称为ssh的文件夹,这样才能通过ssh远程登录。

    升级固件

    接入网线并连接HDMI显示屏后,树梅派在启动时会把ip打印在屏幕上,通过ssh进行连接,默认用户是pi,密码是raspberry
    如果网络有问题可以先更换软件源。

    sudo vi /etc/apt/sources.list
    

    注释现有的软件源,并复制以下代码

    deb http://mirrors.aliyun.com/raspbian/raspbian/ jessie main non-free contrib
    deb-src http://mirrors.aliyun.com/raspbian/raspbian/ jessie main non-free contrib
    

    接下来执行下面的命令

    sudo apt-get update
    sudo apt-get install rpi-update
    sudo BRANCH=next rpi-update
    

    上面的命令会自动更新/boot目录下默认的start.elf和bootcode.bin文件。接下来开启USB启动模式。

    echo program_usb_boot_mode=1 | sudo tee -a /boot/config.txt
    

    重启树梅派,并查看OTP寄存器的信息:

    vcgencmd otp_dump | grep 17
    

    输出信息应该为 17:3020000a或者大于他,我升级前的OTP为17:1020000a。
    现在树莓派已经开启USB模式,你可以把/boot/config.txt文件中的program_usb_boot_mode=1一行移除掉。

    系统安装到U盘

    把U盘插入到树莓派,使用如下命令查看设备名:

    lsblk
    
    image.png

    上图中,sda设备是U盘,分区sda1。依次执行下面的命令,对磁盘进行分区,创建一个100M的FAT32分区和一个Linux分区。U盘数据会丢失,注意备份。

    sudo umount /dev/sda
    sudo parted /dev/sda
    (parted) # 进入到parted命令行,help查看帮助
    (parted)  mktable msdos   # 分区表
    # 如果有警告信息则输入yes 忽略
    (parted) mkpart primary fat32 0% 100M   # 分区
    (parted) mkpart primary ext4 100M 100%
    (parted) print
    

    分区完成之后,输入Ctrl+C 退出。
    创建boot文件系统和root文件系统:

    sudo mkfs.vfat -n BOOT -F 32 /dev/sda1
    sudo mkfs.ext4 /dev/sda2
    

    把当前Raspbian系统拷贝到USB设备:

    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   # rsync命令用于同步数据
    sudo rsync -ax --progress / /boot /mnt/target   # 把系统拷贝到U盘
    

    刷新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
    

    编辑cmdline.txt文件及fstab文件(注意:第二坑)

    #很多教程里面都会用如下命令进行两个文件的更改:
    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
    

    新版本cmdline.txt内为root=PARTUUID=xxxxx-02 fstab内也为PARTUUID=xxxxx-01/02,所以我们需要更改该PARTUUID。
    执行命令:

    blkid
    

    会得到boot所对应的PARTUUID,将该uuid复制到cmdline.txt 覆盖本来的uuid,然后更改fstab内的PARTUUID即可。或者将cmdline.txt和fstab都改为/dev/sda形式(未尝试)。
    后面会将PARTUUID部分代码补上。

    卸载挂载的文件系统,然后关闭树莓派:

    cd ~
    sudo umount /mnt/target/boot
    sudo umount /mnt/target
    sudo poweroff   # poweroff是新命令,以前是用shutdown
    

    从U盘启动

    关闭树莓派之后,断掉电源->拔出SD卡->从U盘启动树莓派。

    参考资料:
    http://blog.topspeedsnail.com/archives/8814

    相关文章

      网友评论

        本文标题:抛弃SD卡,使用U盘启动树梅派3

        本文链接:https://www.haomeiwen.com/subject/tzobxxtx.html