I downloaded the Raspbian "Jessie" image from the raspberrypi.org downloads page and unzipped the file to extract the image file
2016-03-18-raspbian-jessie.img
. Then I copied this file to the Raspberry Pi and installed it as follows.Install
kpartx
and then use it to access the two partitions of the image file:sudo apt-get install kpartx sudo kpartx -a 2016-03-18-raspbian-jessie.img
Create mount points for the two partitions and mount them:
sudo mkdir /mnt/jessie-boot sudo mkdir /mnt/jessie-root sudo mount /dev/mapper/loop0p1 /mnt/jessie-boot sudo mount /dev/mapper/loop0p2 /mnt/jessie-root
Copy the "Jessie" root partition to
/spare
. This takes some time as there is over 3 Gigabytes to copy:sudo rsync -av /mnt/jessie-root/ /spare
Copy the "Jessie" boot partition to
/spare/boot.bak
. Note this is not the actual /boot
partition, we don't want to change that until we're ready to boot into the new OS.sudo mkdir /spare/boot.bak sudo rsync -av /mnt/jessie-boot/ /spare/boot.bak
Move the "Jessie" home directory's contents to the
/home
partition:sudo rsync -av /spare/home/ /home sudo rm -rf /spare/home/pi
Copy
/etc/fstab
to the "Jessie" partition and edit it:sudo cp /etc/fstab /spare/etc/ sudo vi /spare/etc/fstab
After editing the
fstab
file is as follows:proc /proc proc defaults 0 0 /dev/mmcblk0p1 /boot vfat defaults,ro 0 2 /dev/sda1 /old_os ext4 defaults,noatime 0 1 /dev/sda2 / ext4 defaults,noatime 0 1 /dev/sda3 none swap sw 0 0 /dev/sda4 /home ext4 defaults,noatime 0 1 tmpfs /tmp tmpfs size=256M 0 0
Note that
/dev/sda2
, which is currently mounted as /spare
, will be mounted as /
and that /dev/sda1
, currently mounted as /
, will be mounted as /old_os
. This requires a new mount point to be created:sudo mkdir /spare/old_os
Since my original Rasbperry Pi setup the network configuration file has changed from
/etc/network/interfaces
to /etc/dhcpcd.conf
. As I use a static network address on one of my Pis (because it is my network DHCP server) I needed to edit /spare/etc/dhcpcd.conf
before attempting to reboot.Edit the new boot command line and set it to use
/dev/sda2
as the root device:sudo vi /spare/boot.bak/cmdline.txt
Backup the existing
/boot
partition, then make it writeable and copy the new boot code to it:sudo mkdir /boot.bak sudo rsync -av /boot/ /boot.bak sudo mount -o remount,rw /boot sudo rsync -av /spare/boot.bak/ /boot
At this stage it should be possible to boot the Raspberry pi into the new operating system and login as
pi
:sudo reboot
If I want to go back to the older operating system at any time I should be able to do so by copying
/old_os/boot.bak
to /boot
and rebooting.All that remains to do is to add my normal user account
jim
and then install and configure the current versions of all the software I was running — dnsmasq
, xinetd
, esmtp
, nfs-kernel-server
, etc. Being able to view the old configuration files in /old_os/etc
is a great help when doing this.
No comments:
Post a Comment