adkinstall 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. #!/bin/sh
  2. # installs a rootfs tar archive from OpenADK onto a Compact Flash disk
  3. if [ -z $1 ];then
  4. printf "Please give your root tar archive as parameter\n"
  5. exit 1
  6. fi
  7. # create empty partition table
  8. parted -s /dev/sda mklabel msdos
  9. sleep 2
  10. maxsize=$(env LC_ALL=C parted /dev/sda -s unit cyl print |awk '/^Disk/ { print $3 }'|sed -e 's/cyl//')
  11. rootsize=$(($maxsize-2))
  12. parted -s /dev/sda unit cyl mkpartfs primary ext2 0 $rootsize
  13. parted -s /dev/sda unit cyl mkpart primary fat32 $rootsize $maxsize
  14. parted -s /dev/sda set 1 boot on
  15. sfdisk --change-id /dev/sda 2 88 >/dev/null 2>&1
  16. if [ $? -eq 0 ];then
  17. printf "Successfully created partition ${rootpart}\n"
  18. else
  19. printf "Partition creation failed, Exiting.\n"
  20. exit 1
  21. fi
  22. mount -t ext2 /dev/sda1 /mnt
  23. printf "Extracting install archive\n"
  24. tar -C /mnt -xzpf $1
  25. chmod 1777 /mnt/tmp
  26. chmod 4755 /mnt/bin/busybox
  27. speed=$(awk -F \, '/console=ttyS0/ { print $2 }' /proc/cmdline|sed -e "s/ .*$//")
  28. printf "Install bootloader\n"
  29. mkdir -p /mnt/boot/grub
  30. mount -o bind /dev /mnt/dev
  31. chroot /mnt mount -t proc /proc /proc
  32. chroot /mnt mount -t sysfs /sys /sys
  33. cat << EOF > /mnt/boot/grub/grub.cfg
  34. set default=0
  35. set timeout=1
  36. serial --unit=0 --speed=$speed
  37. terminal_output serial
  38. terminal_input serial
  39. menuentry "GNU/Linux (OpenADK)" {
  40. insmod ext2
  41. set root=(hd0,1)
  42. linux /boot/vmlinuz-adk root=/dev/sda1 ro init=/init panic=10
  43. }
  44. EOF
  45. chroot /mnt grub-install /dev/sda >/dev/null 2>&1
  46. umount /mnt/proc
  47. umount /mnt/sys
  48. umount /mnt/dev
  49. printf "Creating device nodes\n"
  50. mknod -m 666 /mnt/dev/null c 1 3
  51. mknod -m 622 /mnt/dev/console c 5 1
  52. mknod -m 666 /mnt/dev/tty c 5 0
  53. umount /mnt
  54. printf "Successfully installed.\n"
  55. exit 0