Can I put Debian on my Raspberry Pi?

Yes.

Raspberry Pi 1 (A, B, A+, B+, Zero)

Debian armel will work (with a custom kernel), but will not make best use of the floating point hardware on the first version although it will work with the second version. Debian armhf will not work (see below) for the first version but does work with the second one. The Zero uses the same SoC/CPU as the first version, so they should function identically.

Generally, your best bet is to use Raspbian - which is (mostly) Debian armhf rebuilt by members of Debian for the RPi's ARMv6+VFP2 ARM variant. Raspbian releases usually follow the corresponding Debian release but do deviate in a handful of cases for various reasons.

Be aware that the Raspbian images distributed by the Raspberry Pi Foundation contain additional packages supplied by them including updated versions of some software and the addition of non-free software including Oracle Java and Wolfram Mathematica.

Raspberry Pi 2

Debian armhf will work (with a custom kernel). See the blog posting Debian Jessie on Raspberry Pi 2 by Sjoerd Simons of Collabora for details.

RaspberryPi2 aims to collect information how to run Debian nicely on this hardware.

Should I buy a Raspberry Pi?

That is a decision that you will have to make given your application, below are some pros and cons that you should consider.

Pros:

Cons:

A number of similar boards are available, generally at slightly higher prices but also usually with more powerful processors. Some examples are given below, more can be found in the FreedomBox targetted hardware list.

Raspberry Pi issues

The Raspberry Pi issues relate to technical problems, software freedom and hype:

Binary blob needed to boot

The binary blob needed to boot the Raspberry Pi can be downloaded using the rpi-update script available from https://raw.githubusercontent.com/Hexxeh/rpi-update/master/rpi-update. It can be used with vmdebootstrap to create a bootable SD card image, according to a recipe from Petter Reinholdtsen.

Broadcom publicly released some code, licensed as 3-Clause BSD, to aid the making of an open source GPU driver. The "rpi-open-firmware" effort to replace the VPU firmware blob started in 2016: https://github.com/christinaa/rpi-open-firmware. See more at https://news.ycombinator.com/item?id=11703842

QEMU User Emulation for Raspberry Pi Development

See RaspberryPi/qemu-user-static for information on how you can mount, edit, and run a Raspberry Pi disk image on a host Debian machine using QemuUserEmulation (much faster/simpler than than full system emulation)

Initramfs

Initramfs for custom loading of modules at boot does work, but you must update it everytime you use rpi-update, this way:

mkinitramfs -o /boot/initrd

In the Raspberry Pi 2 you must also include this in /boot/config.txt:

initramfs initrd followkernel
ramfsfile=initrd
ramfsaddr=-1

And this is /boot/cdmline.txt:

root=/dev/mmcblk0p2 initrd=-1 dwc_otg.lpm_enable=0 console=ttyAMA0,115200 console=tty1 elevator=deadline rootwait

Because rpi-update is not the official way that Debian updates the Initramfs, you may find weird things happening when you update rpi, so if your system becomes unbootable because there is a needed module in the initrd that you need (like encryption), you must boot with another up to date sdcard, chroot into the new environment, mounting first /boot and /dev, and then update the initrd manually. This just happens because of the privative special way of booting of the Raspberry Pi, out of any reasonable standard.

Overclocking Pi 2

Overclocking is quite easy and convenient, and doesn't invalidate your warranty if you don't change voltage. It happens that the actual L2 speed of the Raspberry Pi 2 is severelly underclocked, making the device much more slower that it should actually be. There has been reports of users using overclocked speeds of the processor and the L2 for months without a single issue, but you must be carefull in respecting a good proportion between L2 speed and processor, and overclocking the RAM is generally not recommended.

Try this setting, it has demonstrated to be stable and doubles the speed of this small machine in general. Edit /boot/config.txt and substitute or add these lines:

arm_freq=1000
core_freq=500
sdram_freq=400
over_voltage=0
over_voltage_sdram_p=0
over_voltage_sdram_i=0
over_voltage_sdram_c=0

Unfortunatelly, the options shown when running raspi-config are not quite stable even they are slower than this recommended option.

Giving more power to the USB devices

If you are running a lot of devices, you may need a lot of power. Actually, the Pi 2 can give up to 1.2A to the devices, but it is severely limited by default to 600mA, so if you connect a lot of devices, they are going to be reseting themselves or limiting in some ways because of lack of energy. There is an option to actually double the amount of energy you can give to the devices, but you must also use a good 2A adapter. Just edit /boot/config.txt and add this:

max_usb_current=1
safe_mode_gpio=4

This way I am able to run a very energy consuming 4G modem and a Wifi dongle at the same time without issues.

Also, you not only need a good and reliable adapter, but also a good cable. The shorter and thicker the better.