+
+int hw_install_bootloader(struct hw_destination* dest) {
+ char cmd[STRING_SIZE];
+ int r;
+
+ // Generate configuration file
+ snprintf(cmd, sizeof(cmd), "/usr/sbin/grub-mkconfig -o /boot/grub/grub.cfg");
+ r = system_chroot(DESTINATION_MOUNT_PATH, cmd);
+ if (r)
+ return r;
+
+ char cmd_grub[STRING_SIZE];
+ snprintf(cmd_grub, sizeof(cmd_grub), "/usr/sbin/grub-install --no-floppy --recheck");
+
+ if (dest->is_raid) {
+ snprintf(cmd, sizeof(cmd), "%s %s", cmd_grub, dest->disk1->path);
+ r = system_chroot(DESTINATION_MOUNT_PATH, cmd);
+ if (r)
+ return r;
+
+ snprintf(cmd, sizeof(cmd), "%s %s", cmd_grub, dest->disk2->path);
+ r = system_chroot(DESTINATION_MOUNT_PATH, cmd);
+ } else {
+ snprintf(cmd, sizeof(cmd), "%s %s", cmd_grub, dest->path);
+ r = system_chroot(DESTINATION_MOUNT_PATH, cmd);
+ }
+
+ return r;
+}