kexecinit 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. #!/bin/sh
  2. load_system() {
  3. echo "Loading OpenADK from microdrive (${micro}1)"
  4. mount ${micro}1 /mnt
  5. if [ $? -ne 0 ];then echo "Mounting ${micro}1 failed"; exit 1;fi
  6. kexec -l /mnt/boot/kernel
  7. umount /mnt
  8. kexec -e -x
  9. }
  10. cf_install() {
  11. mkdir /mnt/root
  12. mkdir /mnt/cf
  13. mount -t ext2 ${micro}1 /mnt/root
  14. if [ $? -ne 0 ];then echo "Mounting ${micro}1 failed"; exit 1;fi
  15. mount ${cfd}1 /mnt/cf
  16. if [ $? -ne 0 ];then echo "Mounting ${cfd}1 failed"; exit 1;fi
  17. if [ -f /mnt/cf/sharp.tgz ];then
  18. echo "Installing OpenADK from CF (${cfd}1) to microdrive (${micro}1)"
  19. umount /mnt/root
  20. mke2fs -q ${micro}1
  21. mount -t ext2 ${micro}1 /mnt/root
  22. if [ $? -ne 0 ];then echo "Mounting ${micro}1 failed"; exit 1;fi
  23. tar -xzpf /mnt/cf/sharp.tgz -C /mnt/root
  24. fi
  25. umount /mnt/root
  26. umount /mnt/cf
  27. }
  28. check_cf() {
  29. cf=0
  30. if [ $(lsscsi|wc -l) -eq 1 ];then
  31. cf=0
  32. else
  33. cf=1
  34. fi
  35. micro=$(lsscsi |awk '$4 ~ "HMS360" { print $6 }')
  36. if [ "$micro" = "/dev/sda" ];then
  37. cfd=/dev/sdb
  38. else
  39. cfd=/dev/sda
  40. fi
  41. }
  42. echo " ___ _ ____ _ __ "
  43. echo " / _ \ _ __ ___ _ __ / \ | _ \| |/ / "
  44. echo "| | | | '_ \ / _ \ '_ \ / _ \ | | | | ' / "
  45. echo "| |_| | |_) | __/ | | |/ ___ \| |_| | . \ "
  46. echo " \___/| .__/ \___|_| |_/_/ \_\____/|_|\_\ "
  47. echo " |_| "
  48. echo ""
  49. sleep 2
  50. check_cf
  51. if [ $cf -eq 0 ];then
  52. load_system
  53. else
  54. echo "Should I install OpenADK to microdrive (y/n)"
  55. read answer
  56. if [ "$answer" = "y" ];then
  57. cf_install
  58. fi
  59. load_system
  60. fi