RaspberryPi Foundation の公式ページからダウンロードした
Raspbian Wheezy
2015-05-05-raspbian-wheezy.img
は以下のような内容になっています。
約3.1GB あります。
$ ls -al 2015-05-05-raspbian-wheezy.img -rw-r--r-- 1 beat beat 3276800000 5月 7 01:00 2015-05-05-raspbian-wheezy.img
初期状態の kernel は 3.18.11 です。
pi@raspberrypi ~ $ uname -a Linux raspberrypi 3.18.11-v7+ #781 SMP PREEMPT Tue Apr 21 18:07:59 BST 2015 armv7l GNU/Linux
kernel は linaro の cross toolchain gcc 4.8.3 を使って x86 上でビルドされています。
pi@raspberrypi ~ $ cat /proc/version Linux version 3.18.11-v7+ (dc4@dc4-XPS13-9333) (gcc version 4.8.3 20140303 (prerelease) (crosstool-NG linaro-1.13.1+bzr2650 - Linaro GCC 2014.03) ) #781 SMP PREEMPT Tue Apr 21 18:07:59 BST 2015
default の gcc は 4.6.3 で、 armv6 vfp hardfloat 向けにビルドされています。
pi@raspberrypi ~ $ gcc -v Using built-in specs. COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/usr/lib/gcc/arm-linux-gnueabihf/4.6/lto-wrapper Target: arm-linux-gnueabihf Configured with: ../src/configure -v --with-pkgversion='Debian 4.6.3-14+rpi1' --with-bugurl=file:///usr/share/doc/gcc-4.6/README.Bugs \ --enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.6 --enable-shared --enable-linker-build-id --with-system-zlib \ --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.6 --libdir=/usr/lib --enable-nls \ --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --enable-plugin --enable-objc-gc --disable-sjlj-exceptions \ --with-arch=armv6 --with-fpu=vfp --with-float=hard --enable-checking=release --build=arm-linux-gnueabihf --host=arm-linux-gnueabihf --target=arm-linux-gnueabihf Thread model: posix gcc version 4.6.3 (Debian 4.6.3-14+rpi1)
microSD に書き込んで起動しただけですぐに何でも出来るように大量のパッケージが最初からインストールされています。
メタパッケージやライブラリのパッケージも含め全部で 853 ものインストールされており、
印刷機能や動画・音声まで扱えるデスクトップ向けのフルパッケージがインストールされているのに加え、
開発用のライブラリやプログラム言語、IDE などの各種パッケージもインストールされています。
また、opencv や wolfram-engine もインストールされています。
起動は SysVinit で行うようになっています。
2015年10月13日の時点で apt-get update & apt-get upgrade を行うと以下のパッケージが更新されますが、
この中の raspberrypi-bootloader の更新を実行すると kernel がバックアップの作成なしに
3.18.11 から 4.1.7 に更新されます。
pi@raspberrypi ~ $ sudo apt-get upgrade Reading package lists... Done Building dependency tree Reading state information... Done The following packages have been kept back: nuscratch The following packages will be upgraded: bind9-host cups-bsd cups-client cups-common firmware-realtek fuse ghostscript libbind9-80 libcups2 libcupsimage2 libdns88 libexpat1 libfuse2 libgs9 libgs9-common libicu48 libisc84 libisccc80 libisccfg82 liblcms1 liblwres80 libmp3lame0 libnss3 libraspberrypi-bin libraspberrypi-dev libraspberrypi-doc libraspberrypi0 libsdl1.2debian libsqlite3-0 libssl1.0.0 omxplayer openssl raspberrypi-bootloader raspi-config rpcbind sonic-pi sudo tzdata unzip 39 upgraded, 0 newly installed, 0 to remove and 1 not upgraded. Need to get 127 MB of archives. After this operation, 8,692 kB of additional disk space will be used. Do you want to continue [Y/n]?
rpi-update を実行すると以下のように kernel は 4.1.10 に更新されますが、
rpi-update の場合は raspberrypi-bootloader の更新と異なり
現在起動中の /boot/ パーティションの中身が rootfs の /boot.bak/ に保存され、/lib/modules/ には更新前の kernel modules も残ります。
また /lib/modules.bak/ に保存もされます。
pi@raspberrypi ~ $ sudo rpi-update *** Raspberry Pi firmware updater by Hexxeh, enhanced by AndrewS and Dom *** Performing self-update % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 10206 100 10206 0 0 61102 0 --:--:-- --:--:-- --:--:-- 100k *** Relaunching after update *** Raspberry Pi firmware updater by Hexxeh, enhanced by AndrewS and Dom *** We're running for the first time *** Backing up files (this will take a few minutes) *** Backing up firmware *** Backing up modules 3.18.11-v7+ ############################################################# This update bumps to rpi-4.1.y linux tree Be aware there could be compatibility issues with some drivers Discussion here: https://www.raspberrypi.org/forums/viewtopic.php?f=29&t=113753 ############################################################## *** Downloading specific firmware revision (this will take a few minutes) % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 168 0 168 0 0 203 0 --:--:-- --:--:-- --:--:-- 266 100 48.2M 100 48.2M 0 0 1171k 0 0:00:42 0:00:42 --:--:-- 1008k *** Updating firmware *** Updating kernel modules *** depmod 4.1.10+ *** depmod 4.1.10-v7+ *** Updating VideoCore libraries *** Using HardFP libraries *** Updating SDK *** Running ldconfig *** Storing current firmware revision *** Deleting downloaded files *** Syncing changes to disk *** If no errors appeared, your firmware was successfully updated to 260bc9c7589b3359485fc02fed8f56d4c5eaad9a *** A reboot is needed to activate the new firmware
2015-05-05-raspbian-wheezy.img 書き込み直後の 3.18.11 kernel で起動している状態で rpi-update を実行すると、
実行後 /lib/modules/ の下は以下のようになります。
pi@raspberrypi ~ $ ls /lib/modules 3.18.11+ 3.18.11-v7+ 4.1.10+ 4.1.10-v7+
v7 の付いている方が ARMv7 アーキテクチャーの Raspberry Pi 2 用です。
apt-get upgrade で 4.1.7 kernel に更新して起動している状態で rpi-update を実行すると、
実行後 /lib/modules は以下のようになります。
pi@raspberrypi ~ $ ls /lib/modules 4.1.7+ 4.1.7-v7+ 4.1.10+ 4.1.10-v7+
3系 kernel でないと困る場合があるなど、何かの都合で以前の状態に戻す必要がある場合には
先に rpi-update を行って /boot.bak/ と /lib/modules.bak/ 以下を保存しておけば
元の場所に書き戻すだけで以前の kernel で起動することが出来ます。