Created
October 1, 2012 20:03
-
-
Save aeris/3814088 to your computer and use it in GitHub Desktop.
Build custom Raspberry Pi Debian
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# apt-get install binfmt-support qemu qemu-user-static debootstrap kpartx lvm2 dosfstools | |
deb_mirror="http://ftp.fr.debian.org/debian" | |
#deb_local_mirror="http://debian.kmp.or.at:3142/debian" | |
bootsize="64M" | |
deb_release="wheezy" | |
device=$1 | |
buildenv="/root/rpi" | |
rootfs="${buildenv}/rootfs" | |
bootfs="${rootfs}/boot" | |
mydate=`date +%Y%m%d` | |
if [ "$deb_local_mirror" == "" ]; then | |
deb_local_mirror=$deb_mirror | |
fi | |
image="" | |
if [ $EUID -ne 0 ]; then | |
echo "this tool must be run as root" | |
exit 1 | |
fi | |
if ! [ -b $device ]; then | |
echo "$device is not a block device" | |
exit 1 | |
fi | |
if [ "$device" == "" ]; then | |
echo "no block device given, just creating an image" | |
mkdir -p $buildenv | |
image="${buildenv}/rpi_basic_${deb_release}_${mydate}.img" | |
dd if=/dev/zero of=$image bs=1MB count=1000 | |
device=`losetup -f --show $image` | |
echo "image $image created and mounted as $device" | |
else | |
dd if=/dev/zero of=$device bs=512 count=1 | |
fi | |
fdisk $device << EOF | |
n | |
p | |
1 | |
+$bootsize | |
t | |
c | |
n | |
p | |
2 | |
w | |
EOF | |
if [ "$image" != "" ]; then | |
losetup -d $device | |
device=`kpartx -va $image | sed -E 's/.*(loop[0-9])p.*/\1/g' | head -1` | |
device="/dev/mapper/${device}" | |
bootp=${device}p1 | |
rootp=${device}p2 | |
else | |
if ! [ -b ${device}1 ]; then | |
bootp=${device}p1 | |
rootp=${device}p2 | |
if ! [ -b ${bootp} ]; then | |
echo "uh, oh, something went wrong, can't find bootpartition neither as ${device}1 nor as ${device}p1, exiting." | |
exit 1 | |
fi | |
else | |
bootp=${device}1 | |
rootp=${device}2 | |
fi | |
fi | |
mkfs.vfat $bootp | |
mkfs.ext4 $rootp | |
mkdir -p $rootfs | |
mount $rootp $rootfs | |
cd $rootfs | |
debootstrap --foreign --arch armel $deb_release $rootfs $deb_local_mirror | |
cp /usr/bin/qemu-arm-static usr/bin/ | |
LANG=C chroot $rootfs /debootstrap/debootstrap --second-stage | |
mount $bootp $bootfs | |
echo "deb $deb_local_mirror $deb_release main contrib non-free | |
" > etc/apt/sources.list | |
echo "dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 rootwait" > boot/cmdline.txt | |
echo "proc /proc proc defaults 0 0 | |
/dev/mmcblk0p1 /boot vfat defaults 0 0 | |
" > etc/fstab | |
echo "pi.imirhil.fr" > etc/hostname | |
NETWORK="192.168.0" | |
echo "auto lo | |
iface lo inet loopback | |
auto eth0 | |
iface eth0 inet static | |
address $NETWORK.253 | |
network $NETWORK.0 | |
netmask 255.255.255.0 | |
gateway $NETWORK.254 | |
broadcast $NETWORK.255 | |
" > etc/network/interfaces | |
echo "vchiq | |
snd_bcm2835 | |
" >> etc/modules | |
echo "console-common console-data/keymap/policy select Select keymap from full list | |
console-common console-data/keymap/full select de-latin1-nodeadkeys | |
" > debconf.set | |
echo "#!/bin/bash | |
debconf-set-selections /debconf.set | |
rm -f /debconf.set | |
apt-get update | |
apt-get -y install git-core binutils ca-certificates | |
wget http://goo.gl/1BOfJ -O /usr/bin/rpi-update | |
chmod +x /usr/bin/rpi-update | |
mkdir -p /lib/modules/3.1.9+ | |
touch /boot/start.elf | |
rpi-update | |
apt-get -y install locales console-common ntp openssh-server less vim | |
echo \"root:tovgagifestikOogsUshyacpifShevAw\" | chpasswd | |
sed -i -e 's/KERNEL\!=\"eth\*|/KERNEL\!=\"/' /lib/udev/rules.d/75-persistent-net-generator.rules | |
rm -f /etc/udev/rules.d/70-persistent-net.rules | |
rm -f third-stage | |
" > third-stage | |
chmod +x third-stage | |
LANG=C chroot $rootfs /third-stage | |
echo "deb $deb_mirror $deb_release main contrib non-free | |
" > etc/apt/sources.list | |
echo "#!/bin/bash | |
aptitude update | |
aptitude clean | |
apt-get clean | |
rm -f cleanup | |
" > cleanup | |
chmod +x cleanup | |
LANG=C chroot $rootfs /cleanup | |
cd | |
umount $bootp | |
umount $rootp | |
if [ "$image" != "" ]; then | |
kpartx -d $image | |
echo "created image $image" | |
fi | |
echo "done." |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment