svn commit: r271537 - in user/nwhitehorn/bsdinstall_zfspartedit: partedit scripts
Nathan Whitehorn
nwhitehorn at FreeBSD.org
Sat Sep 13 17:58:35 UTC 2014
Author: nwhitehorn
Date: Sat Sep 13 17:58:34 2014
New Revision: 271537
URL: http://svnweb.freebsd.org/changeset/base/271537
Log:
Set up boot blocks, ZFS caches, and loader.conf correctly for ZFS systems.
This makes the code feature complete and able to set up both UFS and ZFS
systems.
Modified:
user/nwhitehorn/bsdinstall_zfspartedit/partedit/gpart_ops.c
user/nwhitehorn/bsdinstall_zfspartedit/scripts/config
user/nwhitehorn/bsdinstall_zfspartedit/scripts/zfsboot
Modified: user/nwhitehorn/bsdinstall_zfspartedit/partedit/gpart_ops.c
==============================================================================
--- user/nwhitehorn/bsdinstall_zfspartedit/partedit/gpart_ops.c Sat Sep 13 17:48:44 2014 (r271536)
+++ user/nwhitehorn/bsdinstall_zfspartedit/partedit/gpart_ops.c Sat Sep 13 17:58:34 2014 (r271537)
@@ -27,6 +27,7 @@
*/
#include <sys/param.h>
+#include <sys/stat.h>
#include <errno.h>
#include <libutil.h>
#include <inttypes.h>
@@ -144,8 +145,16 @@ newfs_command(const char *fstype, char *
return;
}
- strcpy(command, "zpool create -f -o cachefile=none"
- " -m none -R /mnt ");
+ strcpy(command, "zpool create -f -m none ");
+ if (getenv("BSDINSTALL_TMPBOOT") != NULL) {
+ char zfsboot_path[MAXPATHLEN];
+ sprintf(zfsboot_path, "%s/zfs",
+ getenv("BSDINSTALL_TMPBOOT"));
+ mkdir(zfsboot_path, S_IRWXU | S_IRGRP | S_IXGRP |
+ S_IROTH | S_IXOTH);
+ sprintf(command, "%s -o cachefile=%s/zpool.cache ",
+ command, zfsboot_path);
+ }
for (i = 0; i < (int)(sizeof(items)/sizeof(items[0])); i++) {
if (items[i].state == 0)
continue;
@@ -618,9 +627,10 @@ set_default_part_metadata(const char *na
if (newfs != NULL && newfs[0] != '\0') {
md->newfs = malloc(strlen(newfs) + strlen(" /dev/") +
- strlen(mountpoint) + 1 + strlen(name) + 1);
+ strlen(mountpoint) + 5 + strlen(name) + 1);
if (strcmp("freebsd-zfs", type) == 0) {
- zpool_name = strdup(&mountpoint[1]);
+ zpool_name = strdup((strlen(mountpoint) == 1) ?
+ "root" : &mountpoint[1]);
for (i = 0; zpool_name[i] != 0; i++)
if (!isalnum(zpool_name[i]))
zpool_name[i] = '_';
@@ -681,6 +691,10 @@ set_default_part_metadata(const char *na
md->fstab->fs_type = strdup(FSTAB_SW);
md->fstab->fs_freq = 0;
md->fstab->fs_passno = 0;
+ } else if (strcmp(type, "freebsd-zfs") == 0) {
+ md->fstab->fs_type = strdup(FSTAB_RW);
+ md->fstab->fs_freq = 0;
+ md->fstab->fs_passno = 0;
} else {
md->fstab->fs_type = strdup(FSTAB_RW);
if (strcmp(mountpoint, "/") == 0) {
@@ -1251,12 +1265,22 @@ gpart_commit(struct gmesh *mesh)
struct gctl_req *r;
const char *errstr;
const char *modified;
+ const char *rootfs;
LIST_FOREACH(classp, &mesh->lg_class, lg_class) {
if (strcmp(classp->lg_name, "PART") == 0)
break;
}
+ /* Figure out what filesystem / uses */
+ rootfs = "ufs"; /* Assume ufs if nothing else present */
+ TAILQ_FOREACH(md, &part_metadata, metadata) {
+ if (md->fstab != NULL && strcmp(md->fstab->fs_file, "/") == 0) {
+ rootfs = md->fstab->fs_vfstype;
+ break;
+ }
+ }
+
if (strcmp(classp->lg_name, "PART") != 0) {
dialog_msgbox("Error", "gpart not found!", 0, 0, TRUE);
return;
@@ -1296,7 +1320,7 @@ gpart_commit(struct gmesh *mesh)
break;
if (cp == NULL) /* No sub-partitions */
- gpart_partcode(pp, md->fstab->fs_vfstype);
+ gpart_partcode(pp, rootfs);
}
r = gctl_get_handle();
Modified: user/nwhitehorn/bsdinstall_zfspartedit/scripts/config
==============================================================================
--- user/nwhitehorn/bsdinstall_zfspartedit/scripts/config Sat Sep 13 17:48:44 2014 (r271536)
+++ user/nwhitehorn/bsdinstall_zfspartedit/scripts/config Sat Sep 13 17:58:34 2014 (r271537)
@@ -36,6 +36,7 @@ cp $BSDINSTALL_TMPETC/* $BSDINSTALL_CHRO
cat $BSDINSTALL_TMPBOOT/loader.conf.* >> $BSDINSTALL_TMPBOOT/loader.conf
rm $BSDINSTALL_TMPBOOT/loader.conf.*
+df -t zfs $BSDINSTALL_CHROOT > /dev/null && echo "zfs_load=\"YES\"" >> $BSDINSTALL_TMPBOOT/loader.conf
cp $BSDINSTALL_TMPBOOT/* $BSDINSTALL_CHROOT/boot
Modified: user/nwhitehorn/bsdinstall_zfspartedit/scripts/zfsboot
==============================================================================
--- user/nwhitehorn/bsdinstall_zfspartedit/scripts/zfsboot Sat Sep 13 17:48:44 2014 (r271536)
+++ user/nwhitehorn/bsdinstall_zfspartedit/scripts/zfsboot Sat Sep 13 17:58:34 2014 (r271537)
@@ -1272,8 +1272,6 @@ zfs_create_boot()
"$funcname"
f_eval_catch $funcname echo "$ECHO_APPEND" 'zfs_enable=\"YES\"' \
$BSDINSTALL_TMPETC/rc.conf.zfs || return $FAILURE
- f_eval_catch $funcname echo "$ECHO_APPEND" 'zfs_load=\"YES\"' \
- $BSDINSTALL_TMPBOOT/loader.conf.zfs || return $FAILURE
f_eval_catch $funcname echo "$ECHO_APPEND" \
'kern.geom.label.disk_ident.enable=\"0\"' \
$BSDINSTALL_TMPBOOT/loader.conf.zfs || return $FAILURE
More information about the svn-src-user
mailing list