162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-only
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * init/noinitramfs.c
462306a36Sopenharmony_ci *
562306a36Sopenharmony_ci * Copyright (C) 2006, NXP Semiconductors, All Rights Reserved
662306a36Sopenharmony_ci * Author: Jean-Paul Saman <jean-paul.saman@nxp.com>
762306a36Sopenharmony_ci */
862306a36Sopenharmony_ci#include <linux/init.h>
962306a36Sopenharmony_ci#include <linux/stat.h>
1062306a36Sopenharmony_ci#include <linux/kdev_t.h>
1162306a36Sopenharmony_ci#include <linux/syscalls.h>
1262306a36Sopenharmony_ci#include <linux/init_syscalls.h>
1362306a36Sopenharmony_ci#include <linux/umh.h>
1462306a36Sopenharmony_ci
1562306a36Sopenharmony_ci/*
1662306a36Sopenharmony_ci * Create a simple rootfs that is similar to the default initramfs
1762306a36Sopenharmony_ci */
1862306a36Sopenharmony_cistatic int __init default_rootfs(void)
1962306a36Sopenharmony_ci{
2062306a36Sopenharmony_ci	int err;
2162306a36Sopenharmony_ci
2262306a36Sopenharmony_ci	usermodehelper_enable();
2362306a36Sopenharmony_ci	err = init_mkdir("/dev", 0755);
2462306a36Sopenharmony_ci	if (err < 0)
2562306a36Sopenharmony_ci		goto out;
2662306a36Sopenharmony_ci
2762306a36Sopenharmony_ci	err = init_mknod("/dev/console", S_IFCHR | S_IRUSR | S_IWUSR,
2862306a36Sopenharmony_ci			new_encode_dev(MKDEV(5, 1)));
2962306a36Sopenharmony_ci	if (err < 0)
3062306a36Sopenharmony_ci		goto out;
3162306a36Sopenharmony_ci
3262306a36Sopenharmony_ci	err = init_mkdir("/root", 0700);
3362306a36Sopenharmony_ci	if (err < 0)
3462306a36Sopenharmony_ci		goto out;
3562306a36Sopenharmony_ci
3662306a36Sopenharmony_ci	return 0;
3762306a36Sopenharmony_ci
3862306a36Sopenharmony_ciout:
3962306a36Sopenharmony_ci	printk(KERN_WARNING "Failed to create a rootfs\n");
4062306a36Sopenharmony_ci	return err;
4162306a36Sopenharmony_ci}
4262306a36Sopenharmony_cirootfs_initcall(default_rootfs);
43