Sungjin's sub-brain :
Admin : New post
Guestbook
Local
Catergories
Recent Articles
Recent Comments
Calendar
Tag
Archive
Link
Search
 
해당되는 게시물 46건
  debian에서 portmap nfsd 재시작 
작성일시 : 2007. 9. 15. 10:50 | 분류 : 컴퓨터/LINUX

/etc/rc2.d/S20nfs-kernel-server restart
/etc/rc2.d/S18portmap restart

|
  ARM Versatile emulation baseboard 에 PICO Express 결과물 올리기 #10 
작성일시 : 2007. 9. 14. 17:59 | 분류 : 컴퓨터/PICO Express

*EB에서 NFS를 mount하기 위한 debian 서버 설정
debian 설치 - business card
aptitude를 통해
nfs-kernel-server 설치
서버가 설치되어 있는 환경이 firewall 뒤라면 rpc를 위한 111번 포트, nfsd를 위한 2049 포트를 오픈한다
/etc/hosts.allow, /etc/hosts.deny 설정 확인
/etc/exports 설정
->
/filesystem/MPfs-full (rw,no_root_squash)
이것으로 nfs설치 완료

|
  ARM Versatile emulation baseboard 에 PICO Express 결과물 올리기 #9 
작성일시 : 2007. 9. 14. 17:53 | 분류 : 컴퓨터/PICO Express

현재설정
RealView_EB # printenv
bootdelay=2
baudrate=38400
ethaddr=00:02:F7:00:21:52
bootcmd=cp 0x40100000 0x7fc0 0x100000 ; bootm
ipaddr=192.168.0.18
bootargs=root=/dev/mtdblock0 mtdparts=armflash.0:22688k@0x340000(cramfs) ip=192.168.0.2:off mem=128M console=ttyAMA0
stdin=serial
stdout=serial
stderr=serial
verify=n

Environment size:

nfs쓸때
setenv bootargs root=/dev/nfs mem=128M netdev=27,0,0xfc800000,0xfc800010,eth0 ip=192.168.0.2:192.168.0.2 nfsroot=192.168.0.193:/filesystem/MPfs-full,rsize=1024,wsize=1024 console=ttyAMA0 cachepolicy=writealloc
cramfs쓸때
setenv bootargs root=/dev/mtdblock0 mtdparts=armflash.0:22688k@0x340000(cramfs) ip=192.168.0.2:off mem=128M console=ttyAMA0


----------

최종적으로 Emulation Board Rev D에서 MPfs-full이 돌아가는 환경

그동안에 kernel panic sync init= 블라 블라 문제가 발생 했던 것은 간단히 말해 nfs가 제대로

설정되지 않았기 떄문이다. 부팅메시지에는 nfs가 제대로 mount 되었다고 나온다고 해도 실제로는

아니었다.

|
  [debian] aptitude mirror 바꾸기 
작성일시 : 2007. 9. 14. 15:39 | 분류 : 컴퓨터/LINUX

/etc/apt/sources.list 수정

|
  CYGWIN에서 tftpd 돌리기 
작성일시 : 2007. 9. 11. 16:45 | 분류 : 컴퓨터/LINUX

https://linuxlink.timesys.com/docs/windows_tftp


Configuring a TFTP Server for Windows

On Windows systems, the TFTP daemon is controlled by the Extended Internet Services Daemon (xinetd). To configure the TFTP daemon, use the following general procedure:

  1. Create the file /etc/xinetd.d/tftp.
  2. Optionally, disable unnecessary xinetd services.
  3. Add xinetd as a Windows service and restart it, as described in Restarting Required Services on Windows.

All of these files are located in the directory where you have Cygwin installed.

Note

If you use a Windows-provided editor to create text files, they might contain DOS-style line breaks. Use the dos2unix utility in Cygwin to convert the files for use in a UNIX-style system. Issue the command dos2unix --help for details about this utility.

Creating the TFTP Server File

Create the file /etc/xinetd.d/tftp with the contents shown in the following listing:

# default: off
# description: The tftp server serves files using the
# trivial file transfer protocol.  The tftp protocol
# is often used to boot diskless workstations, download
# configuration files to network-aware printers, and
# to start the installation process for some
# operating systems.
 
