initramdisk.java

来自「纯java操作系统jnode,安装简单和操作简单的个人使用的Java操作系统」· Java 代码 · 共 90 行

JAVA
90
字号
/*
 * $Id: InitRamdisk.java,v 1.4 2004/02/24 08:03:26 epr Exp $
 */
package org.jnode.fs.initrd;

import javax.naming.NameNotFoundException;

import org.apache.log4j.Logger;
import org.jnode.driver.DeviceAlreadyRegisteredException;
import org.jnode.driver.DeviceManager;
import org.jnode.driver.DeviceStarter;
import org.jnode.driver.DeviceUtils;
import org.jnode.driver.DriverException;
import org.jnode.driver.block.ramdisk.RamDiskDevice;
import org.jnode.driver.block.ramdisk.RamDiskDriver;
import org.jnode.fs.FileSystemException;
import org.jnode.fs.FileSystemType;
import org.jnode.fs.fat.Fat;
import org.jnode.fs.fat.FatFileSystemType;
import org.jnode.fs.service.FileSystemService;
import org.jnode.naming.InitialNaming;
import org.jnode.plugin.Plugin;
import org.jnode.plugin.PluginDescriptor;
import org.jnode.plugin.PluginException;
import org.jnode.util.TimeoutException;

/**
 * Dummy plugin that just mount an initial ramdisk on /Jnode
 * 
 * @author gbin
 */
public class InitRamdisk extends Plugin {

    private static final Logger log = Logger.getLogger(InitRamdisk.class);

    /**
     * Create a new instance
     *  
     */
    public InitRamdisk(PluginDescriptor descriptor) {
        super(descriptor);
    }

    /**
     * @see org.jnode.plugin.Plugin#startPlugin()
     */
    protected void startPlugin() throws PluginException {
        try {
            log.info("Create initrd ramdisk on /jnode");
            final DeviceManager dm = DeviceUtils.getDeviceManager();
            final RamDiskDevice dev = new RamDiskDevice(null, "dummy", 100000);
            dev.setDriver(new RamDiskDriver("jnode"));
            dm.register(dev);

            log.info("Format initrd ramdisk");

            FileSystemService fileSystemService = (FileSystemService) InitialNaming
                    .lookup(FileSystemService.NAME);
            FileSystemType type = fileSystemService
                    .getFileSystemTypeForNameSystemTypes(FatFileSystemType.NAME);
            type.format(dev, new Integer(Fat.FAT16));

            // restart the device
            log.info("Restart initrd ramdisk");
            dev.stop();
            new DeviceStarter(dev).start(dm.getDefaultStartTimeout());

            log.info("/jnode ready.");
        } catch (NameNotFoundException e) {
            throw new PluginException(e);
        } catch (DriverException e) {
            throw new PluginException(e);
        } catch (DeviceAlreadyRegisteredException e) {
            throw new PluginException(e);
        } catch (FileSystemException e) {
            throw new PluginException(e);
        } catch (TimeoutException ex) {
            throw new PluginException(ex);
        }

    }

    /**
     * @see org.jnode.plugin.Plugin#stopPlugin()
     */
    protected void stopPlugin() {
        // do nothing for the moment
    }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?