---
name: "setup"
section: "2"
platform: "linux"
package: "man-pages"
version: "6.19-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/setup/2"
---

# setup(2)

setup devices and filesystems, mount root filesystem

## NAME

setup - setup devices and filesystems, mount root filesystem

## LIBRARY

Standard C library (*libc*, *-lc*)

## SYNOPSIS

```
#include <unistd.h>
```

**\[\[deprecated\]\] int setup(void);**

## DESCRIPTION

**setup**() is called once from within *linux/init/main.c*. It calls initialization functions for devices and filesystems configured into the kernel and then mounts the root filesystem.

No user process may call **setup**(). Any user process, even a process with superuser permission, will receive **EPERM**.

## RETURN VALUE

**setup**() always returns -1 for a user process.

## ERRORS

- **EPERM**

  Always, for a user process.

## STANDARDS

Linux.

## VERSIONS

Removed in Linux 2.1.121.

The calling sequence varied: at some times **setup**() has had a single argument *void \*BIOS* and at other times a single argument *int magic*.