service tftp
{
     disable       = no
     socket_type   = dgram
     protocol      = udp
     wait          = yes
     user          = SYSTEM
     server        = /usr/sbin/in.tftpd
     server_args   = /tftpboot
     per_source    = 11
     cps           = 100 2
     flags         = IPv4
}

Note

The files in the xinetd.d directory must have read/write permissions set for all users. Generally the touch command is sufficient; however, this depends on how your host machine is configured. If necessary, use the chmod command to change permissions, as in the following example:

$ chmod a+rw /etc/xinetd.d/* 

Disabling Unnecessary xinetd Services

To avoid conflicts and possible security risks, you can disable all services of the xinetd daemon except for TFTP. This step is optional.

To disable unnecessary services, edit the xinetd configuration file, /etc/xinetd.conf, to add the enabled line as shown in the following example:

 # Simple configuration file for xinetd
 # Some defaults, and include /etc/xinetd.d/
 
 defaults
 {
     instances        = 60
     log_type         = FILE /var/log/servicelog
     log_on_success   = HOST PID
     log_on_failure   = HOST
     cps              = 25 30
     enabled          = tftp
 }
 includedir /etc/xinetd.d

The enabled line disables all services except those that are specified. If this line is not used, all services are enabled by default.

|
  CYGWIN 에서 nfs 서버 돌리기 
작성일시 : 2007. 9. 10. 15:57 | 분류 : 컴퓨터/LINUX

1. cygwin 설치
추가패키지
-vim
-nfs-server
-sunrpc
-cygrunsrv

2. 설치가 완료된 후  /etc/exports 수정
/filesystem (rw,all_squash) 라인 추가

3.윈도우에서 cygwin portmap 재시작

4.완성>_<

참조 : http://www.csparks.com/CygwinNFS/index.xhtml

-------------------------------------------------------

Cygwin NFS Server HOWTO

Version 1.9, June 23, 2006
Hugh Sparks

This document shows how to install a minimal Cygwin enviroment to host an NFS server. I wrote this up to help windows users who are not familiar with Linux conventions so the fussy details are all presented.

If you're using Windows XP, be sure to check out the last sections on firewall and network device problems before you try testing your configuration.

Please read the official documentation first

Things often change in the Cygwin project and I only maintain this page when I update my own Cygwin and find the nfs server broken. You really must read the official nfs-server documentation and attempt to follow those directions because they take precidence over anything you read on this site. After installing Cygwin and the nfs-server (see below) you will find the documentation here:

	/usr/share/doc/Cygwin/nfs-server-x.y.z.README 

Please don't bother the cywin mailing lists or nfs-server maintainers until you have tried to follow the instructions in the offical README.

If you find discrepancies between the README documentation and this HOWTO, I will very much appreciate an email from you. Please include the version of Cygwin and nfs-server you have installed.

Installing Cygwin

You need a directory for the Cygwin installation. It seems to be lucky for this program to be at the top level of your C drive. If you feel adventurous, try putting it somewhere else, otherwise, create this directory:

	c:\Cygwin 

You will also need a place to archive the Cygwin packages. This should be where you keep other installers. For this example, we create the directory:

	e:\CygwinInstaller 

Enter this string in your browser's address bar:

	http://www.cygwin.com/setup.exe 

Download the installer (setup.exe) to:

	e:\CygwinInstaller 

Now run the setup.exe program. Press Next on the splash window and select

	Install from Internet 

Press Next.
Your root directory should be:

	c:\Cygwin 

Select: "Install For: All Users"
Select: "Default Text File Type: Unix"
Press Next.
Specify your local package directory: (for example)

	e:\CygwinInstaller 

Press Next. Select: "Direct Connection" Press Next.

Choosing a mirror is tricky. You want to find a fast one. I've had good luck with:

	http://cygwin.get-software.com 

Press Next.
If you have chosen wisely, a list of packages will rapidly appear in the setup window.

Installing extra packages

Several packages are needed beyond the default installation. If you've been messing around, press the "View" button repeatedly to cycle through to the "Category" view.

Adding vim:
Click on the + sign next to the Editors category. Scroll down to find the "vim" item and click on the word "Skip." Each time you click in this area, the text will change, scrolling through the available versions of the package. Often, it is a good idea to select the most recent version of the package. For example, "6.2-3". The box in the "Bin?" column should be checked automatically.

Adding nfs-server:
Click on the + sign next to the Net category. Scroll down to find the nfs-server item and click on the word "Skip" so it becomes "Install." Select a recent version of the package. Note: The nfs-server is fairly new, so if you don't see it in the Net category, back out and try a different Cygwin server.

Adding sunrpc:
This component is found in the Libs category. Scroll down to find the sunrpc item and click on the word "Skip" until it becomes "Install." Select a recent version of the package.

Adding cygrunsrv:
This utility lets you configure the nfs server as a Windows system service. Click on the + sign next to the Admin category. Scroll down to find the cygrunsrv item and click on the word "Skip". Select a recent version of the package.

Press Next.
All your packages as well as any packages they require will be downloaded and installed.

Configuring the server

Run the configuration script

In the cygwin shell window, run:

	/usr/bin/nfs-server-config 

A number of warnings will appear about you installing cygwin for a single user, even though you didn't. You can ignore these complaints.

Editing the configuration files

You probably need to learn the "vi" editor so you can easily create or modify Cygwin configuration files without installing all of X-Windows to support a GUI editor. You will be annoyed if this is your first exposure to vi. Give in. Learn it. It Is Your Destiny.

Otherwise, use Notepad and find some way to convert from windows to unix text format. (Try the drag-n-drop programs uf2d and df2u.)

Host access control files

If you perform the installation of cygwin as described above, you will not need to edit /etc/hosts.allow or /etc/hosts.deny. If you have installed tcp-wrappers by accident or because you decided to install everything, you will need to edit them:

Edit:

	/etc/hosts.allow 

To enable access by just one host:

	nfsd: 148.150.62.152 

To enable an entire subnet:

	nfsd: 148.150.0.0/255.255.0.0 

Edit

	/etc/hosts.deny

Comment out any lines that appear in this file. It will be empty unless you have chosen to install other Cygwin network packages.

The hosts.allow and hosts.deny files support more complex authorization schemes. See "man hosts_acccess" and "man hosts_options" if you need more precise control.

Export directories

Edit:

	/etc/exports 

This is where you export local directories.

This example exports the /pub directory to everyone in the 148.150.62 subnet.

	/pub 148.150.62.0/255.255.255.0(ro, no_root_squash) 

The option "ro" means read-only. Use "rw" for read-write.

You cannot use the wildcard "*" in host numbers:

	No:  148.150.62.* 

You can use the wild card in host names:

	Yes: *.mts.com 

To use ip names, the name must be a real DNS name or it must in your /etc/hosts file.

Note: The Cygwin hosts file: /etc/hosts is actually a shortcut to your windows hosts file at:

	c:\winnt\system32\drivers\etc\hosts 

For some reason, nfs mounts are MUCH faster if you don't authorize entire subnets. It is better to list specific hosts.

Per-user authorization

If the user and group numbers on the client machine match those of an authorized user on the server, access is allowed based on the privilages granted to the user on the server.

Note: You can only have users & permissions in Cygwin if you are using NTFS in windows. If you have FAT32, you must connect as root from the remote system.

The root account is special. Access is never allowed to remote root users unless the "no_root_squash" option is used (as shown in the example above.)

The easy way is to access the server from a client running as root and use the no_root_squash option.

Starting the server

Run:

	Start Menu/Programs/Administrative Tools/Services 

	Someone reported that with the Windows XP "Fisher Price"
	configuration, the Services menu has this path:

	Start Menu/Control Panel/Administrative Tools/Services 

There are three services associated with NFS:

	Cygwin mountd
	Cygwin nfsd
	Cygwin portmap 

Right-click on each of these and use the pop-up menu to start all three servers. You will find that portmap starts automatically when you start either nfsd or mountd first. There is a dependency between system services that Windows tries to maintain automatically.

After editing any of the configuration files the /etc directory, you must restart these services. Because mountd and nfsd are configured to depend on portmap, it is sufficent to right-click on portmap and select "restart." A dialog will appear to confirm that you also want to restart mountd and nfsd.

Mounting an nfs share on the client machine

The client machine in the following example is assumed to be a Linux or other Unix system. If you have a nice free NFS client for Windows, I'd like to hear about it so I can add a link on this page.

For this example, we assume that the NFS server running on your Windows machine has an ip name "remote" and an exported directory "/pub" defined under /etc/exports as shown above.

The name "remote" only has to be defined on the Linux/Unix client. You can define the name in /etc/hosts or just use the ip number of your Windows server in the following example.

Log into your client machine. You probably need to be "root" to mount the remote nfs directory.

Create a local directory:

	mkdir /mnt/there 

Mount the share:

	mount -t nfs remote:/pub /mnt/there 

You should now be able to poke around in /mnt/there, and see any files located in the "/pub" directory on the Cygwin/Windows side.

Important update: A reader of this HOWTO has discovered that CygwinNFS does not support NFS version 3, which is now the default in Linux. To overcome this problem you must add an option to the mount command line: "-overs=2" The full command line becomes:

	mount -t nfs -o nfsvers=2 remote:/pub /mnt/there 

An alternative specification using "vers" also works on Linux and other Unix-like systems:

	mount -t nfs -o vers=2 remote:/pub /mnt/there 

(Thanks to Mr. Ostrozhansky!)

Exporting other Windows directories

If you run "mount" with no parameters in the cygwin shell, you will see a list of mounted directories.

The Windows root directories, c:\, d:\ etc will also appear in this list. They are accessed through the special path names /cygdrive/c, /cygdrive/d etc. If you visit the root "/" of cygwin, you will find that these mount points don't actually exist. If you try to list them in the nfs /etc/exports file, they will fail to mount on the client system.

This is probably a bug, but there is a simple work-around:

Create a directory for each Windows volume you want to export and then mount them directly to the windows pathname:

Make directories to use as mount points:

	mkdir -p /mnt/c
	mkdir -p /mnt/d 

Mount the windows directories:

	mount c:/ /mnt/c
	mount d:/ /mnt/d 

Now you can export these directories in /etc/exports:

	/mnt/c myClient.com(rw, no_root_squash)
	/mnt/d myClient.com(rw, no_root_squash) 

Don't forget to restart the portmap service in Windows.

You may be worried about what happens to your mounts when you reboot windows: They are stored in the registry, rather than /etc/fstab. After a reboot, they are restored and they will be available to remote systems via NFS.

In fact, if you reboot windows when an nfs mount was created on a remote client, the mounted files will still be available after windows reboots.

Uninstalling Cygwin

Stop the services:

	cygrunsrv --stop mountd
	cygrunsrv --stop nfsd
	cygrunsrv --stop portmap 

Remove the services:

	cygrunsrv --remove mountd
	cygrunsrv --remove nfsd
	cygrunsrv --remove portmap 

If you use Cygwin to run other services such as X-Windows, you should stop these processes now.

Exit the shell and run the Cygwin setup.exe Use the "View" button repeatedly to cycle to the "Category" view, then click on the "Default" text next to category "All" to cycle through until you see Uninstall.

Press Next-> to remove everthing.

Cygwin is one of those programs that doesn't really like to be uninstalled. To finish the job, delete everything in your c:\cygwin directory. You may find that you need to stop residual cygwin processes with the Task Damager before you can delete everthing in the Cygwin folder. Reboot if necessary.

Next, run Regedit and search for cygwin. Delete all the keys you find and any surrounding "Cygnus Solutions" folders.

Windows XP Issues

Many people report trouble running the NFS server under Windows XP. Since service pack 2, XP has a firewall which will block NFS connections by default.

An additional difficulty occurs because the nfs system services won't start when certain network devices are enabled but disconnected.

Dealing with the firewall

You need to enable selected ports and programs to bypass Windows Firewall. The following windows show the required changes:


Firewall nfs tcp settings


Firewall nfs udp settings


Firewall portmap TCP settings


Firewall portmap UDP settings


Firewall mountd settings

On each of the configuration windows shown above, there is a Change scope button. This brings up a window where you can restrict the action of opening the firewall to your local LAN. If you don't plan to operate NFS over the internet, this is a very good idea:


Firewall scope settings

Dealing with conflicting network devices

The symptom this problem creates is that nfsd and mountd won't start. It appears that these services refuse to start if any network device is enabled but currently disconnected.

If you have a wireless lan card, bluetooth device or other network devices that are only occasionally connected, you will probably encounter problems running the nfs-server.

Here's a quick way to find out which network devices are blocking NFS: Bring up the System Services panel and locate the Cygwin portmap service. You can right-click on this item to bring up a menu that will allow you to restart the portmap. Because nfsd and mountd depend on portmap, they will offer to restart as well.


System services

You can also right-click on devices displayed in the Device Manager panel. A menu pops up that will let you disable the selected device.

Go through the list and disable all the network devices except for the ones associated with your currently active connection(s). Then try restarting the portmap and see if nfsd and mountd start correctly. In every case I've seen or heard about, this strategy works.

The following Device Manager list shows the devices (with the red X) I needed to disable. When I need to use one of these devices, I can re-enable them and nfs continues to operate. (As long as it starts first.)


Disable offending network devices

Complaints and Suggestions

Let me know...

|
  ARM Versatile emulation baseboard 에 PICO Express 결과물 올리기 #8 
작성일시 : 2007. 9. 7. 12:20 | 분류 : 컴퓨터/PICO Express

지금까지 작업하던 rev D 보드를 돌려주고 revC를 받아옴.
현재 설정이 tftp를 통해 이미지를 받아오게 되어있으므로 변경이 필요함.

현재의 설정
-----------
RealView_EB # printenv
baudrate=38400
bootfile="/tftpboot/uImage"
runlinux=bootm 0x40300000
bootdelay=1
bootargs=root=/dev/nfs mem=128M netdev=27,0,0xfc800000,0xfc800010,eth0 ip=192.16
8.1.244:192.168.1.244 nfsroot=192.168.1.123:/nfs,rsize=1024,wsize=1024 console=t
tyAMA0 cachepolicy=writealloc
serverip=192.168.1.123
ipaddr=192.168.1.244
bootcmd=tftpboot 0x7fc0 uImage ; bootm
stdin=serial
stdout=serial
stderr=serial
verify=n

Flash> list image                
Flash Area Base 0x40000000                         

Address     Name               
-------     ----               
0x40000000  boot_monitor                       
0x40040000  mpuboot                  
0x40080000  SYSTEM.DAT                     
0x40100000  u-boot
0x40200000  mplinux
0x40400000  basecramfs

바꿀 설정
setenv bootargs root=/dev/mtdblock0 mtdparts=armflash.0:7888k@0x400000(cramfs) ip=127.0.0.1:off mem=128M console=ttyAMA0 console=tty
setenv bootcmd cp 0x40200000 0x7fc0 0x100000\; bootm

|
  리눅스 환경에서 분할압축하기 
작성일시 : 2007. 9. 5. 17:41 | 분류 : 컴퓨터/LINUX

압축하기
tar czvf - /tmp/* | split -b 1m - test.tar.gz
->tar는 /tmp의 모든 파일을 압축하되 압축한 내용을 std로 보내고(-) split은 std의 데이터를 1메가 단위로 분할해 test.tar.gz란 이름을 prefix로 하는 파일을 만든다.

압축 풀기
cat test.tar.gz* | tar xzvf -
|
  ARM Versatile emulation baseboard 에 PICO Express 결과물 올리기 #7 
작성일시 : 2007. 9. 5. 15:17 | 분류 : 컴퓨터/PICO Express

드디어 돌아간다

실행 순서는 다음과 같다
1.board power on(boot monitor running, serial comm.)
2.run u-boot
>flash run uboot
3.set arguments
setenv bootargs root=/dev/mtdblock0 mtdparts=armflash.0:7888k@0x380000(cramfs) ip=127.0.0.1:off mem=128M console=ttyAMA0 console=tty
setenv bootcmd cp 0x40140000 0x7fc0 0x100000\; bootm
4.save arguments 후 reset & run u-boot
saveenv
5.자동으로 리눅스 실행이 안되면?
cp 0x40140000 0x7fc0 0x100000
bootm
으로 직접 실행

돌아간다!

주의점
1. setting arguments
setenv bootargs root=/dev/mtdblock0 mtdparts=armflash.0:7888k@0x380000(cramfs) ip=127.0.0.1:off mem=128M console=ttyAMA0 console=tty
->여기에서 7888k는 filesystem size, 0x380000은 baseaddress로 부터 cramfs의 offset
list image를 했을 때
> flash list image

Flash Area Base 0x40000000

Address     Name
-------     ----
0x40000000  Boot_Monitor
0x40030000  SYSTEM.DAT

Flash Area Base 0x40040000

Address     Name
-------     ----
0x40040000  NFU
0x40080000  demo
0x400C0000  MAXsim
0x40100000  uboot
0x40140000  uimage
0x40380000  cramfs

Flash Area Base 0x44000000

Address     Name
-------     ----

Flash Area Base 0x44040000

Address     Name
-------     ----

이렇게 나오기 떄문에 0x40380000-0x40040000을 한 값을 cramfs의 offset에 적어줬는데 이게 아니라 0x40380000-0x40000000을 해준 값을 적어줘야 했다. 이거떄문에 좀 삽질이 있었음;

console 두개를 적은 이유는 vga와 serial 모두로 출력을 뽑기위해서 이다.

>_<

|
  ARM Versatile emulation baseboard 에 PICO Express 결과물 올리기 #6 
작성일시 : 2007. 9. 5. 11:12 | 분류 : 컴퓨터/PICO Express

http://www.arm.com/support/faqdev/14409.html

How do I rebuild the Linux kernel for my ARM RealView development board?


Applies to: AB926EJ-S, Core Tiles, Emulation Baseboard (EB), PB926EJ-S, Versatile

Note: the examples below are using an Emulation Baseboard (EB) with a CT11MPCore. For other systems, the file names and paths will be slightly different but the procedures will be the same.

It should be pointed out that ARM does not support Linux. These instructions are provided in order to assist customers who are using our development boards and for some reason need to rebuild one of the kernel images posted on http://www.arm.com/linux/linux_download.html.

This FAQ assumes that you are building the kernel on an x86 Linux host. The file and path names here refer to the versions available at the time of writing. These will change in future releases - modify the command lines accordingly.


1. Downloading the required files

Ensure that there is at least 250Mb of storage space available on the computer where you intend to build the kernel - this will be required for building.

Download the following files from the ARM Linux Download page to a work directory on your build computer:

  • The latest patch (at the moment of writing, this is patch-2.6.17-arm1.gz)
  • The corresponding standard Linux kernel source from one of the mirrors listed on http://www.kernel.org/mirrors/ (in this case linux-2.6.17.tar.bz2)
  • The codesourcery toolchain from the ARM Linux Download page (currently sourceryg++-4.1-6-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.gz)
  • The pre-built U-Boot package (U-Boot-RealView-EB.tar.gz)
  • The pre-built Linux kernel image for your board (Image-RealView-EB-2.6.17-arm1.tar.gz)

2. Extracting the downloaded components

Extract the toolchain into the work directory and set up the CROSS_COMPILE environment variable:

$ mkdir codesourcery
$ tar -C codesourcery
-xzf sourceryg++-4.1-6-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.gz
$ export CROSS_COMPILE="$PWD/codesourcery/bin/arm-none-linux-gnueabi-"
Extract the pre-built U-Boot package and add the current directory (where the mkimage utility was extracted) to the PATH:
$ tar xzf U-Boot-RealView-EB.tar.gz
$ export PATH="$PATH:$PWD"
Extract and patch the kernel source and set up the ARCH environment variable:
$ tar xjf linux-2.6.17.tar.bz2
$ cd linux-2.6.17
$ gzip -cd ../patch-2.6.17-arm1.gz | patch -p1
$ cd ..
$ export ARCH=arm
Extract the pre-built Linux kernel image:
$ tar xzf Image-RealView-EB-2.6.17-arm1.tar.gz
 

3. Configuring and building the Linux kernel

It is highly recommended you start with an existing configuration file from one of the prebuilt kernel packages. Copy this into your Linux source tree, renaming it .config:
$ cp kernel/src/2.6.17/configs/config-2.6.17-arm1-realview-eb-mpcore
linux-2.6.17/.config
Import the configuration settings from the new .config:
$ cd linux-2.6.17
$ make oldconfig
Modify the configuration to suit your purposes using
  • For graphical configuration utility
    $ make xconfig
    
  • For text mode configuration utility
    $ make menuconfig
    
Remember to save your configuration before exiting.
Now build your kernel:
$ make uImage
After the build has completed, the resulting uImage will be located in the arch/arm/boot directory.
For information  about how to run the kernel on your development board, see "  ".

|
 Prev   1   2   3   4   5   Next