2. 格式化刚才新建的SD卡分区
如果分区已经成功,这时在/dev/目录下应该能看到sdb和新建的4个分区:sdb1,sdb2,sdb3,sdb4。如果是用内置读卡器,则可能是mmcblk0和对应的4个分区:mmcblk0p1,mmcblk0p2,mmcblk0p3,mmcblk0p4。
通过mkfs.vfat+分区设备路径,将指定分区格式化为FAT32格式。通过mkswap+分区设备路径,将指定分区格式化为swap格式。通过mkfs.ext4+分区设备路径,将指定分区格式化为ext4格式。
3. 挂载Fedora ARM 23系统镜像和SD卡分区,拷贝镜像文件
如果镜像还没解压,可以通过# unxz Fedora-Server-armhfp-23-10-sda.raw.xz命令解压。
创建临时挂载点:# mkdir /tmp/img/
创建loop device:# losetup --partscan --find --show Fedora-Server-armhfp-23-10-sda.raw /dev/loop0
挂载loop device的根分区到临时挂载点:# mount -r /dev/loop0p3 /tmp/img/
这里说明一下,通常Linux系统镜像中第一个分区是boot分区,对应/boot/路径。第二个分区是swap分区,可以忽略,第三个分区才是根分区,对应/。因为我们不打算使用原生的boot和kernal,因此不挂载第一个分区。官方的说明是,随Fedora一起发布的kernal暂时没有支持树莓派芯片的所有特性,因此最好使用树莓派的专用内核固件。
接着挂载我们的SD卡系统根分区:
# mkdir /tmp/rpi/
# mount /dev/mmcblk0p3 /tmp/rpi/
挂载SD卡boot分区:
# mkdir /tmp/rpi/boot/
# mount /dev/mmcblk0p1 /tmp/rpi/boot/
挂载SD卡home分区:
# mkdir /tmp/rpi/home/
# mount /dev/mmcblk0p4 /tmp/rpi/home/
然后,将镜像根分区中的文件拷贝到SD的根分区中:# cp -rpv /tmp/img/* /tmp/rpi/
可以执行sync确认缓存同步。
最后解除镜像文件的挂载:
# umount /tmp/img
# losetup -d /dev/loop0
4. 拷贝树莓派专用固件
如果固件还没解压,可以通过# unzip raspberry-firmware.zip命令解压。
然后通过以下命令拷贝需要用到的文件:
# cp -r firmware-master/boot/* /tmp/rpi/boot/
# cp -r firmware-master/modules/* /tmp/rpi/lib/modules/
然后在SD卡boot分区下创建一个名为cmdline.txt的文件,用来向内核传递参数。该文件内容如下:
dwc_otg.lpm_enable=0 console=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p3 rootfstype=ext4 elevator=deadline rootwait
这里需要注意,因为这个文件是给树莓派机器用的,SD卡插入树莓派后,SD卡的设备路径应该是/dev/mmcblk0,根分区设备路径就是/dev/mmcblk0p3,所以应该固定写这个内容,而不再是准备SD卡时在电脑上的设备路径。
接着在/boot分区下创建一个名为config.txt的文件,这一步是可选的,我第一尝试没有建立这个文件,系统可以正常启动。如果想建立这个文件,文件内容如下:
hdmi_force_hotplug=1
config_hdmi_boost=4
overscan_left=24
overscan_right=24
overscan_top=16
overscan_bottom=16
disable_overscan=0
core_freq=250
sdram_freq=400
over_voltage=0
5. 设置fstab文件内容
这里需要注意,修改的是SD卡上的fstab文件,而不是自己电脑上的,如果改错了,自己的电脑就没法启动了,所以需要特别小心。
首先执行# blkid | grep sdb命令查询sdb磁盘每个分区的UUID,如果是内置读卡器,磁盘名可能替换为mmcblk0
然后使用常用的编辑器打开/tmp/rpi/etc/fstab文件,这个文件是在引导的时候用的,修改的时候需要比较严谨。首先,swap分区放在最后一行,行数不够可以拷贝一行。第一行一定是根分区,也就是我们分的第三个系统分区。往下必须是一棵树型结构,我们把boot分区放在第二行,把用户分区放在第三行,分别更新UUID、路径和分区格式信息。确认无误后保存。
6. 解除SD卡挂载
# umount /tmp/rpi/boot/
# umount /tmp/rpi/home/
# umount /tmp/rpi/
最后可以执行sync确认缓存同步。
7. 将SD卡插入树莓派并进行初始化
上电后正常情况应该会显示初始化向导,可以选择1~4进行指定的操作,如设定时区、语言、设置root密码、新建管理员账号��。完成后重启即可。
重启后执行以下命令移除没用使用到的Fedora官方内核并更新系统:
# dnf remove kernel kernel-core kernel-modules
# dnf update
8. 安装树莓派固件更新包
首先执行# dnf install binutils git安装依赖组件。
然后执行以下命令安装rpi-update: